第二天:系统从BIOS/UEFI到GRUB/bootloader的启动过程

第二天:系统从BIOS/UEFI到GRUB/bootloader的启动过程

目录

**一、BIOS/UEFI初始化阶段**

**二、引导加载程序(GRUB)的启动过程**

**1. BIOS模式下的GRUB分阶段加载**

**2. UEFI模式下的GRUB加载**

**三、操作系统内核加载与初始化**

**四、关键组件与配置文件**

**五、故障排查与恢复**

**总结**

常见问题

如何在UEFI模式下修复GRUB引导加载程序?

BIOS与UEFI在硬件初始化阶段有哪些具体的不同?

GRUB配置文件`/boot/grub/grub.cfg`的详细编辑指南是什么?

initramfs的作用及其在系统启动过程中的具体步骤是什么?

initramfs的作用

initramfs在系统启动过程中的具体步骤

initramfs与initrd的区别

实际应用

在多操作系统环境中,如何配置GRUB以支持多系统启动?

一、BIOS/UEFI初始化阶段

硬件自检(POST)

BIOS/UEFI通电后首先执行硬件自检(Power-On Self Test),检查CPU、内存、硬盘等设备的运行状态,确保硬件正常。

UEFI相比传统BIOS更先进,支持**GPT分区表、安全性增强(如Secure Boot)**和更快的启动速度。

硬件初始化与配置加载

BIOS/UEFI初始化系统硬件,读取CMOS(或NVRAM)中的配置参数,如启动顺序、时间设置等。

UEFI还会加载**内置驱动程序(如网络驱动、USB驱动)**以支持更多外设。

启动设备搜索

根据配置的启动顺序(如硬盘、光驱、USB),BIOS/UEFI识别可引导设备并加载其引导记录:

BIOS模式:加载硬盘的主引导记录(MBR,512字节),其中包含引导代码(446字节)和分区表(64字节)。

UEFI模式:直接加载EFI分区中的引导程序(如EFI/BOOT/bootx64.efi)。

二、引导加载程序(GRUB)的启动过程

1. BIOS模式下的GRUB分阶段加载

Stage 1:

BIOS将MBR中的引导代码(Stage 1)加载到内存地址0x7C00并执行。

Stage 1代码会跳转到MBR后的未分配空间(或分区表后的空间),加载Stage 1.5。

Stage 1.5:

处理文件系统(如ext4、NTFS),定位并加载Stage 2的GRUB核心模块。

此阶段支持GRUB的高级功能,如菜单选择、内核参数编辑。

Stage 2:

加载GRUB配置文件(如/boot/grub2/grub.cfg),显示启动菜单,允许用户选择操作系统或内核版本。

根据配置加载内核(如vmlinuz)和初始化内存文件系统(initramfs)到内存。

2. UEFI模式下的GRUB加载

UEFI直接加载EFI分区中的GRUB二进制文件(如/EFI/BOOT/bootx64.efi),跳过MBR阶段。

GRUB在UEFI环境中同样执行Stage 2的加载流程,但无需Stage 1的中继。

三、操作系统内核加载与初始化

内核加载

GRUB将内核镜像(如vmlinuz)和initramfs加载到内存。

内核参数(如root=/dev/sda1 ro quiet splash)通过GRUB传递给内核。

内核初始化

内核接管系统控制权,初始化硬件(如CPU模式切换、内存管理)、挂载根文件系统(通过initramfs)。

启动第一个用户空间进程(PID 1),通常是systemd(现代Linux)或init(传统系统)。

四、关键组件与配置文件

GRUB配置文件:/boot/grub2/grub.cfg定义了启动菜单选项及内核参数。

initramfs:临时文件系统,用于在真实根文件系统挂载前提供驱动和工具。

/boot目录:存放内核镜像、GRUB模块和其他引导文件。

五、故障排查与恢复

引导修复:若MBR损坏,可通过grub-install命令重新安装GRUB。

紧急模式:通过GRUB菜单编辑参数(如init=/bin/bash)进入紧急Shell。

密码恢复:在GRUB菜单编辑启动参数(如rw init=/bin/bas