原文地址:GRUB │ 引导加载程序(永久地址,保存网址不迷路 🙃)
在系统启动的第二步中,开始执行引导程序,那引导程序是哪里来的呢?引导程序是GRUB安装到MBR中。
GRUB,一个引导加载程序,属于GNU项目。它是「多引导规范」的「参考实现」,可以用户在安装了多个操作系统的主机上选择要启动的系统,或者选择特定的内核配置。
引导加载程序的任务
任务一、识别文件系统
操作系统的内核通常保存在文件系统中的,但是BIOS并没有文件系统的概念,因此BIOS无法直接启动内核。因此需要加入中间层,系统启动的大概为 BIOS -> BOOTLOADER -> KERNEL。因此在基于BIOS的系统中,读取文件系统的文件由 BOOTLOADER 负责。由引导加载程序加载内核到内存执行。这有两种途径:
**途径一,直接读取物理扇区**:不管用什么文件系统,数据在磁盘上还是数据。所以,只要找到保存文件的扇区,将扇区依照顺序拼凑起来,即使不理解文件系统,也能够获取到文件。鉴于此,定义一个“间接层”,该层保存了内核所在的物理扇区,引导程序直接读取这个间接层来获取内核,这样就可以了。但是,这也带来了一些问题。内核文件不能动,移动、碎片整理、更新内核都会导致物理扇区发生变化。一旦变化,就要重新更新”间接层“,同时可能还要更新MBR中的代码&