我有一个 250GB SSD (sda),运行 Windows 10 NTFS。第二个 1TB SSD (sdb) 具有使用 apfs 的 MacOS 10.15.7、使用 btrfs 的 Linux Mint 20 和两个使用 ext4 的备用分区。我已经安装了 rEFInd 并且多重启动一切正常。也许我很幸运,但我读了很多罗德史密斯的文档,也许还不够。两个 SSD 都是 gpt 并具有 EFI 分区。发生了一些事情,我不确定到底是什么,但现在,我只能启动 MacOS;直接(按住 alt 键),以及来自 rEFInd。 rEFInd 仍然显示正确的 3 个操作系统图标。我可以启动 Linux 和 grub 的实时 USB。我根本无法从 SSD 启动 Windows 或 Mint,但它们仍然存在。我已经运行了 grub-repair,但这似乎并没有让事情变得更好。它将 rEFInd 移至引导顺序下方,我必须使用 efibootmgr 将其放回原处。
Q1.如果有两个 SSD,如何决定哪一个获得 /EFI/rEFInd 文件夹?
Q2。为什么我的两个 SSD 上都会出现 /EFI/ubuntu 文件夹?
Q3。鉴于我的两个 SSD 和下面的文件夹,每个操作系统的正确 grub 菜单项是什么?
Q4。该列表显示了 sda 和 sdb,我可以看到它们如何等同于 hd0 和 hd1。但 live grub2 指的是 hd8,gpt3(对于 WindowsOS)和 hd9,gpt3(对于 btfrs (mint))。 8和9从哪里来?
谢谢
mint@mint:~$ sudo fdisk -l
Disk /dev/sda: 233.78 GiB, 251000193024 bytes, 490234752 sectors
Disk model: APPLE SSD SM256E
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: E38BCA08-61D9-45FC-8828-D08FD28E1A22
Device Start End Sectors Size Type FS Flags Comments
/dev/sda1 2048 206847 204800 100M EFI System fat32 boot,esp
/dev/sda2 206848 239615 32768 16M Microsoft reserved unknown msftres
/dev/sda3 239616 489196172 488956557 233.2G Microsoft basic data ntfs msftdata Windows OS
/dev/sda4 489197568 490231807 1034240 505M Windows recovery env ntfs hidden,diag
Disk /dev/sdb: 931.53 GiB, 1000204886016 bytes, 1953525168 sectors
Disk model: Samsung SSD 860
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: EF574C35-C453-45DC-9D86-1DE841DD934E
Device Start End Sectors Size Type FS Flags Comment
/dev/sdb1 40 409639 409600 200M EFI System fat32 boot,esp
/dev/sdb2 409640 585615815 585206176 279G unknown apfs MacOS Catalina
/dev/sdb3 585617408 1171347455 585730048 279.3G Linux filesystem btrfs Linux Mint
/dev/sdb4 1171347456 1562437631 391090176 186.5G Linux filesystem ext4 Spare1 not used
/dev/sdb5 1562437632 1953523711 391086080 186.5G Linux filesystem ext4 Spare2 not used
mint@mint:/mnt$ tree -L 5 -P *.efi --ignore-case sda
.
└── EFI
├── Boot
│ └── bootx64.efi
├── Microsoft
│ ├── Boot
│ │ ├── bootmgfw.efi
│ │ ├── bootmgr.efi
│ │ └── memtest.efi
│ └── Recovery
└── ubuntu
├── grubx64.efi
└── shimx64.efi
6 directories, 3 files
mint@mint:/mnt$ tree -L 5 -P *.efi --ignore-case sdb
.
└── EFI
├── APPLE
│ └── CACHES
│ └── CAFEBEEF
├── BOOT
│ ├── BOOTX64.EFI
│ ├── fbx64.efi
│ └── mmx64.efi
├── Linux
│ ├── grubx64.efi
│ ├── mmx64.efi
│ └── shimx64.efi
├── refind
│ ├── icons
│ │ └── licenses
│ ├── icons-backup
│ │ └── licenses
│ ├── keys
│ └── refind_x64.efi
├── tools
│ └── gptsync_x64.efi
└── ubuntu
├── grubx64.efi
├── mmx64.efi
└── shimx64.efi
mint@mint:/boot$ tree sdb3 Linux Mint /boot
.
├── System.map-5.4.0-26-genericefibootmgr
├── config-5.4.0-26-generic
├── grub
│ ├── gfxblacklist.txt
│ ├── grubenv
│ └── unicode.pf2
├── initrd.img -> initrd.img-5.4.0-26-generic
├── initrd.img.old -> initrd.img-5.4.0-26-generic
├── vmlinuz -> vmlinuz-5.4.0-26-generic
└── vmlinuz.old -> vmlinuz-5.4.0-26-generic
1 directory, 9 files
答案1
Q1.如果有两个 SSD,如何决定哪一个获得 /EFI/rEFInd 文件夹?
例如,如果其中一个 SSD 焊接到系统板上,另一个是可拆卸的,那么确保可拆卸 SSD 也有自己的 ESP 分区和其中相应的引导加载程序文件夹可能是有意义的,这样它就可以如果/当需要出现时,可以更容易地移植到另一个系统。
如果系统固件在检测一个 SSD 时出现问题,但可以可靠地检测另一个,那么您唯一的选择可能是使用易于检测的 SSD 来包含所有引导加载程序以及操作系统启动自己的内核和存储驱动程序所需的所有内容。
除此之外,这主要取决于您的偏好。
Q2。为什么我的两个 SSD 上都会出现 /EFI/ubuntu 文件夹?
以下之一:
如果安装程序看到多个 ESP 分区,它可能会通过将 Ubuntu 的引导加载程序添加到每个分区来确保安全。也许固件无法看到所有磁盘,或者某些磁盘是可移动的,而安装程序不知道这些磁盘可能是哪些。
grub-repair/boot-repair 可能已为您创建了一个额外的副本,因为您正在运行修复操作,其中一个磁盘上的初始安装可能由于某种原因无法正常工作。
Q3。鉴于我的两个 SSD 和下面的文件夹,每个操作系统的正确 grub 菜单项是什么?
MacOS 可能无法通过 GRUB 启动,因为它似乎使用 GRUB 尚不支持的 APFS。在引入 APFS 之前,所需的 GRUB 菜单项如下所示:
menuentry "OS X" {
insmod hfsplus
search --set=root --file /System/Library/CoreServices/boot.efi
chainloader /System/Library/CoreServices/boot.efi
}
不幸的是,您没有包含各种文件系统的正确文件系统 UUID 的输出sudo blkid
或其中lsblk -o +UUID
包含的输出。您也没有识别您的 Linux 根文件系统:我猜它是/dev/sdb4
或/dev/sdb5
。
对于 Windows,最小的 GRUB 启动条目可能如下所示:
menuentry 'Windows Boot Manager' {
insmod part_gpt
insmod fat
search --no-floppy --fs-uuid --set=root <place the UUID reported for the sda1 partition here>
chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}
对于 Mint,最小的 GRUB 引导条目可能如下所示:
menuentry "Linux Mint" {
insmod gzio
insmod part_gpt
insmod btrfs
search --no-floppy --fs-uuid --set=root <place the UUID reported for the sdb3 partition here>
echo "Loading Linux Mint kernel..."
linux /vmlinuz root=<place the Linux device pathname of the Linux root filesystem here> ro quiet splash
echo "Loading Linux Mint initramfs..."
initrd /initrd.img
}
注:将其中的部分替换<angle brackets>
为实际值。
Q4。该列表显示了 sda 和 sdb,我可以看到它们如何等同于 hd0 和 hd1。但 live grub2 指的是 hd8,gpt3(对于 WindowsOS)和 hd9,gpt3(对于 btfrs (mint))。 8和9从哪里来?
系统的 UEFI 固件可能不仅呈现 SSD,还呈现内置互联网恢复卷和/或当时碰巧插入的任何其他存储设备。您可能需要进入 GRUB 命令提示符并键入ls (hd
,然后按TAB查看固件已通知 GRUB 的所有磁盘,然后尝试找出哪个是哪个。