使用 GRUB 双启动 Arch 和 Windows 10

使用 GRUB 双启动 Arch 和 Windows 10

我已经使用 Ubuntu 一段时间了,最​​近决定开始使用 Arch。我的系统中有 120GB SSD 和 1TB HDD。在 SSD 上安装 Arch 时,我创建了 /boot /home /(根)分区以及交换分区。我还使用默认分区在 HDD 上安装了 Windows 10。我希望能够在两个操作系统之间进行双启动。我在 SSD 上的 /dev/sda 上安装了 GRUB,但现在当我启动到 GRUB 时,我只看到启动到 Arch 的选项,而不是 Windows。我想知道如何通过 GRUB 启动到 Windows。

我有一个默认的“/etc/grub.d/40_custom”文件:

#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries
.  Simply type the
# menu entries you want to add after this comment.  Be care
ful not to change
# the 'exec tail' line above.

当我运行“lsblk”时,我得到:

NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0 111.8G  0 disk 
├─sda1   8:1    0   200M  0 part /boot
├─sda2   8:2    0    12G  0 part [SWAP]
├─sda3   8:3    0    25G  0 part /
└─sda4   8:4    0  74.6G  0 part /home
sdb      8:16   0 931.5G  0 disk 
├─sdb1   8:17   0   499M  0 part 
├─sdb2   8:18   0   100M  0 part 
├─sdb3   8:19   0    16M  0 part 
└─sdb4   8:20   0 930.9G  0 part

运行“fdisk -l”得到以下结果:

Disk /dev/sdb: 931.5 GiB, 1000204886016 bytes, 1953525168 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: 47A5839B-C531-4BEE-A083-BD0C5CF4524A

Device       Start        End    Sectors   Size Type
/dev/sdb1     2048    1023999    1021952   499M Windows rec
/dev/sdb2  1024000    1228799     204800   100M EFI System
/dev/sdb3  1228800    1261567      32768    16M Microsoft r
/dev/sdb4  1261568 1953523711 1952262144 930.9G Microsoft b


Disk /dev/sda: 111.8 GiB, 120034123776 bytes, 234441648 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: dos
Disk identifier: 0x1c797ba1

Device     Boot    Start       End   Sectors  Size Id Type
/dev/sda1           2048    411647    409600  200M 83 Linux
/dev/sda2         411648  25577471  25165824   12G 83 Linux
/dev/sda3       25577472  78006271  52428800   25G 83 Linux
/dev/sda4       78006272 234441647 156435376 74.6G 83 Linux

任何帮助都将不胜感激,谢谢!

答案1

正如所描述的这里,您需要执行以下操作(必须在 Arch OS 上以 root 身份执行以下操作):

从您的输出中我可以假设它/dev/sdb2似乎是您的 Windows-Bootloader,因此第一步将是:

$ mkdir /mnt/windows
$ mount /dev/sdb2 /mnt/windows
$ grub-probe --target=fs_uuid /mnt/windows/EFI/Microsoft/Boot/bootmgfw.efi

将最后一个命令的输出复制到文件并继续:

$ grub-probe --target=hints_string /mnt/windows/EFI/Microsoft/Boot/bootmgfw.efi

还将输出复制到文件。之后运行以下命令卸载分区

$ umount /mnt/windows
$ rmdir /mnt/windows

之后使用您喜欢的编辑器打开文件/boot/grub/custom.cfg并添加以下行:

if [ "${grub_platform}" == "efi" ]; then
    menuentry "Microsoft Windows Vista/7/8/8.1 UEFI/GPT" {
        insmod part_gpt
        insmod fat
        insmod search_fs_uuid
        insmod chain
        search --fs-uuid --set=root $hints_string $fs_uuid
        chainloader /EFI/Microsoft/Boot/bootmgfw.efi
    }
fi

$hints_string第二个输出在哪里,$fs_uuid第一个输出在哪里。

至少运行这个来更新你的 Grub:

$ grub-mkconfig -o /boot/grub/grub.cfg

重启后,你的 Grub 应该包含 Windows 的条目,有关如何配置 Grub 的更多信息,请参阅

相关内容