linux启动引导GRUB2(Grand Unified Bootloader version 2)
一、 GRUB2 的主要特点
相比于早期的 GRUB Legacy,GRUB2 进行了彻底的重构,具有以下显著特点:
- 模块化设计:GRUB2 的核心非常小,大部分功能(如文件系统支持、逻辑卷支持等)都以模块(
.mod文件)形式存在,按需加载。 - 支持多种文件系统:原生支持 ext4、xfs、btrfs、ZFS、NTFS、FAT 等,甚至可以直接从 LVM 或 RAID 分区启动。
- 图形化界面支持:支持高分辨率屏幕和背景图片,通过 VBE(VESA BIOS Extensions)或 EFI 图形协议实现更好的视觉效果。
- 脚本语言支持:配置文件支持条件判断(if/else)、循环和函数,逻辑处理能力远超前代。
- 多架构支持:兼容传统的 BIOS(i386-pc)以及现代的 UEFI 架构。
- 强大的救援模式:即使配置文件损坏,也可以通过命令行手动加载内核并启动系统。
二、 GRUB2 配置文件结构
在 GRUB2 中,用户不应该直接编辑 /boot/grub/grub.cfg,因为该文件是自动生成的,手动修改会在内核更新后被覆盖。正确的配置逻辑如下:
- **
/etc/default/grub**:这是主要的用户配置文件,用于设置默认启动项、超时时间、内核参数等。 - **
/etc/grub.d/**:这是一个目录,包含若干脚本(如00_header、10_linux、40_custom)。这些脚本决定了如何扫描系统并生成菜单项。 - **
grub-mkconfig**:该命令会读取上述文件和脚本,合并后生成最终的/boot/grub/grub.cfg。
三、 常见配置应用示例
1. 修改默认启动项和等待时间
编辑 /etc/default/grub:
1 | GRUB_DEFAULT=0 # 默认启动第一项(也可以设置为具体的名称) |
2. 更新配置生效
修改完设置后,必须运行更新命令(不同发行版命令略有不同):
- Ubuntu/Debian:
sudo update-grub - CentOS/Fedora/RHEL:
sudo grub2-mkconfig -o /boot/grub2/grub.cfg(EFI模式路径可能不同)
3. 自定义启动项
如果你想手动添加一个 ISO 镜像启动或另一个系统,可以编辑 /etc/grub.d/40_custom:
1 | menuentry "My Custom OS" { |
四、 常用维护命令
| 命令 | 用途 |
|---|---|
grub-install /dev/sda |
将 GRUB 安装到指定硬盘的 MBR 或 EFI 分区 |
grub-reboot "Entry Name" |
设置下次启动时临时进入的项目(仅一次有效) |
grub-mkpasswd-pbkdf2 |
为 GRUB 菜单设置加密密码,增强安全性 |
五、 故障处理:进入 grub rescue 怎么办?
如果启动时看到 grub rescue> 提示符,说明 GRUB 找不到它的模块或配置文件。
- 使用
ls查看分区。 - 使用
set查看当前路径设置。 - 通过以下逻辑手动引导:
set root=(hd0,msdos1)set prefix=(hd0,msdos1)/boot/grubinsmod normalnormal
温馨提示:在操作 GRUB 配置之前,建议先备份 /etc/default/grub,以免配置失误导致系统无法进入图形界面。