热门标签 | 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

 


推荐阅读
  • 作为软件工程专业的学生,我深知课堂上教师讲解速度之快,很多时候需要课后自行消化和巩固。因此,撰写这篇Java Web开发入门教程,旨在帮助初学者更好地理解和掌握基础知识。通过详细记录学习过程,希望能为更多像我一样在基础方面还有待提升的学员提供有益的参考。 ... [详细]
  • PHP服务接口的专业测试方法与实践 ... [详细]
  • Squaretest:自动生成功能测试代码的高效插件
    本文将介绍一款名为Squaretest的高效插件,该工具能够自动生成功能测试代码。使用这款插件的主要原因是公司近期加强了代码质量的管控,对各项目进行了严格的单元测试评估。Squaretest不仅提高了测试代码的生成效率,还显著提升了代码的质量和可靠性。 ... [详细]
  • 技术日志:使用 Ruby 爬虫抓取拉勾网职位数据并生成词云分析报告
    技术日志:使用 Ruby 爬虫抓取拉勾网职位数据并生成词云分析报告 ... [详细]
  • 如何在Windows 7旗舰版中使用电脑进行高质量录音?
    如何在Windows 7旗舰版中使用电脑进行高质量录音? ... [详细]
  • 尽管我们尽最大努力,任何软件开发过程中都难免会出现缺陷。为了更有效地提升对支持部门的协助与支撑,本文探讨了多种策略和最佳实践,旨在通过改进沟通、增强培训和支持流程来减少这些缺陷的影响,并提高整体服务质量和客户满意度。 ... [详细]
  • 掌握这些技巧,轻松获取超过90%的资源信息
    在数字时代,高效获取所需资源是每个人必备的技能。本文将分享一系列实用技巧,帮助读者轻松获取超过90%的网络资源信息,无论是学术资料、技术文档还是最新资讯,都能迅速找到。通过优化搜索引擎使用、利用专业数据库和社群资源等方法,读者将能够在信息海洋中游刃有余。 ... [详细]
  • 2012年9月12日优酷土豆校园招聘笔试题目解析与备考指南
    2012年9月12日,优酷土豆校园招聘笔试题目解析与备考指南。在选择题部分,有一道题目涉及中国人的血型分布情况,具体为A型30%、B型20%、O型40%、AB型10%。若需确保在随机选取的样本中,至少有一人为B型血的概率不低于90%,则需要选取的最少人数是多少?该问题不仅考察了概率统计的基本知识,还要求考生具备一定的逻辑推理能力。 ... [详细]
  • 深入对话上海视九叶文鑫:HTML5技术引领智能电视新趋势
    深入对话上海视九叶文鑫:HTML5技术引领智能电视新趋势 ... [详细]
  • 2018年9月21日,Destoon官方发布了安全更新,修复了一个由用户“索马里的海贼”报告的前端GETShell漏洞。该漏洞存在于20180827版本的某CMS中,攻击者可以通过构造特定的HTTP请求,利用该漏洞在服务器上执行任意代码,从而获得对系统的控制权。此次更新建议所有用户尽快升级至最新版本,以确保系统的安全性。 ... [详细]
  • 七款高效编辑器与笔记工具推荐:KindEditor自动换行功能解析
    本文推荐了七款高效的编辑器与笔记工具,并详细解析了KindEditor的自动换行功能。其中,轻笔记QingBiJi是一款完全免费的记事本软件,用户可以通过其简洁的界面和强大的功能轻松记录和管理日常事务。此外,该软件还支持多平台同步,确保用户在不同设备间无缝切换。 ... [详细]
  • 第二章:Kafka基础入门与核心概念解析
    本章节主要介绍了Kafka的基本概念及其核心特性。Kafka是一种分布式消息发布和订阅系统,以其卓越的性能和高吞吐量而著称。最初,Kafka被设计用于LinkedIn的活动流和运营数据处理,旨在高效地管理和传输大规模的数据流。这些数据主要包括用户活动记录、系统日志和其他实时信息。通过深入解析Kafka的设计原理和应用场景,读者将能够更好地理解其在现代大数据架构中的重要地位。 ... [详细]
  • 本文深入探讨了 Git 与 SVN 的高效使用技巧,旨在帮助开发者轻松应对版本控制中的各种挑战。通过详细解析两种工具的核心功能与最佳实践,读者将能够更好地掌握版本管理的精髓,提高开发效率。 ... [详细]
  • 如何在PHP中正确配置错误显示功能
    在PHP中正确配置错误显示功能的方法如下:首先,定位并打开“php.ini”配置文件;接着,将“display_errors”参数设置为“On”;最后,在PHP代码文件的顶部添加 `ini_set('display_errors', '1');` 以确保错误信息能够被正确显示。此外,建议在开发环境中启用此功能,而在生产环境中禁用,以避免敏感信息泄露。 ... [详细]
  • 深入探讨 JavaScript 中 async/await 的常见问题及解决方案 ... [详细]
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社区 版权所有