第六讲(part1)Bootloader技术分析.ppt

  1. 1、本文档共39页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Bootloader技术分析 嵌入式软件系统 嵌入式操作系统已经得到广泛应用 带操作系统的嵌入式软件体系一般分为: 引导加载程序 操作系统内核 文件系统(可选) 用户应用程序 PC 机的引导加载程序 BIOS+MBR BIOS的本质是一段固件程序(Firmware) MBR (master boot record主引导记录)是磁盘上的一段分区,位于磁盘的第一个扇区,大小为512B,包含了磁盘的分区信息以及系统引导代码,在单一的 MBR 中只能存储一个操作系统的引导记录,当需要多个操作系统时就会出现问题,需要更灵活的引导加载程序,比如Lilo和Grub 。 PC 机的引导加载程序 主引导记录本身要包含两类内容 —— 部分(或全部)引导加载程序以及分区表(其中包含有关于介质其余部分如何划分为分区的信息)。 当 BIOS 引导时,它会寻找硬盘驱动器第一个扇区(MBR)中存储的数据;BIOS 使用存储在 MBR 中的数据激活引导加载程序。 PC 机的引导加载程序 由于BIOS只能访问很少量的数据,所以大部分引导加载程序分两个阶段进行引导。在引导的第一个阶段中,BIOS引导一部分引导加载程序,即初始程序加载程序(initial program loader,IPL)。IPL 查询分区表,从而能够加载位于不同介质上任意位置的数据。通过这步操作来定位第二阶段引导加载程序(其中包含加载程序的其余部分)。 第二阶段引导加载程序是引导加载程序的主体,很多人认为这才是引导加载程序的真正部分。它包含有加载程序更需要磁盘空间的部分,比如用户界面和内核引导程序。从简单的命令行到绘声绘色的 GUI,这些用户界面的范围很广泛。 PC 机的引导加载程序 引导加载程序通常配置为两种方式之一:要么是作为主引导加载程序(primary boot loader),要么是作为二级引导加载程序(secondary boot loader)。主引导程序是安装在 MBR上的第一阶段引导加载程序(见先前的描述)。二级引导加载程序 是安装在可引导分区的第一阶段引导加载程序,必须在 MBR 上安装单独的引导加载程序,并配置它将控制权转交给二级引导加载程序。 很多Linux引导加载程序特别实用,因为它们提供了不同程度的交互,比如高级的 GUI 和加密的口令,以及通过选择操作系统进行引导的能力。这样,可以在具有多个物理磁盘的同一机器上共存多个操作系统,只使用一台机器就可同时拥有Linux和Windows。 PC 机的引导加载程序 GRUB 和 LILO 是在基于Intel的系统上引导Linux最常用的方法。作为操作系统装载程序,它们仅使用在计算机硬件中内建的基本 I/O 系统(或 BIOS)。 在多数基于 Intel 的计算机中,GRUB 和 LILO 要接受由 BIOS 所强加的限制。例如,多数 BIOSes 无法进入两个以上的硬盘,而且它们无法访问任一驱动器上在超越柱面 1023 以上所贮存的数据。值得注意的是,某些新的 BIOSes 没有这些限制。 PC 机的引导加载程序 所有 GRUB 和 LILO 需要在引导期间访问的数据 (包括 Linux 内核)位于 /boot 目录中。/boot 目录既可以是一个单独的小分区,也可能会驻留在根分区 (/)上。 在任一情况下,如果要使用 GRUB 或 LILO 来引导Linux系统, /boot 所驻留的分区一定要遵守以下条例: 1)在前两个IDE 驱动器上:如果有两个IDE(或 EIDE)驱动器, /boot 必须要位于其中之一, 两个驱动器的限制也包括任何在主IDE控制器上的IDE光盘驱动器。因此,如果在主控制器上有一个 IDE 硬盘,和一个光盘驱动器, /boot 必须仅能位于第一个硬盘,即便你在次IDE控制器上另有硬盘。 2)在第一个 IDE 或第一个 SCSI 驱动器上:如果你有一个 IDE(或 EIDE)驱动器以及一个或更多 SCSI 驱动器,/boot 必须位于IDE 驱动器上或 ID 为 0 的 SCSI 驱动器上。 3)在前两个 SCSI 驱动器上:如果你只有 SCSI 硬盘,/boot 必须位于 ID 为 0 或 1 的驱动器上。 4)分区完全在柱面 1023 之下:无论是以上哪一种配置,容有 /boot 的分区必须要全部位于柱面 1023 之下。如果容有 /boot 的分区位于柱面 1023 的两侧,所面对的情形可能是,GRUB 和 LILO 最初会起作用 (因为所有必需的信息都位于柱面 1023 之下), 但是如果一个新内核被载入后驻留在柱面 1023 之上的话,它们将会失败。 PC 机的Linux引导加载过程 启动过程 BIOS完成硬件检测、资源分配,然后将

文档评论(0)

tiangou + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档