Linux GRUB是一个启动引导程序,全称是GRand Unified Bootloader。当它被写入磁盘的主引导记录或EFI分区后,计算机加电自检完毕就会把控制权交给它,由它负责把Linux内核读入内存并启动系统。

GRUB在启动流程中的位置
现代PC的开机过程大致是:BIOS或UEFI先完成硬件检测,然后找到启动设备上的GRUB,GRUB再加载内核与初始化内存盘,最后把执行权交给内核。我们可以用下面的顺序来理解:
- 硬件加电与固件初始化
- 固件读取启动项并加载GRUB
- GRUB显示菜单并加载选定系统的内核
- 内核接管后启动用户空间服务
GRUB的主要配置文件
在基于GRUB 2的发行版里,用户一般不直接手写启动项,而是修改/etc/default/grub后再生成配置。下面是一段常见的配置示例:
# 设置默认启动项,0表示第一个菜单项 GRUB_DEFAULT=0 # 菜单等待时间,单位秒 GRUB_TIMEOUT=5 # 是否显示隐藏的启动菜单 GRUB_HIDDEN_TIMEOUT_QUIET=true # 指定内核启动参数 GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
修改完上面文件后,需要执行命令重新生成配置,Debian系与Red Hat系路径略有不同:
# Debian或Ubuntu sudo update-grub # CentOS或Rocky sudo grub2-mkconfig -o /boot/grub2/grub.cfg
GRUB常见故障与修复
双系统重装Windows后经常会导致GRUB被覆盖,此时可以用Live CD启动并重装GRUB。假设系统根分区是/dev/sda3,挂载后执行:
sudo mount /dev/sda3 /mnt sudo grub-install --root-directory=/mnt /dev/sda
用命令行手动引导内核
如果配置文件损坏,也可以在GRUB命令行里手动指定内核与initrd:
set root=(hd0,3) linux /boot/vmlinuz-5.15.0 root=/dev/sda3 ro initrd /boot/initrd.img-5.15.0 boot
GRUB与多系统菜单
GRUB会扫描磁盘中的其他系统,例如Windows的EFI入口,并自动加入启动菜单。你可以通过修改GRUB_DEFAULT与GRUB_TIMEOUT来控制默认项和等待时间,避免每次开机都要手动选择。
| 项目 | 说明 |
|---|---|
| GRUB_DEFAULT | 默认启动的菜单项索引 |
| GRUB_TIMEOUT | 菜单停留秒数,设0可直接启动 |
| GRUB_DISABLE_OS_PROBER | 是否关闭其他系统探测 |
了解这些基础内容后,你就能明白Linux GRUB是什么,以及在系统起不来时该从哪里下手处理。
LinuxGRUBboot_loader修改时间:2026-07-30 16:48:22