EndeavourOS安装后GRUB菜单无法显示Windows 10选项的求助
我在安装EndeavourOS之后,GRUB启动菜单里完全看不到Windows 10的选项,尝试了以下操作但都没解决:
- 执行
sudo os-prober命令,没有返回任何结果,哪怕已经把GRUB_DISABLE_OS_PROBER=false配置项修改好了 - 手动在
/etc/grub.d/40_custom里添加了Windows 10的自定义启动项,内容如下:
menuentry "Windows 10" { insmod ntfs set root=(/dev/sda2) # Modify this to match your Windows partition chainloader +1 }
我的磁盘分区信息(fdisk -l输出)如下:
Disk model: ST1000DM010-2EP1
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: 4E017D50-896E-423C-909A-2D92EDBB31F8Device Start End Sectors Size Type
/dev/sda1 2048 923647 921600 450M Windows recovery environm
/dev/sda2 923648 1128447 204800 100M EFI System
/dev/sda3 1128448 1161215 32768 16M Microsoft reserved
/dev/sda4 1161216 274300927 273139712 130.2G Microsoft basic data
/dev/sda5 ...(内容截断)
问题分析与解决方案
从你的分区信息来看,这是GPT分区表的磁盘,Windows 10是EFI模式安装的,你的自定义启动项配置有问题,而且os-prober没检测到也大概率是EFI分区没有正确挂载导致的,下面一步步来解决:
1. 先确保EFI分区正确挂载
EndeavourOS安装后,EFI分区(也就是你的/dev/sda2)需要挂载到/boot/efi目录下,否则os-prober无法检测到Windows的EFI引导文件:
- 先查看当前挂载情况:
lsblk -f,确认/dev/sda2是否挂载到了/boot/efi - 如果没挂载,手动挂载:
sudo mkdir -p /boot/efi sudo mount /dev/sda2 /boot/efi - 为了开机自动挂载,编辑
/etc/fstab文件,添加一行(用blkid /dev/sda2获取分区UUID替换占位符):UUID=<你的sda2的UUID> /boot/efi vfat defaults 0 1
2. 修复os-prober检测问题
挂载好EFI分区后,重新运行os-prober:
sudo os-prober
如果还是没结果,试试安装ntfs-3g(Windows分区是NTFS格式,os-prober可能依赖这个工具):
sudo pacman -S ntfs-3g
安装完成后再重新运行sudo os-prober,应该能检测到Windows 10了。
3. 修正自定义GRUB启动项(如果os-prober依旧无效)
你的自定义项有两个关键问题:EFI模式的Windows不需要加载ntfs模块,也不该直接指定/dev/sda2为root,正确的配置应该指向Windows的EFI引导文件:
menuentry "Windows 10 (EFI)" { insmod part_gpt insmod fat set root='hd0,gpt2' # hd0对应第一块磁盘,gpt2对应你的EFI分区/dev/sda2 chainloader /EFI/Microsoft/Boot/bootmgfw.efi }
用UUID的方式更可靠(同样替换成sda2的UUID):
menuentry "Windows 10 (EFI)" { insmod part_gpt insmod fat set root='UUID=<你的sda2的UUID>' chainloader /EFI/Microsoft/Boot/bootmgfw.efi }
4. 更新GRUB配置
不管是os-prober检测到了系统,还是手动修改了自定义项,最后都要更新GRUB配置:
sudo grub-mkconfig -o /boot/grub/grub.cfg
重启电脑后,GRUB菜单里应该就能看到Windows 10的选项了。
另外补充一点:要确保你安装EndeavourOS时用的也是EFI模式(可以通过查看/sys/firmware/efi目录是否存在判断),如果一个系统是BIOS模式、另一个是EFI模式,GRUB也无法跨模式检测到系统。
备注:内容来源于stack exchange,提问作者Andy Longbottom

