Bootloader与内核和根文件系统的关系
Bootloader(引导加载程序)是操作系统启动过程中的“引路人”,它负责在计算机通电后,找到内核并启动它,同时为内核提供必要的信息(比如根文件系统的位置)。它与内核、根文件系统的关系可以用一个启动流程来理解:
1. Bootloader 的作用
- 硬件初始化:计算机通电后,BIOS/UEFI(固件)会先运行,检测硬件(如CPU、内存、硬盘),然后从硬盘的引导分区加载 Bootloader。
- 加载内核:Bootloader 会从硬盘中找到内核的镜像文件(如
vmlinuz或bzImage),将其加载到内存中。 - 传递参数:告诉内核后续需要挂载的根文件系统的位置(比如在哪个硬盘分区,文件系统类型是 ext4 还是 btrfs)。
- 启动内核:将 CPU 的控制权交给内核,内核正式接管计算机。
2. 三者关系示意图
计算机启动流程:
固件 (BIOS/UEFI) → Bootloader → 内核 → 挂载根文件系统 → 启动用户程序
- Bootloader 和内核:
- Bootloader 是内核的“搬运工”,没有它,内核无法被加载到内存中。
- 内核启动后,Bootloader 的使命就结束了(后续由内核接管硬件)。
- Bootloader 和根文件系统:
- Bootloader 不直接依赖根文件系统,但它需要知道根文件系统的位置(通过配置文件或手动指定),以便将信息传递给内核。
- 例如:GRUB(一种常见的 Bootloader)的配置文件中会写明根文件系统的分区(如
/dev/sda1)。
3. 实际场景举例
假设你使用 Linux 系统,硬盘分区如下:
/dev/sda1:Bootloader(如 GRUB)和内核文件。/dev/sda2:根文件系统(包含/bin,/etc,/home等目录)。
启动过程:
- BIOS/UEFI 从硬盘的引导分区(
/dev/sda1)加载 GRUB(Bootloader)。 - GRUB 读取配置文件,找到内核文件(如
vmlinuz-5.15)和根文件系统的位置(/dev/sda2)。 - GRUB 将内核加载到内存,并告诉内核:“根文件系统在
/dev/sda2,文件系统类型是 ext4”。 - 内核 启动后,根据 GRUB 提供的信息,挂载
/dev/sda2作为根文件系统。 - 内核从根文件系统中加载初始化程序(如
systemd或init),最终启动完整的操作系统。
4. 三者的依赖关系
- Bootloader 依赖内核:没有内核,Bootloader 加载完程序后无事可做。
- 内核依赖根文件系统:没有根文件系统,内核无法加载用户程序和配置。
- Bootloader 不直接依赖根文件系统:但需要知道它的位置(通过配置文件或手动输入)。
总结
- Bootloader 是启动链条中的“第一环”,负责加载内核并传递关键参数。
- 内核 是操作系统的核心,但需要 Bootloader 帮它“上车”(加载到内存)。
- 根文件系统 是内核后续运行的“资源库”,由内核根据 Bootloader 提供的信息挂载。
关系链:
Bootloader → 加载内核 → 内核挂载根文件系统 → 操作系统启动完成

419

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



