对于刚接触Linux系统的朋友来说,GRUB可能是第一个让人感到困惑的启动画面。作为系统中至关重要的引导程序,它负责在电脑开机时加载操作系统内核。很多人在安装双系统或更新内核后遭遇黑屏、报错,往往就是GRUB出了问题。理解它的工作原理和修复方法,是每位Linux用户的必修课。
GRUB是什么
GRUB全称是GRand Unified Bootloader,它本质上是一个运行在电脑启动初期的小程序。当主板完成自检后linux内核,GRUB就会接管控制权,读取配置文件并显示启动菜单。它的核心价值在于允许用户在多个操作系统之间自由选择,还能向内核传递启动参数。无论是Ubuntu、CentOS还是Arch Linux,都依赖GRUB来顺利完成启动流程。

绝大多数现代Linux发行版都默认使用GRUB 2作为引导程序,相比旧版GRUB Legacy,它支持更多文件系统、模块化加载和脚本功能。当你在开机时看到黑底白字的菜单界面,那就是GRUB在工作。如果它损坏了,电脑就会卡在“grub rescue”提示符下,无法进入系统。
修复GRUB引导
当电脑开机直接进入grub rescue界面时,不要慌张。首先输入“ls”命令列出所有磁盘分区,然后逐个尝试“ls (hd0,msdos1)”这样的组合,直到看到“ext2”或“msdos”等正常输出。找到正确的分区后,依次输入“set root=(hd0,msdosX)”和“set prefix=(hd0,msdosX)/boot/grub”,最后输入“insmod normal”和“normal”就能临时进入系统。

进入系统后,需要彻底修复GRUB以避免下次再出问题。打开终端linux系统镜像下载,先使用“sudo fdisk -l”确认根分区位置,然后执行“sudo mount /dev/sdaX /mnt”挂载根分区。如果单独分了/boot目录,还要额外挂载。最后运行“sudo grub-install --root-directory=/mnt /dev/sda”重新安装GRUB到磁盘主引导记录,重启后引导就恢复正常了。
手动进入系统
有时候GRUB配置文件彻底丢失,系统无法显示启动菜单。这时候可以在grub rescue界面手动加载内核。先通过“ls”找到安装Linux的分区,接着使用“set root=(hd0,msdosX)”指定分区。然后输入“linux /vmlinuz-版本号 root=/dev/sdaX ro”加载内核,再输入“initrd /initrd.img-版本号”加载初始化镜像盘,最后输入“boot”启动系统。
对于不熟悉命令行的人来说,这个过程看起来复杂,但核心就是告诉GRUB三个信息:内核文件在哪里、根分区在哪里、初始化镜像在哪里。你可以通过Tab键自动补全文件名,避免手动输入复杂的版本号。成功进入系统后记得立刻重装GRUB,否则下次开机还要重复手动引导。
GRUB配置文件
GRUB的主配置文件位于/boot/grub/grub.cfg,但这个文件是自动生成的,不建议直接编辑。当你想修改启动菜单的显示时间、默认系统或添加自定义启动项时,应该去修改/etc/default/grub文件。比如想延长菜单等待时间,就修改“GRUB_TIMEOUT=10”;想记住上次选择的系统,就加入“GRUB_SAVEDEFAULT=true”。
修改完/etc/default/grub后,还需要运行“sudo update-grub”命令才能生效。这个命令会扫描系统里所有已安装的内核和其他操作系统,自动生成新的grub.cfg文件。对于双系统用户,如果更新Windows后GRUB菜单不见了,同样可以通过这个方法重建配置,让双系统菜单重新出现。
双系统引导设置

在安装了Windows和Linux的双系统电脑上,GRUB通常会自动识别并添加Windows启动项。但如果安装顺序不对,可能会出现Windows直接启动、GRUB菜单消失的情况。这时候需要进入BIOS调整启动顺序,把Linux所在的硬盘设为第一启动项。如果还是不行,就用Live USB启动系统,通过chroot环境重新安装GRUB。
还有一种常见情况是GRUB菜单里有Windows选项,但点击后无法启动。这通常是Windows的EFI引导文件路径发生了变化。解决方法是进入Linux系统,编辑/etc/grub.d/40_custom文件,手动添加Windows的启动菜单项。添加完再运行update-grub,双系统就能正常切换了。记得每次Windows大版本更新后,最好检查一下GRUB是否还正常。
GRUB密码保护

如果你担心有人通过GRUB进入单用户模式获取root权限,或者随意修改启动参数,可以给GRUB设置密码保护。先运行“grub-mkpasswd-pbkdf2”生成加密密码,然后编辑/etc/grub.d/40_custom文件linux grub,在末尾添加“set superusers=”admin””和“password_pbkdf2 admin 加密密码”两行内容。保存后再运行update-grub生成新配置。
设置密码后,GRUB菜单会多出一个“高级选项”子菜单linux grub,只有输入正确的用户名和密码才能进入。这样可以防止他人通过编辑启动参数绕过系统安全机制,也能避免随意进入恢复模式。对于多人共用的服务器或者对安全性要求较高的个人电脑,为GRUB添加密码保护是非常必要的防护措施。
不知道你在使用Linux的过程中,是否遇到过GRUB引导失败后手忙脚乱的情况?你当时是怎么解决的呢?欢迎在评论区分享你的经历和应对方法。
