GRUB │ 引导加载程序

GRUB是一个多引导加载程序,允许用户在多操作系统环境中选择启动系统。它分为GRUB Legacy和GRUB 2两个版本。GRUB的任务包括识别文件系统和多阶段执行。在BIOS+MBR或BIOS+GPT的系统中,GRUB通过不同步骤加载内核到内存。对于UEFI固件,其启动流程有所不同,但未在文中详细说明。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原文地址:GRUB │ 引导加载程序(永久地址,保存网址不迷路 🙃)

在系统启动的第二步中,开始执行引导程序,那引导程序是哪里来的呢?引导程序是GRUB安装到MBR中。

GRUB,一个引导加载程序,属于GNU项目。它是「多引导规范」的「参考实现」,可以用户在安装了多个操作系统的主机上选择要启动的系统,或者选择特定的内核配置。

引导加载程序的任务

任务一、识别文件系统

操作系统的内核通常保存在文件系统中的,但是BIOS并没有文件系统的概念,因此BIOS无法直接启动内核。因此需要加入中间层,系统启动的大概为 BIOS -> BOOTLOADER -> KERNEL。因此在基于BIOS的系统中,读取文件系统的文件由 BOOTLOADER 负责。由引导加载程序加载内核到内存执行。这有两种途径:

	**途径一,直接读取物理扇区**:不管用什么文件系统,数据在磁盘上还是数据。所以,只要找到保存文件的扇区,将扇区依照顺序拼凑起来,即使不理解文件系统,也能够获取到文件。鉴于此,定义一个“间接层”,该层保存了内核所在的物理扇区,引导程序直接读取这个间接层来获取内核,这样就可以了。但是,这也带来了一些问题。内核文件不能动,移动、碎片整理、更新内核都会导致物理扇区发生变化。一旦变化,就要重新更新”间接层“,同时可能还要更新MBR中的代码(因为它要知道间接层的开始和结束位置)。这个方案不好。
	**途径二,理解文件系统**:让引导程序理解文件系统,这样就可以通过文件路径找到内核。这就要求引导程序中包含某些驱动程序,以识别文件系统。这种方法减少了对物理扇区的依赖,并且在内核文件发生修改之后,不需要更新引导程序。并且,由于可以理解文件系统,引导程序的配置文件可以保存在文件系统中。但是也存在一些缺点,这种途径增加了引导加载程序的大小和复杂性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值