欢迎光临
我们一直在努力

Ubuntu+Windows双系统:解决GRUB不显示Windows启动项、一闪而过问题

Ubuntu+Windows双系统:解决GRUB菜单一闪而过、不显示Windows启动项

很多用户在安装Ubuntu和Windows双系统后,会遇到两个典型问题:

  • 开机GRUB菜单一闪而过,来不及选择系统,直接进入Ubuntu;
  • 即使调出GRUB菜单,也看不到Windows的启动选项,无法进入Windows系统。
  • 本文以Ubuntu 24.04系统为例,详细讲解从排查到彻底解决这两个问题的完整步骤,同时附上常见报错分析、一键修复脚本,以及极端情况的Live USB救援方案,帮助双系统用户顺利切换系统、解决引导故障。

    一、问题分析

    1. 菜单一闪而过的原因

    GRUB默认的配置中,部分版本会设置GRUB_TIMEOUT=0或GRUB_TIMEOUT_STYLE=hidden,导致开机菜单被隐藏或停留时间极短,用户来不及操作就直接进入默认系统(通常是Ubuntu)。

    2. 不显示Windows启动项的原因

    Ubuntu的GRUB配置中,默认禁用了os-prober工具,该工具用于探测系统中其他可引导的操作系统(如Windows),因此GRUB无法识别并添加Windows启动项,进而无法切换到Windows。

    二、解决步骤

    全程无需修改BIOS,安全启动保持关闭即可

    步骤1:临时验证Windows是否可被探测

    首先在Ubuntu终端执行下面命令:

    sudo os-prober

    如果输出类似下面内容,说明系统已经识别到Windows:

    /dev/nvme0n1p1@/EFI/Microsoft/Boot/bootmgfw.efi:Windows Boot Manager:Windows:efi

    步骤2:修改GRUB配置文件,开启菜单并启用os-prober

    打开GRUB配置文件:

    sudo nano /etc/default/grub

    进入文件后,修改三项配置,直接复制粘贴下面三行替换原有对应行:

    GRUB_TIMEOUT=10
    GRUB_TIMEOUT_STYLE=menu
    GRUB_DISABLE_OS_PROBER=false

    配置说明:

    • GRUB_TIMEOUT=10:开机菜单停留10秒,足够选择系统
    • GRUB_TIMEOUT_STYLE=menu:强制显示GRUB菜单,不再隐藏
    • GRUB_DISABLE_OS_PROBER=false:允许GRUB自动探测Windows系统

    编辑完成:
    按 Ctrl+X → 按 Y → 回车 保存退出。

    步骤3:更新GRUB配置生效

    sudo update-grub

    正常会输出类似:

    Found Windows Boot Manager on /dev/nvme0n1p1@/EFI/Microsoft/Boot/bootmgfw.efi
    Adding boot menu entry for UEFI Firmware Settings …
    done

    步骤4:重启验证

    reboot

    开机就能看到GRUB菜单停留10秒,选项如下:

    • Ubuntu
    • Advanced options for Ubuntu
    • Windows Boot Manager

    上下键选中 Windows 回车即可进入。

    三、进阶:设置默认启动系统

  • 先记住GRUB菜单序号(从0开始)
    一般顺序:
    0:Ubuntu
    1:高级选项
    2:Windows Boot Manager

  • 再次打开配置文件

  • sudo nano /etc/default/grub

  • 修改默认项
  • GRUB_DEFAULT=saved

    改成(Windows是第2项就写2):

    GRUB_DEFAULT=2

  • 保存并更新
  • sudo update-grub

    重启后默认直接进Windows。

    四、常见报错日志分析与解决方案

    报错1

    Warning: os-prober will not be executed to detect other bootable partitions

    原因:禁用了系统探测功能。

    解决:

  • 编辑配置
  • sudo nano /etc/default/grub

  • 确保是下面这行(去掉前面#号)
  • GRUB_DISABLE_OS_PROBER=false

  • 更新配置
  • sudo update-grub

    报错2:执行 os-prober 无任何输出

    原因:

    • Windows EFI分区未挂载
    • Ubuntu和Windows引导模式一个UEFI、一个Legacy

    解决:

    ls /sys/firmware/efi
    lsblk
    sudo mkdir -p /mnt/efi
    sudo mount /dev/nvme0n1p1 /mnt/efi
    sudo os-prober

    报错3:改完配置仍不显示Windows

    sudo grub-mkconfig -o /boot/grub/grub.cfg

    重启测试,不行就看后面Live USB救援方案。

    五、一键修复脚本(懒人必备)

    新建 fix_grub.sh,粘贴以下全部代码:

    #!/bin/bash
    # 备份原始GRUB配置文件,防止修改错误无法恢复
    sudo cp /etc/default/grub /etc/default/grub.bak
    echo "已备份原始GRUB配置文件为/etc/default/grub.bak"

    # 自动修改GRUB配置文件:启用os-prober、设置菜单停留10秒、强制显示菜单
    sudo sed -i 's/^#GRUB_DISABLE_OS_PROBER=false/GRUB_DISABLE_OS_PROBER=false/' /etc/default/grub
    sudo sed -i 's/GRUB_TIMEOUT=.*/GRUB_TIMEOUT=10/' /etc/default/grub
    sudo sed -i 's/GRUB_TIMEOUT_STYLE=.*/GRUB_TIMEOUT_STYLE=menu/' /etc/default/grub
    echo "已修改GRUB配置文件,启用os-prober并设置菜单停留时间为10秒"

    # 更新GRUB配置,使修改生效
    sudo update-grub
    echo "GRUB配置已更新,重启电脑即可生效"

    执行命令:

    chmod +x fix_grub.sh
    sudo ./fix_grub.sh
    sudo reboot

    六、极端情况:修改GRUB后系统无法启动(Live USB救援)

    前提准备

  • 准备和你同版本的Ubuntu镜像,制作UEFI模式U盘启动盘
  • 插入故障电脑,U盘启动,选择 Try Ubuntu without installing
  • 救援操作

    进入试用桌面,打开终端依次执行:

    lsblk
    sudo mount /dev/nvme0n1p5 /mnt
    sudo mount /dev/nvme0n1p1 /mnt/boot/efi

    sudo mount –bind /dev /mnt/dev
    sudo mount –bind /proc /mnt/proc
    sudo mount –bind /sys /mnt/sys

    sudo chroot /mnt

    恢复原有配置:

    cp /etc/default/grub.bak /etc/default/grub

    重新更新引导:

    sudo update-grub
    sudo grub-install /dev/nvme0n1

    退出并重启:

    exit
    sudo umount /mnt/boot/efi
    sudo umount /mnt/dev
    sudo umount /mnt/proc
    sudo umount /mnt/sys
    sudo umount /mnt
    sudo reboot

    拔掉U盘,正常双系统恢复。

    七、总结

  • 菜单一闪而过:修改 GRUB_TIMEOUT、GRUB_TIMEOUT_STYLE
  • 不显示Windows:开启 GRUB_DISABLE_OS_PROBER=false 并 update-grub
  • 改坏引导进不去系统:用Ubuntu Live USB chroot救援恢复
  • 补充说明

    • 适配 Ubuntu 20.04 / 22.04 / 24.04 所有版本
    • 每次改完grub配置必须执行 sudo update-grub 才生效
    • 双系统建议安全启动保持关闭,不要随意进BIOS改动
    • 修改grub前最好备份配置文件,防止引导损坏
    赞(0)
    未经允许不得转载:171主机测评 » Ubuntu+Windows双系统:解决GRUB不显示Windows启动项、一闪而过问题
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址