在单独的 HDD 上双启动 Windows 和 Linux - 错误:没有此类设备

在单独的 HDD 上双启动 Windows 和 Linux - 错误:没有此类设备

我按照在线教程在单独的 HDD 上安装 Windows 10 和 Linux (Arch)。这涉及到在物理上断开每个硬盘的连接,同时在另一个硬盘上安装操作系统。

我发现的唯一没有答案“使用启动修复”的线程是这个除非我已经安装了Linux。

下面是我的步骤。

  1. 在 BIOS 中禁用快速启动并启用 UEFI
  2. 创建 W10 和 ArchLabs 的 UEFI 兼容实时图像
  3. 断开HDD0,将W10 Home安装到HDD1上
  4. 断开 HDD1,将 ArchLabs 安装到 HDD0 - grub 是启动管理器
  5. 连接 HDD1,使用 BIOS 启动到 HDD0 - 仅 ArchLabs 被列为启动选项
  6. 跑步grub-mkconfig -o /boot/grub/grub.cfg更新grub) - 找到 Windows

哪个输出

Generating grub configuration file ...
Found linux image: /boot/vmlinuz-linux
Found initrd image: /boot/initramfs-linux.img
Found fallback initrd image(s) in /boot: initramfs-linux-fallback.img
Found Windows Boot Manager on /dev/sdb2@/efi/Microsoft/Boot/bootmgfw.efi
Found memtest86+ image: /boot/memtest86+/memtest.bin
done

当我在 BIOS 中启动 HDD0 时,我在 grub 中看到 Windows 选项,但是当我选择它时,出现此错误

error: no such device: FA77-02BF.
error: disk `hd1,gpt2' not found.

Press any key to continue...

一些信息

$sudo blkid
/dev/sda1: UUID="EFA1-BD6C" TYPE="vfat" PARTUUID="f1abfa2e-8f5e-4569-88a7-ebd5ebd1a737"
/dev/sda2: UUID="a43046c3-84ec-4308-9eaf-a872f1c4300d" TYPE="ext4" PARTUUID="c1a4e499-919d-4194-890f-459418430422"
/dev/sdb1: LABEL="Recovery" UUID="58CC724CCC722482" TYPE="ntfs" PARTLABEL="Basic data partition" PARTUUID="78b687ea-65f2-4c5a-9e2e-211c28298378"
/dev/sdb2: UUID="FA77-02BF" TYPE="vfat" PARTLABEL="EFI system partition" PARTUUID="149fbe08-56e3-4dd7-9dde-b60e668a2253"
/dev/sdb4: UUID="50F28160F2814AE4" TYPE="ntfs" PARTLABEL="Basic data partition" PARTUUID="1e767b54-5723-4d51-889a-48108c2547fe"
/dev/sdb3: PARTLABEL="Microsoft reserved partition" PARTUUID="be54b5e0-7701-473a-aa31-bbc8919d62ae"

fstab 尚未安装,sdb但我不确定是否需要安装?

$cat /etc/fstab
# /dev/sda2
UUID=a43046c3-84ec-4308-9eaf-a872f1c4300d   /           ext4        rw,relatime,data=ordered    0 1

# /dev/sda1
UUID=EFA1-BD6C          /boot/efi   vfat        rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro   0 2

/swapfile   none        swap        defaults,pri=-2 0 0

我认为问题在于每个硬盘都有自己的EFI分区。

$fdisk -l
Disk /dev/sda: 298.1 GiB, 320072933376 bytes, 625142448 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 558CB70E-9540-49A2-87E9-728B9C3CDB16

Device       Start       End   Sectors   Size Type
/dev/sda1     2048   1050623   1048576   512M EFI System
/dev/sda2  1052672 625141759 624089088 297.6G Linux filesystem


Disk /dev/sdb: 465.8 GiB, 500107862016 bytes, 976773168 sectors
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: 0676ACB7-16B9-4BBC-8030-D26B229EEF78

Device       Start       End   Sectors   Size Type
/dev/sdb1     2048   1023999   1021952   499M Windows recovery environment
/dev/sdb2  1024000   1228799    204800   100M EFI System
/dev/sdb3  1228800   1261567     32768    16M Microsoft reserved
/dev/sdb4  1261568 976773119 975511552 465.2G Microsoft basic data

目前,我可以使用 BIOS 选择我想要启动的 HDD,然后使用该 HDD 启动管理器来启动其各自的操作系统。当然,如果每次 BIOS 都启动到同一个驱动器就好了,这样我就可以通过 GRUB 选择操作系统。

答案1

如果您想在 2 个独立的硬盘上安装 Windows 和 Arch:

  1. 最简单的解决方案是在 UEFI 模式下安装一个操作系统(如果 Win8 或 10 在 UEFI 模式下安装),在 BIOS 模式下安装另一个操作系统,并在其中一个和另一个之间切换
    :转至 BIOS/UEFI 菜单
    b.更改启动模式
    C.重启
  2. 如果您正在考虑使用 Win7 或更早版本:请在 BIOS 模式下安装并弄清楚grub
  3. 如果您坚持对两者都使用 UEFI,您应该知道一台计算机被设计为具有一个(且只有一个)UEFI 分区,因此您应该
    :在两个硬盘上保持相同的 UEFI 分区(只需将第一个硬盘的所有文件复制到第二个硬盘,将第二个硬盘的所有文件复制到第一个硬盘,因为它只是一个 分区FAT
    让启动由 Windows 10 启动管理器以外的其他工具完成,grub然后您需要类似的东西酶标仪这就是我运行的方式:第一个 SSD 中的 Windows 10,Linux(在我的例子中是 Ubuntu,但 Arch 和 Ubuntu 都使用grub,所以没有区别),我的两个efi分区都是相同的,我认为辅助efi分区是备份第一个并隐藏 rEFInd 菜单中的重复条目。我经常到dd1 c 。知道 rEFInd/dev/sda1/dev/sdb1
    不支持BIOS所以你可能需要安装一个电喷外壳并手动更改 UEFI NVRAM 中的启动设置,使 rEFInd 成为第一个启动的(这就是我最终所做的;不要忘记将 rEFInd 作为启动优先级 0 中第一个 HDD 上的主启动管理器并且 rEFInd 也作为第二块硬盘上的辅助启动管理器,启动优先级为 1!

你必须读很多书,包括一些UEFI联盟的文档,但你会学到很多东西并且可以做到! (明显地... ;-)注意 1:是的,这不是一个正确的命令,我知道:我不会dd在我的任何答案中放入通用命令,这在isk estroyer 绰号dd下最为人所知。DD:-)
注²:由于您没有解释为什么要尝试这样做:如果其中一个硬盘驱动器出现故障,则无法再访问另一个操作系统,因为它只存在于其中一个硬盘驱动器上,即使您有重复的efi分区也是如此,因此,如果您正在寻求恢复能力,请改用 RAID1。
注意 ³:我想确保该EFI分区已备份到未真正设置 rEFInd 的第二个 SSD 上,并确保 Windows 启动管理器已决不搞乱 GRUB。

相关内容