热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

用u盘建立引导盘想法。

用软盘引导操作系统貌似比较老,现在已经没有软盘了,作为实机实验操作系统,应该用U盘比较稳妥。话说软盘格式为FAT12,而U盘的主流分区大多分为FAT32。所以二话不说就应该研究FAT32,

用软盘引导操作系统貌似比较老,现在已经没有软盘了,作为实机实验操作系统,应该用U盘比较稳妥。

话说软盘 格式为FAT12 ,而U盘的主流分区大多分为FAT32。

所以二话不说就应该研究FAT32,正好可以结合FAT12一同学习。

 

先回顾一下 详细的硬盘开机流程:

1、 BIOS加电自检(POST)
2、 将硬盘第一个扇区(0头0道1扇区,也就是Boot Sector)读入内存地址0000:7c00处;
3、 检查0000:7dfe是否等于0xaa55.(即Boot Sector 的最后一个字节)若不等于则转去尝试其他介质;  如果没有其他启动介质,则显示 ”No ROM BASIC” ,然后死机;

4、 跳转到0000:7c00处执行MBR中的程序;

5、 MBR先将自己复制到0000:0600处,然后继续执行;

6、 在主分区表中搜索标志为活动的分区.如果发现没有活动分区或者不止一个活动分区,则停止;

7、 将活动分区的第一个扇区读入内存地址0000:7c00处;

8、 检查0000:7dfe是否等于0xaa55,若不等于则显示 “Missing Operating System”,然后停止,或尝试其他介质启动;

9、 跳转到0000:7c00处继续执行特定系统的启动程序;

 

总结一下过程 就是 硬盘第0扇区为MBR,开机自动读这个扇区到7c00h处,然后根据分区表DPT,找到活动分区,将引导代码(DBR)再次放到7c00h,然后加载LOADER.

至于为什么要加载loader是因为引导扇区(DBR),只有512字节,根本不够放下 转入保护模式和加载内核的任务,所以DBR只负责加载loader,让loader负责转入保护模式 和加载内核。(这就是所谓的突破512字节限制)

简化一下过程:

 

   mbr ->DPT(检索活动分区)->DBR(加载活动分区的主引导记录)-> loader(loader)

  所以:我们需要编写1. 存放到MBR中的程序,2.存放到DBR中的程序,3.loader文件

  即我们需要做一个功能比较完整的bootloader.

现在我们的工作重心 在MBR和 DBR上 先看一下简图 硬盘分区

硬盘 结构 大致为  MBR ( 不必紧挨着) 分区1,分区2,分区3 --------

MBR  由446字节代码 和DPT分区表 和 0xaa55引导标志组成。

DPT分区表记录着分区的物理地址和长度,还有很重要的一项是否活动的标志.

在FAT32的引导扇区DBR不只一个扇区,所以首扇区是万分重要的,需要有 魔数0x55aa表示可以引导,而且在上文的描述中可知:

MBR程序干的工作是把这个扇区加载到内存0X7C00处,如果分区引导记录内容超过512字节,我们必须利用首扇区把超过512字节的内容加载到内存中.

 

为了简化制作流程

1.U盘只有一个分区

2.U盘首扇区是整个U盘分区的分区引导记录,即(我们的主引导记录就是整个分区的引导记录)

3.整个引导代码(可以超过512字节,但是必须自己加载到内存中)目的是将LOADER文件.加载到内存某某区域

过程就简化成

开机->硬件加载MBR->在FAT32文件系统下搜索LOADER

 


推荐阅读
  • 本文介绍了如何使用PHP向系统日历中添加事件的方法,通过使用PHP技术可以实现自动添加事件的功能,从而实现全局通知系统和迅速记录工具的自动化。同时还提到了系统exchange自带的日历具有同步感的特点,以及使用web技术实现自动添加事件的优势。 ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 一、Hadoop来历Hadoop的思想来源于Google在做搜索引擎的时候出现一个很大的问题就是这么多网页我如何才能以最快的速度来搜索到,由于这个问题Google发明 ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • 基于layUI的图片上传前预览功能的2种实现方式
    本文介绍了基于layUI的图片上传前预览功能的两种实现方式:一种是使用blob+FileReader,另一种是使用layUI自带的参数。通过选择文件后点击文件名,在页面中间弹窗内预览图片。其中,layUI自带的参数实现了图片预览功能。该功能依赖于layUI的上传模块,并使用了blob和FileReader来读取本地文件并获取图像的base64编码。点击文件名时会执行See()函数。摘要长度为169字。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • 本文讲述了如何通过代码在Android中更改Recycler视图项的背景颜色。通过在onBindViewHolder方法中设置条件判断,可以实现根据条件改变背景颜色的效果。同时,还介绍了如何修改底部边框颜色以及提供了RecyclerView Fragment layout.xml和项目布局文件的示例代码。 ... [详细]
  • Windows下配置PHP5.6的方法及注意事项
    本文介绍了在Windows系统下配置PHP5.6的步骤及注意事项,包括下载PHP5.6、解压并配置IIS、添加模块映射、测试等。同时提供了一些常见问题的解决方法,如下载缺失的msvcr110.dll文件等。通过本文的指导,读者可以轻松地在Windows系统下配置PHP5.6,并解决一些常见的配置问题。 ... [详细]
  • 本文介绍了C++中省略号类型和参数个数不确定函数参数的使用方法,并提供了一个范例。通过宏定义的方式,可以方便地处理不定参数的情况。文章中给出了具体的代码实现,并对代码进行了解释和说明。这对于需要处理不定参数的情况的程序员来说,是一个很有用的参考资料。 ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • 解决Cydia数据库错误:could not open file /var/lib/dpkg/status 的方法
    本文介绍了解决iOS系统中Cydia数据库错误的方法。通过使用苹果电脑上的Impactor工具和NewTerm软件,以及ifunbox工具和终端命令,可以解决该问题。具体步骤包括下载所需工具、连接手机到电脑、安装NewTerm、下载ifunbox并注册Dropbox账号、下载并解压lib.zip文件、将lib文件夹拖入Books文件夹中,并将lib文件夹拷贝到/var/目录下。以上方法适用于已经越狱且出现Cydia数据库错误的iPhone手机。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 本文介绍了一个程序,可以输出1000内能被3整除且个位数为6的所有整数。程序使用了循环和条件判断语句来筛选符合条件的整数,并将其输出。 ... [详细]
author-avatar
2cz2x
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有