欢迎来到天天文库
浏览记录
ID:38607821
大小:890.00 KB
页数:39页
时间:2019-06-16
《(part1)--Bootloader技术分析》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Bootloader技术分析嵌入式软件系统嵌入式操作系统已经得到广泛应用带操作系统的嵌入式软件体系一般分为:引导加载程序操作系统内核文件系统(可选)用户应用程序PC机的引导加载程序BIOS+MBRBIOS的本质是一段固件程序(Firmware)MBR(masterbootrecord主引导记录)是磁盘上的一段分区,位于磁盘的第一个扇区,大小为512B,包含了磁盘的分区信息以及系统引导代码,在单一的MBR中只能存储一个操作系统的引导记录,当需要多个操作系统时就会出现问题,需要更灵活的引导加载程序,比如L
2、ilo和Grub。PC机的引导加载程序主引导记录本身要包含两类内容——部分(或全部)引导加载程序以及分区表(其中包含有关于介质其余部分如何划分为分区的信息)。当BIOS引导时,它会寻找硬盘驱动器第一个扇区(MBR)中存储的数据;BIOS使用存储在MBR中的数据激活引导加载程序。PC机的引导加载程序由于BIOS只能访问很少量的数据,所以大部分引导加载程序分两个阶段进行引导。在引导的第一个阶段中,BIOS引导一部分引导加载程序,即初始程序加载程序(initialprogramloader,IPL)。IPL
3、查询分区表,从而能够加载位于不同介质上任意位置的数据。通过这步操作来定位第二阶段引导加载程序(其中包含加载程序的其余部分)。第二阶段引导加载程序是引导加载程序的主体,很多人认为这才是引导加载程序的真正部分。它包含有加载程序更需要磁盘空间的部分,比如用户界面和内核引导程序。从简单的命令行到绘声绘色的GUI,这些用户界面的范围很广泛。PC机的引导加载程序引导加载程序通常配置为两种方式之一:要么是作为主引导加载程序(primarybootloader),要么是作为二级引导加载程序(secondaryboot
4、loader)。主引导程序是安装在MBR上的第一阶段引导加载程序(见先前的描述)。二级引导加载程序是安装在可引导分区的第一阶段引导加载程序,必须在MBR上安装单独的引导加载程序,并配置它将控制权转交给二级引导加载程序。很多Linux引导加载程序特别实用,因为它们提供了不同程度的交互,比如高级的GUI和加密的口令,以及通过选择操作系统进行引导的能力。这样,可以在具有多个物理磁盘的同一机器上共存多个操作系统,只使用一台机器就可同时拥有Linux和Windows。PC机的引导加载程序GRUB和LILO是在基
5、于Intel的系统上引导Linux最常用的方法。作为操作系统装载程序,它们仅使用在计算机硬件中内建的基本I/O系统(或BIOS)。在多数基于Intel的计算机中,GRUB和LILO要接受由BIOS所强加的限制。例如,多数BIOSes无法进入两个以上的硬盘,而且它们无法访问任一驱动器上在超越柱面1023以上所贮存的数据。值得注意的是,某些新的BIOSes没有这些限制。PC机的引导加载程序所有GRUB和LILO需要在引导期间访问的数据(包括Linux内核)位于/boot目录中。/boot目录既可以是一个单
6、独的小分区,也可能会驻留在根分区(/)上。在任一情况下,如果要使用GRUB或LILO来引导Linux系统,/boot所驻留的分区一定要遵守以下条例:1)在前两个IDE驱动器上:如果有两个IDE(或EIDE)驱动器,/boot必须要位于其中之一,两个驱动器的限制也包括任何在主IDE控制器上的IDE光盘驱动器。因此,如果在主控制器上有一个IDE硬盘,和一个光盘驱动器,/boot必须仅能位于第一个硬盘,即便你在次IDE控制器上另有硬盘。2)在第一个IDE或第一个SCSI驱动器上:如果你有一个IDE(或EID
7、E)驱动器以及一个或更多SCSI驱动器,/boot必须位于IDE驱动器上或ID为0的SCSI驱动器上。3)在前两个SCSI驱动器上:如果你只有SCSI硬盘,/boot必须位于ID为0或1的驱动器上。4)分区完全在柱面1023之下:无论是以上哪一种配置,容有/boot的分区必须要全部位于柱面1023之下。如果容有/boot的分区位于柱面1023的两侧,所面对的情形可能是,GRUB和LILO最初会起作用(因为所有必需的信息都位于柱面1023之下),但是如果一个新内核被载入后驻留在柱面1023之上的话,它们
8、将会失败。PC机的Linux引导加载过程启动过程BIOS完成硬件检测、资源分配,然后将引导代码(512B)读入内存0x7c00中,然后跳转到0x7c00运行(将CPU控制权交给引导程序)引导代码将自己搬移到0x90000,再跳转到该地址执行,然后将磁盘上的setup和内核映像读入内存0x90200,并跳转到setup运行在setup中完成处理器设置、解压缩等操作,将内核解压到一个固定地址,然后跳转到此地址运行,从而进入到内核初始化过程嵌入式系统中的引导程
此文档下载收益归作者所有