我已经使用 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 的更多信息,请参阅页