一、基本情况
1.1、硬件情况
电脑有2个NVMe固态硬盘,1个SATA固态硬盘,1个机械硬盘。其中一个NVMe固态硬盘是Windows系统盘,另一个NVMe固态为Windows软件和文件盘,SATA固态硬盘为Ubuntu专用,机械硬盘为数据备份盘。
1.2、软件情况
电脑已经安装Windows 11操作系统,之前已有Ubuntu 20系统,清除掉之前的Ubuntu系统安装Ubuntu 22系统。
1.3、问题概述
在升级Ubuntu系统时候,未选择与其他系统共存的选项,而是选择了清空磁盘安装,导致之前的引导丢失,之后只能在BIOS调整硬盘顺序来决定进入哪个系统,非常的麻烦。
二、问题解决
1.1、开机显示GRUB引导界面
众所周知:Windows不能引导Linux,但是Linux可以引导Windows。基于这一点,我们首先要设置BIOS先引导Ubuntu所在的磁盘,进入Ubuntu系统内。如果在开机的时候,显示GRUB引导界面(如下图所示),则直接按'c'然后跳过本步,如果不显示,则继续看本步。
如果不出现此界面,则进入Ubuntu系统,更改/etc/default/grub文件。
sudo vi /etc/default/grub
编辑将grub文件,1、GRUB_TIMEOUT_STYLE=hidden行注释掉;2、更改GRUB_TIMEOUT和GRUB_CMDLINE_LINUX_DEFAULT。如下图所示:
# GRUB_TIMEOUT_STYLE=hidden
GRUB_TIMEOUT="6"
GRUB_CMDLINE_LINUX_DEFAULT="text #quiet splash"
其中GRUB_TIMEOUT意思是无操作情况下界面停留时常。修改完毕之后,保存后重启电脑即可进入GRUB引导菜单选择界面。
1.2、找到Windows引导文件
众所周知:Windows引导文件名为bootmgfw.efi,一般在EFI/Microsoft/Boot/路径下。我们进入到GRUB引导界面时,按下'c'进入到命令行模式。如下图所示。
基本命令,ls展示此目录下所有文件;table自动补全。这两个就够用了。
可以看到类似于(hd0)(hd1)这样的,就是系统的盘符,我们需要找到bootmgfw.efi文件。最简单的办法就是穷举,一个一个找,我这因为是四个硬盘,所以内容比较多。
可以看到终于找到了这个文件,记住这个路径,然后输入以下命令(路径因人而异),然后回车。
chainloader (hd2,msdos1)/EFI/Microsoft/Boot/bootmgfw.efi
在输入boot命令,回车,此时会引导系统进入Windows,如果你系统成功进入Windows,则说明此路径是对的。记住此路径(最好拍照记录)
1.3、向grub.cfg中添加menuentry
进入到Ubuntu系统,编辑grub.cfg文件。
sudo vim /boot/grub/grub.cfg
新增Windows引导(根据第二步得出的结果,因人而异)
menuentry 'Windows 11'{
chainloader (hd2,msdos1)/EFI/Microsoft/Boot/bootmgfw.efi
}
保存后重启系统,进入系统选择菜单,即可看到新增的Windows 11选项。(如果不灵,再试一次)
选择Windows 11即可成功进入Windows系统;选择Ubuntu则可成功进入Ubuntu系统。