Ubuntu 23.10双引导丢失,执行sudo update-grub检测到Windows但重启仍仅进入Ubuntu的问题排查
我完全懂你现在的郁闷——明明跑sudo update-grub时系统已经明确找到了Windows分区,结果重启后还是直接跳进Ubuntu,连选择系统的引导菜单都看不到,这确实让人头大。咱们一步步来排查解决:
先确认GRUB菜单是不是被隐藏了
Ubuntu默认会把GRUB菜单藏起来,要么只显示几秒要么直接跳过。你可以试试开机的时候按住Shift键(如果是UEFI机型,可能要按Esc键),看看能不能调出GRUB菜单,里面有没有Windows的选项。要是能看到,那只是菜单隐藏的问题,后面改配置就行。修改GRUB配置强制显示菜单
如果按住按键也看不到菜单,咱们手动改配置让菜单默认显示:- 打开GRUB配置文件:
sudo nano /etc/default/grub - 找到
GRUB_TIMEOUT_STYLE=hidden,把它改成GRUB_TIMEOUT_STYLE=menu - 再确认
GRUB_TIMEOUT的值,改成大于0的数字,比如GRUB_TIMEOUT=10(这样菜单会停留10秒给你选) - 按
Ctrl+O保存,Ctrl+X退出,然后重新执行sudo update-grub,重启后应该就能看到菜单了。
- 打开GRUB配置文件:
检查UEFI启动顺序
从你的输出能看出来是UEFI系统,有可能主板的UEFI启动列表里,Ubuntu的启动项优先级太高,直接跳过了GRUB引导。你可以开机时按主板对应的按键(一般是F2、F10或Del,看开机时的提示)进入BIOS/UEFI设置,找到启动顺序选项:
确保Ubuntu对应的GRUB启动项是第一优先级,这样开机就会进入GRUB菜单;如果里面有独立的Windows启动项,也可以调整它的位置,不过优先保证GRUB作为默认引导项更稳妥。验证GRUB配置里的Windows条目
你可以手动检查GRUB生成的配置文件,看看Windows的条目是不是真的存在:执行cat /boot/grub/grub.cfg | grep -A 10 "Windows",如果能看到对应的menuentry段落,说明条目是正常的,问题还是出在菜单显示上;要是看不到,那可能os-prober的检测有问题,你可以试试先重装os-prober:sudo apt install --reinstall os-prober,然后再跑一次sudo update-grub。终极方案:修复GRUB引导
如果上面的方法都没用,那可能是GRUB的引导出了问题,需要重新安装:- 用Ubuntu安装U盘启动,选择“试用Ubuntu”进入 live 模式
- 打开终端,用
lsblk命令找到你的Ubuntu根分区(比如/dev/sda4,看挂载点和大小判断)和EFI分区(一般是小的FAT32分区,TYPE显示为efi) - 挂载根分区:
sudo mount /dev/sdXn /mnt(把sdXn换成你的根分区路径) - 挂载EFI分区:
sudo mount /dev/sdYm /mnt/boot/efi(把sdYm换成你的EFI分区路径) - 挂载必要的系统目录:
sudo mount --bind /dev /mnt/dev sudo mount --bind /proc /mnt/proc sudo mount --bind /sys /mnt/sys - 进入chroot环境:
sudo chroot /mnt - 重新安装GRUB:
grub-install /dev/sda(这里的/dev/sda是你的硬盘,不是分区) - 再次更新GRUB:
update-grub - 退出chroot:
exit,然后重启系统
备注:内容来源于stack exchange,提问作者Sildeag

