在windows中为双系统增加引导启动入口

3,420 阅读5分钟

问题的起源有点长,现象就是现在我的双系统开机能正常出现启动引导,但是不管选哪个选项都只能进Windows10,无法进已经安装在本机的Fedora Linux了。能确定Fedora是能够正常运行的,我自然就想到在启动引导中增加一个Linux的入口就行了。

需要先明确一些前提知识:

  • 当前双系统是Windows10和Fedora36;
  • 只有一个磁盘
  • 磁盘采用GPT模式 // 只需了解它比传统的MBR模式更强大更通用就行了

于是在网上搜索了一番,找到两种方法:

  1. 用一个叫作EasyBCD的软件工具,图形化操作添加一个Linux的引导入口。
  2. 用win10本机自带的BCDEdit命令行工具,手动添加一个引导入口。

方法1确定是不好使的,安装EasyBCD2.4后“添加新条目”居然是灰的,无法操作?!无奈只好使用第二种方法。

第二种方法就需要预先知道fedora系统安装的分区编号、怎么在windows10中查找分区编号、获取这个分区的GUID;同时创建一个引导条目,会得到一个GUID,将这个GUID和我们已有的fedora分区信息关联起来。

看似简单,但网上windows的信息十分杂乱,好多命令和操作都不起作用,正好通过这篇文章进行一个记录。

查找分区信息

点击win10系统开始菜单,直接输入“cmd”,右键点击“以管理员身份运行”,进行命令行界面;

输入diskpart, 进入类似数据库客户端的命令行界面;

DISKPART> list disk

  磁盘 ###  状态           大小     可用     Dyn  Gpt
  --------  -------------  -------  -------  ---  ---
  磁盘 0    联机              489 GB  1024 KB        *

表明我们磁盘硬件只有一个,如果插入U盘就会出现另一行内容。

DISKPART> select disk 0

磁盘 0 现在是所选磁盘。

选择磁盘0作为当前磁盘;

然后罗列分区:

DISKPART> list partition

  分区 ###       类型              大小     偏移量
  -------------  ----------------  -------  -------
  分区      1    恢复                 499 MB  1024 KB
  分区      2    系统                 100 MB   500 MB
  分区      3    保留                  16 MB   600 MB
  分区      4    主要                  58 GB   616 MB
  分区      5    恢复                 604 MB    58 GB
  分区      6    主要                  49 GB    59 GB
  分区      7    主要                  50 GB   109 GB
  分区      8    未知                4096 MB   159 GB
  分区      9    未知                 325 GB   163 GB

除了系统的C盘,D盘,E盘,隐藏分区和windows启动分区之外,还包括了fedora的启动分区和系统分区。

想知道哪个是C盘,D盘? 这个结果可以通过“此电脑” -> 右键“管理” -> "磁盘管理" 可视化查看。

DISKPART> select partition 8

分区 8 现在是所选分区。

选择8分区作为当前分区;我们需要预先知道哪个分区是linux的启动分区。

DISKPART> detail partition

分区 8
类型    : 0fc63daf-8483-4772-8e79-3d69d8477de4
隐藏  : 是
必需: 否
属性  : 0000000000000000
字节偏移: 171128651776

没有跟这个分区相关联的卷。

通过这个命令我们知道了分区8的GUID为{0fc63daf-8483-4772-8e79-3d69d8477de4}

创建引导入口

这一部分网上信息特别杂乱,有各种写法,好多根本不好使,为避免误导,直接给出在本机上正确运行的所有命令。

首先点击win10系统开始菜单,直接输入“cmd”,右键点击“以管理员身份运行”,进行命令行界面;然后输入以下命令:

bcdedit /create /d "fedora36" /application BOOTSECTOR
# 命令生产新的入口GUID {84f1af19-d06c-11ed-bef9-0c54157c1bad}

bcdedit /set {84f1af19-d06c-11ed-bef9-0c54157c1bad} device partition=\Device\Harddisk0\Partition8
# 运行成功应当提示“操作完成”。

bcdedit /set {84f1af19-d06c-11ed-bef9-0c54157c1bad} path \EFI\fedora\shimx64.efi
# 运行成功应当提示“操作成功完成。”。

bcdedit /displayorder {84f1af19-d06c-11ed-bef9-0c54157c1bad} /addlast
# 运行成功应当提示“操作成功完成。”。

exit

其中最关键的是第2步操作:让新生成的引导入口和分区关联起来。有很多种写法:bcdedit /set {GUID} device partition=8, bcdedit /set {GUID} device partition=8:,还有的是bcdedit /set {default} device partition=8,不知怎么的用了一个固定引用{default}来表示了新创建的GUID;还有一种是bcdedit /set {GUID} device partition=\Device\HarddiskVolume1,这也不对,Volume只针对像“C盘”这种有盘符的“卷”,而我们用到的分区是另外一种系统的格式。但是在结果展示的时候却显示的是HarddiskVolume8,不明所以:

bcdedit /enum

实模式启动扇区
---------------------
标识符                  {84f1af1a-d06c-11ed-bef9-0c54157c1bad}
device                  partition=\Device\HarddiskVolume8
path                    \EFI\fedora\shim.efi
description             fedora36

第3步操作中的path选取也要注意。如果安装的是默认的fedora bootloader,用shimx64.efi;如果用GRUB2作为bootloader需要用grubx64.efi

终于成功添加了一个启动入口,但是进入Feodra还是没成功,真让人崩溃!不过这个操作过程将来还是可以参考的。

1433955112.jpg

如果不再需要这个启动入口,再以相同方式在命令行中运行:

bcdedit /delete  {84f1af1a-d06c-11ed-bef9-0c54157c1bad} /cleanup