GRUB 详解:Linux 系统的引导加载程序
GRUB(GRand Unified Bootloader)是 Linux 和其他类 Unix 系统中最常用的 引导加载程序(Bootloader),负责在计算机启动时加载操作系统内核并将控制权交给内核。以下是其核心要点:
1. GRUB 的作用
- 硬件初始化后:BIOS/UEFI 完成自检后,GRUB 作为第一个被执行的软件。
- 多系统引导:支持选择不同操作系统(如 Linux、Windows)或同一系统的多个内核版本。
- 内核加载:读取配置文件,加载指定的 Linux 内核和 initramfs(初始内存文件系统)。
- 传递参数:向内核传递启动参数(如
root=
,quiet
等)。
2. GRUB 的版本
版本 | 适用固件 | 特点 |
---|---|---|
GRUB Legacy | BIOS | 旧版,功能有限,已停止维护。 |
GRUB2 | BIOS/UEFI | 当前主流版本,支持模块化、脚本化、主题和多架构(如 x86_64、ARM)。 |
📌 现代 Linux 发行版默认使用 GRUB2。
3. GRUB2 的核心组件
grub-install
:将 GRUB 安装到磁盘的引导扇区(如/dev/sda
)。/boot/grub/grub.cfg
:主配置文件(通常由update-grub
/grub-mkconfig
生成)。- 模块化设计:按需加载文件系统、加密等模块(存储在
/boot/grub/<arch>/
)。
4. GRUB2 启动流程
- Stage 1:BIOS/UEFI → MBR/GPT ESP →
core.img
(极小化的核心代码)。 - Stage 1.5*(仅 BIOS)*:加载文件系统驱动以识别
/boot
。 - Stage 2:读取
/boot/grub/grub.cfg
,显示菜单并加载内核。
flowchart TB
A[BIOS/UEFI] --> B[MBR: boot.img]
B --> C[Core Image: core.img]
C --> D[Stage2: /boot/grub/i386-pc/*]
D --> E[Load Kernel vmlinuz & initramfs]
5. GRUB2 常见操作
(1)修改默认启动项
编辑 /etc/default/grub
,然后更新配置:
# Ubuntu/Debian
sudo update-grub
# RHEL/CentOS
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
(2)手动编辑启动参数
在 GRUB 菜单界面按 e
,临时修改内核参数(如修复根文件系统错误):
linux /vmlinuz root=/dev/sda3 ro quiet splash
(3)救援模式
若系统无法启动,通过 Live CD/USB chroot后重装 GRUB:
# BIOS (MBR)
sudo grub-install --target=i386-pc /dev/sda
# UEFI (GPT)
sudo grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=ubuntu
6. UEFI vs BIOS下的区别
BIOS + MBR | UEFI + GPT | |
---|---|---|
GRUB安装位置 | MBR + /boot/grub |
ESP分区 (/boot/efi ) |
配置文件路径 | /boot/grub/grub.cfg |
/boot/efi/EFI/<distro>/grub.cfg |
工具命令 | grub-install --target=i386-pc |
grub-install --target=x86_64-efi |
7.故障排查技巧
- 日志查看:
sudo cat /var/log/boot.log # Systemd日志 sudo journalctl -b # UEFI相关日志
- 重建GRUB:
sudo grub-mkconfig -o /boot/grub/grub.cfg
✅总结
GRUB是Linux生态中不可或缺的引导工具,掌握其配置和修复方法对系统管理员至关重要。遇到启动问题时,优先检查:
/etc/default/grub
/boot分区是否正常挂载
- UEFI是否关闭Secure Boot
内容由零声教学AI助手提供,问题来源于学员提问