Linux内核启动与GRUB引导加载器详解
1. 引导加载器概述
在Linux系统启动过程中,内核和 init 程序启动之前,引导加载器负责启动内核。引导加载器的任务看似简单,即把内核加载到内存,然后使用一组内核参数启动内核,但它需要回答一些关键问题:
- 内核在哪里?
- 启动内核时应传递哪些内核参数?
通常,内核及其参数位于根文件系统中。然而问题在于,内核尚未运行,无法遍历文件系统查找所需文件,而且用于访问磁盘的内核设备驱动程序也不可用,这就形成了一个“先有鸡还是先有蛋”的问题。
在PC上,引导加载器使用基本输入/输出系统(BIOS)或统一可扩展固件接口(UEFI)来访问磁盘。几乎所有磁盘硬件都有固件,允许BIOS使用线性块寻址(LBA)访问连接的存储硬件。尽管这种访问模式性能较差,但它能实现对磁盘的通用访问。引导加载器通常是唯一使用BIOS进行磁盘访问的程序,而内核使用自己的高性能驱动程序。
文件系统的问题更为棘手。大多数现代引导加载器可以读取分区表,并内置了对文件系统的只读访问支持,因此能够查找和读取文件。这种能力使得动态配置和增强引导加载器变得更加容易。早期的Linux引导加载器并不具备这种能力,配置起来更加困难。
2. 引导加载器的任务
Linux引导加载器的核心功能包括:
- 在多个内核之间进行选择。
- 在不同的内核参数集之间进行切换。
- 允许用户手动覆盖和编辑内核映像名称及参数(例如进入单用户模式)。
- 支持启动其他操作系统。
自Linux内核诞生以来,引导加载器已经有了很大的发展,具备
超级会员免费看
订阅专栏 解锁全文
42

被折叠的 条评论
为什么被折叠?



