从BIOS到bootloader

BIOS时期

通过指向ROM的指令,执行ROM中的初始化工作代码,BIOS进行初始化工作;

首先检查硬件配置,然后建立中断向量表和中断服务程序。

Bootloader 时期

 

 

Grud2 Grand Unified Bootloader Version2

通过 grub2-mkconfig -o /boot/grub2/grub.cfg 来配置系统启动的选项

使用 grub2-install /dev/sda,可以将启动程序安装到相应的位置

grub2首先要安装的是boot.img ;

BIOS 完成任务后,会将 boot.img 从硬盘加载到内存中的 0x7c00 来运行

boot.img 先加载的是 core.img 的第一个扇区。如果从硬盘启动的话,这个扇区里面是 diskboot.img,对应的代码是 diskboot.S;

diskboot.img 的任务就是将 core.img 的其他部分加载进来,先是解压缩程序 lzma_decompress.img,再往下是 kernel.img,最后是各个模块 module 对应的映像。

lzma_decompress.img 做了一个重要的决定,就是调用 real_to_prot,切换到保护模式,这样就能在更大的寻址空间里面,加载更多的东西。

切换保护模式的函数 DATA32 call real_to_prot 会打开 Gate A20,也就是第 21 根地址线的控制线

然后对压缩过的 kernel.img 进行解压缩,跳转到 kernel.img 开始运行。

grub_load_config() 开始解析grub.conf中的配置信息;

如果正常启动grub_command_execute("normal",0,0),会调用grub_normal_execute()函数,在这个函数里grub_show_menu()会显示操作系统列表。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章