Grub.cfg未显示任何启动选项,求助定位真实引导程序及解决方法
找到真实的GRUB引导配置并处理你的问题
这问题我之前帮朋友排查过,大概率是你找错了配置文件的路径!咱们一步步来理清:
为什么你打开的/etc/grub/grub.cfg是空的?
首先要明确:/etc/grub/grub.cfg根本不是GRUB实际引导时用的配置文件!这个目录里的文件大多是配置模板、脚本辅助文件或者备份,真正负责引导菜单的配置在另一个路径下。
真实的GRUB配置文件在哪里?
分两种情况,但你先优先检查第一个:
- BIOS启动(你的Win7 32位大概率是这种):实际配置文件是
/boot/grub/grub.cfg,你开机看到的那些菜单选项(Ubuntu、Windows 7 loader等)全在这里面。 - UEFI启动(如果你的电脑是较新的UEFI模式):GRUB的引导核心文件在ESP分区(通常挂载在
/boot/efi),路径是/boot/efi/EFI/ubuntu/grub.cfg,这个文件一般会指向/boot/grub/grub.cfg,相当于一个跳转入口。
你可以打开终端,运行下面的命令验证:
cat /boot/grub/grub.cfg
不出意外的话,这里面会显示你开机看到的完整引导菜单内容。
正确修改GRUB配置的方法
记住:永远不要直接编辑grub.cfg!因为每次运行update-grub命令时,这个文件会被自动覆盖,手动改的内容会全部丢失。正确的流程是:
- 修改主配置文件
打开终端,用管理员权限编辑/etc/default/grub:
sudo gedit /etc/default/grub
这里面可以调整各种GRUB参数,比如:
GRUB_TIMEOUT=10:就是你看到的10秒超时时间,改成你想要的数值就行GRUB_DEFAULT=0:设置默认启动的选项(0是第一个菜单,1是第二个,以此类推)
- 重新生成配置文件
修改并保存/etc/default/grub后,运行下面的命令让系统重新生成正确的grub.cfg:
sudo update-grub
这个命令会调用/etc/grub.d/目录下的脚本(比如10_linux负责生成Ubuntu选项,20_windows负责生成Windows选项),自动拼接出完整的引导菜单配置,同时更新MBR或ESP里的引导信息。
- 验证效果
重启电脑,你就能看到修改后的GRUB菜单了。
如果还是有问题?
如果/boot/grub/grub.cfg也没有内容,那可能是GRUB的安装位置出了问题。你可以尝试重新安装GRUB到硬盘的MBR(BIOS模式):
sudo grub-install /dev/sda
(这里/dev/sda是你的硬盘设备名,不要加分区号,比如不要写成/dev/sda1)
然后再运行sudo update-grub重新生成配置。
内容的提问来源于stack exchange,提问作者Nicholas Bourbaki
相关产品推荐
相关产品推荐

