双体系下办理无grub引导菜单以及grub中没有windows引导项的问题

[复制链接]
发表于 2026-10-3 11:02:51 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×

装完 Ubuntu 双系统, Initially 开机直接进 Ubuntu,看不到 GRUB 菜单,想切回 Windows 也没入口。改 BIOS 启动顺序试过没用——问题根本不在启动顺序上。这篇记录从头到尾的定位与修复:先让菜单显出来,再把 Windows 引导项加回去。

一、问题长什么样

按双系统教程装完 Ubuntu,能正常用,就没管。后来想切回 Windows,重启后发现没有 GRUB 启动菜单,直接进 Ubuntu,压根没有切换的入口。进系统后改 BIOS 启动顺序,无效。

这其实是两个独立问题:① 菜单被隐藏;② 菜单里缺 Windows 项。得分开修。

二、修没 GRUB 菜单:把隐藏改成 menu

Ubuntu 默认把 GRUB 菜单藏起来了,只显示倒计时 2 秒或直接启动。改一下配置让它出来:

  1. 进 Ubuntu,开终端:
sudo gedit /etc/default/grub
  1. 把第 7 行的 GRUB_TIMEOUT_STYLE=hidden 改成 GRUB_TIMEOUT_STYLE=menu;
  2. 保存,终端执行 sudo update-grub;
  3. 重启,启动菜单就出来了。

现在第一个问题解决了,但菜单里只有 Ubuntu,没有 Windows——这就轮到第二个问题。

三、菜单里加 Windows 引导项

方法一:手写一个 menuentry(适合 GPT 分区)

按 GPT 方式装的双系统,可以手动加。终端依次执行:

sudo grub-install /dev/sda
sudo chmod -x /etc/grub.d/30_os-prober
sudo gedit /etc/grub.d/40_custom

在打开的 40_custom 里写入:

menuentry 'Win10'{
    insmod part_gpt
    insmod chain
    insmod ntfs
    set root='(hd0,gpt1)'
    chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}

然后 sudo update-grub。/boot/grub/grub.cfg 会跟着变,重启后 Win10 选项就出现了。

如果到这里选 Win10 能进,恭喜,省事。

方法二:找不到 bootmgfw.efi 怎么办

选了 Win10 回车报错"找不到路径 /EFI/Microsoft/Boot/bootmgfw.efi",说明 (hd0,gpt1) 这个位置猜错了——EFI 分区不在那儿。得先定位 Windows 的 EFI 分区。

进 GRUB 命令行看磁盘分区:

  • 在 Ubuntu 引导菜单界面别急着回车,按 E 再按 F10 尝试进命令行;
  • 如果 E+F10 直接重启了,就在菜单界面按 ESC(这个方法在部分机器上有效);
  • 进命令行后用两个命令摸清分区:
ls
ls (hdX,msdosY)

hd0 是第一块硬盘,hd1 是第二块;msdos1 是第一个分区,以此类推。逐个 ls (hdX,msdosY) 列出来,靠 label(标签)和 total size(总大小)判断哪个是 Windows 的 EFI 分区。

我的 EFI 分区就在系统盘上,位置是 (hd1,msdos1)。同时记下它的文件系统类型(一般是 ntfs)和 UUID(uuid 后面那串大字母加数字的编码)。

重启进 Ubuntu,再补两步:

sudo grub-install /dev/nvme0n1p1    # 后面的路径换成 Windows EFI 所在的硬盘,不一定真是 nvme0n1p1
sudo chmod -x /etc/grub.d/30_os-prober
sudo gedit /etc/grub.d/40_custom

这次写入的内容带上正确位置和 UUID:

menuentry 'Win10'{
    insmod part_gpt
    insmod chain
    insmod ntfs
    set root='(hdX,msdosY)'          # 换成你自己的位置,比如 hd1,msdos1
    search --no-floppy --fs-uuid --set=XXXXXXXX    # 换成刚才记下的 uuid
    chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}

再 sudo update-grub。这回选 Win10 应该就能进了。

四、几个容易翻车的地方

  • set root 的位置写错,就是"找不到路径"那个错;不确定就回 GRUB 命令行 ls 一遍。
  • grub-install 后面的设备路径不是随便抄 sda:EFI 在 NVMe 盘上就写 /dev/nvme0n1p1,再写 sda 会写错地方。
  • chmod -x 30_os-prober 是把系统自动探测关掉,避免它生成的项和你的手写字打架,别漏。
  • 改完 40_custom 一定要 update-grub,直接重启不生效。

总结

双系统看不到 GRUB 菜单,先改 /etc/default/grub 的 GRUB_TIMEOUT_STYLE=menu 再 update-grub;菜单出来了没 Windows,就在 /etc/grub.d/40_custom 手写 menuentry 链到 bootmgfw.efi。报"找不到 /EFI/Microsoft/Boot/bootmgfw.efi"就进 GRUB 命令行 ls 定位 EFI 分区,把 set root 和 search --fs-uuid 填对。位置和 UUID 是这道题的两个正确答案。

qidao123.com企服评测-应用市场 编辑提示

回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表