误删Windows启动管理器后,os-prober检测到Windows但update-grub无法添加启动项的修复求助
误删Windows启动管理器后,os-prober检测到Windows但update-grub无法添加启动项的修复求助
兄弟,我完全懂你这种急得抓耳挠腮的感觉——明明os-prober已经找到Windows启动管理器了,结果update-grub就是不把它加到启动菜单里,太闹心了。咱们一步一步来解决这个问题:
第一步:启用GRUB的os-prober检测功能
你看到的警告提示Warning: os-prober will not be executed to detect other bootable partitions已经点明了核心问题:GRUB默认禁用了os-prober检测。虽然你说/etc/default/grub里没找到GRUB_DISABLE_OS_PROBER,但咱们手动添加并启用它就行:
- 打开终端,用nano编辑器修改GRUB配置文件:
sudo nano /etc/default/grub - 在文件的最后一行添加:
GRUB_DISABLE_OS_PROBER=false - 按
Ctrl+O保存修改,再按Ctrl+X退出编辑器。
第二步:重新生成GRUB启动配置
现在重新运行update-grub,这次os-prober就会被正常执行了:
sudo update-grub
运行完成后,你应该能在输出里看到类似Found Windows Boot Manager: /dev/nvme0n1p1@/EFI/Microsoft/Boot/bootmgfw.efi的提示,这就说明Windows启动项已经成功添加到GRUB菜单里了,重启电脑就能看到选项。
如果自动添加失败?试试手动配置Windows启动项
有时候自动检测可能出点小问题,咱们手动来添加:
- 先挂载Windows的EFI分区(你之前os-prober已经识别出是
/dev/nvme0n1p1):sudo mkdir /mnt/windows-efi sudo mount /dev/nvme0n1p1 /mnt/windows-efi - 编辑GRUB的自定义启动项配置文件:
sudo nano /etc/grub.d/40_custom - 在文件末尾添加以下内容(注意
hd0,gpt1对应你的/dev/nvme0n1p1,如果你的系统磁盘不是hd0,可以用lsblk命令确认磁盘顺序):menuentry "Windows 10" { insmod part_gpt insmod fat insmod chain set root='hd0,gpt1' chainloader /EFI/Microsoft/Boot/bootmgfw.efi } - 保存退出后,再次运行
sudo update-grub,重启后就能看到Windows的启动选项了。
终极方案:直接恢复Windows(可移除Ubuntu)
要是你不想再折腾Ubuntu了,只想回到纯Windows系统,也很简单:
- 准备一个Windows 10安装U盘(没有的话可以用另一台电脑制作),插入电脑后从U盘启动。
- 进入安装界面后,点击“修复计算机” -> “疑难解答” -> “高级选项” -> “命令提示符”。
- 在命令提示符里依次输入以下命令(注意替换对应盘符):
这里的diskpart list disk select disk 0 # 选择你的系统磁盘,就是包含Windows分区的那一个 list volume select volume X # 选择EFI分区,一般是FAT32格式,容量几百MB assign letter=Z: # 给EFI分区分配一个临时盘符Z exit bcdboot C:\Windows /s Z: /f UEFIC:要换成你的Windows系统所在的分区盘符,执行完后重启电脑,就能直接进入Windows了。之后你可以在Windows的“磁盘管理”里格式化Ubuntu的分区,回收存储空间。
备注:内容来源于stack exchange,提问作者Minhdepzai
相关产品推荐
相关产品推荐

