安装双系统后,grub找不到Windows选项的解决办法

1 问题描述

        电脑上先安装了Windows10,后安装了Ubuntu22.04,在进入grub界面后找不到Windows选项(“Windows 10”,“Windows Boot Manager”等)。

        而且,在ubuntu下,更新了grub, 即运行

sudo update-grub

之后也没用。

2 问题解决

        经过一段时间折腾后,我认为最直接的方法就是修改grub配置:
        在网上看到修改/boot/grub/grub.cfg 这一文件的方法,但是这种办法不是很好,因为文件里已经有提示:不要修改该文件!

而且也不稳定(update-grub之后文件中你修改的部分就消失了)。
        这里我修改的是/etc/grub.d/40_custom 这一文件。在这个文件中,可添加自定义启动项。你可以用gedit或者kate这样的图形化程序打开,也可以在终端中用vim,nano等命令:

sudo vim /etc/grub.d/40_custom 
sudo nano /etc/grub.d/40_custom 
# 以上二者选其一

        在文件最后另起一行,添加下述内容:

menuentry 'Win10' {
set root='(hd0,msdos1)'
chainloader +1
}

        这里启动项的名字是“Win10”,可以改成你想要的其他名字。上面的(hd0,msdos1)是Windows启动引导文件的所在分区,请根据自身情况修改,具体看是在哪个分区,接下来会讲方法。

        注意:修改这个文件会用到管理员权限。修改过后,运行

sudo update-grub

来更新grub配置,这之后重启系统即可在grub中看到启动项“Win10”,选择进入,然后即可成功启动Windows。

        我的电脑是legacy启动模式,如果是UEFI,情况有所不同。同样打开

/etc/grub.d/40_custom,在其中添加以下内容:

menuentry 'Win10' {
set root='(hd0,gpt1)'
chainloader /EFI/MICROSOFT/BOOT/bootmgfw.efi
}

        同理,(hd0,gpt1)是Windows启动引导的EFI文件的所在分区,也请根据自身情况修改。

3 找到引导分区编号的方法

        前面提到了,在修改文件时会添加对应引导分区的编号,这个编号需要在grub命令行下获取。

        在启动时,进入grub菜单后,按“C”键进入命令行模式,输入

ls -lh

可以查看到当前电脑上所有磁盘和分区,使用命令

ls -lh (hdx,msdosy)
# (x,y 的值可能是0,1,2,3等等)

一个一个找,如果发现某一个分区下,有bootmgr文件,那么就是这个分区了,记下其编号。
        如果是UEFI,同理,只不过“msdos”可能会变成“gpt”, 如果发现EFI,接下来用命令

ls -lh (hdx,msdosy)/EFI/

如果发现MICROSOFT,那就可以确定这个是引导Windows的EFI分区了,记下这个分区的编号。

        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值