如何将 Windows 10 从另一个 NVME 驱动器添加到 systemd-boot loader 条目?

如何将 Windows 10 从另一个 NVME 驱动器添加到 systemd-boot loader 条目?

我尝试根据以下内容更新 systemd-boot 配置:https://wiki.archlinux.org/index.php/systemd-boot

我正在尝试将 Windows 10 添加到我的启动菜单。这是我的驱动器:

    kaisellgren@pop-os:~$ lsblk
    NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
    sda           8:0    0 931,5G  0 disk
    ├─sda1        8:1    0   128M  0 part
    └─sda2        8:2    0 931,4G  0 part
    sdb           8:16   0 931,5G  0 disk
    ├─sdb1        8:17   0    16M  0 part
    ├─sdb2        8:18   0   600M  0 part /boot/efi
    └─sdb3        8:19   0 930,9G  0 part /
    nvme0n1     259:0    0 465,8G  0 disk
    ├─nvme0n1p1 259:1    0   499M  0 part
    ├─nvme0n1p2 259:2    0    99M  0 part
    ├─nvme0n1p3 259:3    0    16M  0 part
    └─nvme0n1p4 259:4    0 465,2G  0 part

正如你所看到的,我的启动SATA3驱动器是sdb(分区sdb2)。

我的/EFI/Microsoft/Boot/bootmgfw.efi引导加载程序位于分区 2 的 nvme0n1 驱动器中(我检查过)。

所以我创建了这个:

kaisellgren@pop-os:~$ sudo cat /boot/efi/loader/entries/windows.conf
title Windows
efi /EFI/Microsoft/Boot/bootmgfw.efi
options root=UUID=4C58-E6DF

我从这里获得了根驱动器 UUID:

kaisellgren@pop-os:~$ ls -l /dev/disk/by-uuid/
total 0
lrwxrwxrwx 1 root root 10 Jul 10 18:53 02165C56165C4D33 -> ../../sda2
lrwxrwxrwx 1 root root 15 Jul 10 18:53 160469B004699391 -> ../../nvme0n1p4
lrwxrwxrwx 1 root root 15 Jul 10 18:53 3C025449025409F2 -> ../../nvme0n1p1
lrwxrwxrwx 1 root root 15 Jul 10 18:53 4C58-E6DF -> ../../nvme0n1p2
lrwxrwxrwx 1 root root 10 Jul 10 18:53 5B44-2C7F -> ../../sdb2
lrwxrwxrwx 1 root root 10 Jul 10 18:53 646d95a4-1bb4-45c0-96bc-3ee20c4b4211 -> ../../sdb3

这是我的加载器配置:

kaisellgren@pop-os:~$ sudo cat /boot/efi/loader/loader.conf
default Pop_OS-current
timeout 5

当我启动电脑时,我会看到启动菜单有两个选项:当前的 PopOS 和旧的 PopOS。我在列表中没有看到 Windows 条目。我究竟做错了什么?如果我更改超时参数,它会影响启动菜单,因此我肯定会编辑正确的配置文件。

感谢您提前提供的所有帮助!

答案1

很长一段时间后,我找到了一个解决方案,启动到你的 Linux 分区,将你的 Windows EFI 分区挂载到一个文件夹中,将 Microsoft 文件夹复制到/boot/EFI/(在你的 Linux 机器上),这样就可以了。

手动将 windows.conf 添加到加载器条目的问题中描述的过程对我来说不是必需的。

这是最初提到的详细复制过程:

sudo fdisk -l

查找大小100M和类型为 的分区EFI System。如果它与大小499M和类型为 的另一个分区位于同一磁盘上,则可以判断它是正确的Windows recovery environment。记下 EFI 分区的设备名称,例如/dev/nvme0n1p2(将其与下面的 mount 命令一起使用)。

创建一个目录并将Windows-EFI分区挂载到其中:

sudo mkdir /mnt/winefi
sudo mount /dev/nvme0n1p2 /mnt/winefi

将 boot-configuration-data (BCD) 复制到 systemd-boot EFI 菜单并卸载 windows 分区:

sudo cp -R /mnt/winefi/EFI/Microsoft/ /boot/EFI/Microsoft
sudo umount /mnt/winefi
sudo rm -rf /mnt/winefi

仅当 Arch 的 GPT/MBR/UEFI/BIOS 星座与 Windows 相同时,这一切才有效,例如Arch = GPT/UEFI无法链式加载Windows=Bios/MBRsystemd-boot 进行链式加载。请参阅维基百科

相关内容