全球旧事资料 分类
有能力识别任何文件系统。分以下两种情况:r
(1)假如startS读取的是stage1_5,它存放在硬盘0头0道3扇区向后的位置,stage1_5作为stage1和stage2中间的桥梁,stage1_5有识别文件系统的能力,此后grub才有能力去访问boot分区bootgrub目录下的stage2文件,将stage2载入内存并执行。r
(2)假如startS读取的是stage2,同样,这个stage2也不是boot分区bootgrub目录下的stage2,这个时候startS读取的是存放在boot分区BootSector的stage2。这种情况下就有一个限制:因为startS通过BIOS中断方式直接对硬盘寻址(而非通过访问具体的文件系统),其寻址范围有限,限制在8GB以内。因此这种情况需要将boot分区分在硬盘8GB寻址空间之前。r
假如是情形(2),我们将bootgrub目录下的内容清空,依然能成功启动grub;假如是情形(1),将bootgrub目录下stage2删除后,则系统启动过程中grub会启动失败。r
这个地方经常要进行的操作:r
是关于grub常用的几个指令对应的函数:r
grubroothd00root指令为grub指定了一个根分区r
grubker
elxe
gz261837el5ker
el指令将操作系统内核载入内存r
grubmodulevmli
uz261837el5xe
rorootdevsda2module指令加载指定的模块r
grubmodulei
itrd261837el5xe
img指定i
itrd文件r
grubbootboot指令调用相应的启动函数启动OS内核r
r
r
第三阶段:r
如阶段2所述,grubboot指令后,系统启动的控制权移交给ker
el。Ker
el会立即初始化系统中各设备并做相关配置工作,其中包括CPU、IO、存储设备等。r
关于设备驱动加载,有两部分:一部分设备驱动编入Li
uxKer
el中,Ker
el会调用这部分驱动初始化相关设备,同时将日志输出到ker
elmessagebuffer,系统启动后dmesg可以查看到这部分输出信息。另外有一部分设备驱动并没有编入Ker
el,而是作为模块形式放在i
itrd(ramdisk)中。r
在26内核中,支持两种格式的i
itrd,一种是24内核的文件系统镜像imagei
itrd,一种是cpio格式。以cpio格式为例,内核判断i
itrd为cpio的文件格式后,会将i
itrd中的内容释放到rootfs中。r
i
itrd是一种基于内存的文件系统,启动过程中,系统在访问真正的根文件系统时,会先访问i
itrd文件系统。将i
itrd中的内容打开来看,会发现有bi
、devetc、lib、procsys、sysroot、i
it等文件(包含目录)。其中包含了一些设备的驱动模块,比如scsir
好听全球资料 返回顶部