启动并选择 rEFInd 后,我看到一个空白屏幕,如图所示这个帖子。
我的文件系统是这样的:
$ mount
/dev/mapper/luks-71740d10-cf57-4b82-9311-aa584acaa81e on / type btrfs (rw,relatime,compress=lzo,ssd,space_cache,subvolid=256,subvol=/arch)
/dev/nvme1n1p2 on /boot type ext4 (rw,relatime)
/dev/nvme1n1p1 on /boot/efi type vfat (rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,utf8,errors=remount-ro)
我的启动分区的内容是(为简洁起见,省略 refind 图标目录):
$ ls -lR /boot/
/boot/:
total 159116
drwxr-xr-x 3 root root 4096 Dec 31 1969 efi
-rw-r--r-- 1 root root 85725131 Nov 7 13:32 initramfs-linux-fallback.img
-rw-r--r-- 1 root root 62696900 Nov 7 13:32 initramfs-linux.img
-rw-r--r-- 1 root root 4769792 Jun 8 13:31 intel-ucode.img
-rw-r--r-- 1 root root 9735104 Nov 5 13:39 vmlinuz-linux
/boot/efi:
total 4
drwxr-xr-x 4 root root 4096 Nov 7 14:38 EFI
/boot/efi/EFI:
total 8
drwxr-xr-x 6 root root 4096 Nov 7 14:38 refind
drwxr-xr-x 2 root root 4096 Apr 19 2021 tools
/boot/efi/EFI/refind:
total 412
drwxr-xr-x 2 root root 4096 Apr 19 2021 drivers_x64
drwxr-xr-x 3 root root 8192 Nov 7 13:25 icons
drwxr-xr-x 2 root root 4096 Apr 19 2021 keys
drwxr-xr-x 2 root root 4096 Nov 7 14:38 vars
-rwxr-xr-x 1 root root 140 Nov 7 13:25 BOOT.CSV
-rwxr-xr-x 1 root root 37839 Nov 7 14:39 refind.conf
-rwxr-xr-x 1 root root 34513 Nov 7 13:25 refind.conf-sample
-rwxr-xr-x 1 root root 317712 Nov 7 13:25 refind_x64.efi
/boot/efi/EFI/refind/drivers_x64:
total 72
-rwxr-xr-x 1 root root 69776 Nov 7 13:27 ext4_x64.efi
我的配置如下:
menuentry "arch" {
icon /EFI/refind/icons/os_arch.png
volume 3c3b698a-8212-324b-9b63-4dc3a7a98aee
loader /vmlinuz-linux
initrd /initramfs-linux.img
options "luks.uuid=71740d10-cf57-4b82-9311-aa584acaa81e root=UUID=15773c68-a4e5-49b5-8071-f390750b7162 rootflags=compress=lzo,ssd,subvol=arch ipv6.disable_ipv6=1 add_efi_memmap rw"
}
menuentry "windows" {
icon /EFI/refind/icons/os_win.png
volume 13aa9955-4538-40ac-b674-006c334b5088
loader \EFI\Microsoft\Boot\bootmgfw.efi
}
我的设备如下:
$ sudo blkid
/dev/nvme0n1p5: LABEL="Windows RE Tools" BLOCK_SIZE="512" UUID="08C4E6C5C4E6B45A" TYPE="ntfs" PARTLABEL="Basic data partition" PARTUUID="4eced110-9723-4dde-955c-b0ab8576869b"
/dev/nvme0n1p3: TYPE="BitLocker" PARTLABEL="Basic data partition" PARTUUID="a358833d-f07c-45f8-9119-3592577bfd23"
/dev/nvme0n1p1: LABEL="SYSTEM" UUID="4CE7-C215" BLOCK_SIZE="512" TYPE="vfat" PARTLABEL="EFI system partition" PARTUUID="13aa9955-4538-40ac-b674-006c334b5088"
/dev/nvme0n1p4: BLOCK_SIZE="512" UUID="D2063641063626BF" TYPE="ntfs" PARTUUID="32a62eef-7764-4de9-b230-e582a2fba9ef"
/dev/mapper/luks-71740d10-cf57-4b82-9311-aa584acaa81e: UUID="15773c68-a4e5-49b5-8071-f390750b7162" UUID_SUB="b79765d9-5a84-4327-b8e0-b4a7c27107a8" BLOCK_SIZE="4096" TYPE="btrfs"
/dev/nvme1n1p2: UUID="db6871f3-f5d5-4d46-965e-7bbd9d335d34" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="3c3b698a-8212-324b-9b63-4dc3a7a98aee"
/dev/nvme1n1p3: UUID="71740d10-cf57-4b82-9311-aa584acaa81e" TYPE="crypto_LUKS" PARTUUID="004162c0-d9e6-5043-8427-630a0efce107"
/dev/nvme1n1p1: UUID="0298-8CEA" BLOCK_SIZE="512" TYPE="vfat" PARTUUID="82f72318-1bba-2d4b-936d-41142e979d9f"
/dev/nvme0n1p2: PARTLABEL="Microsoft reserved partition" PARTUUID="2d6499be-a167-4920-93d6-7a15a8a82ee6"
没有报告任何实际错误,rEFInd 只是启动到这个空白屏幕并无限期地停留在那里。按 Enter 键(如果这是一个图形问题,并且在幕后一切都应该如此)不会执行任何操作。从实时 Arch USB 光盘使用refind-install
也无法解决此问题,从而创建不正确的refind_linux.conf
.我知道我的refind.conf
做法是正确的,因为它以前曾有效过。
答案1
我问这个问题是为了获得更“主流”和谷歌可搜索结果的解决方案,而不是这个问题的大量论坛/reddit/邮件列表咒语。这拱门 Linux 维基rEFInd 文章包含故障排除部分,但仅建议确保esp/EFI/refind/drivers
仅包含分区的文件系统/boot
,而不包含其他驱动程序。
在与 Rod Smith(rEFInd 的作者)的电子邮件对话中,他提供了带有一些日志输出的自定义版本的 rEFInd。以下是这次交流的主要发现,它表明 rEFInd 在扫描单独的 Windows 驱动器上的 NTFS 卷时挂起。
Rod 推测潜在原因如下:
- 您已安装 rEFInd 的 NTFS 驱动程序。 (您在之前的一封电子邮件中指出您没有这样做,因此您可能需要仔细检查这一点。)如果是这样,则以下情况之一可能是正确的:
- NTFS卷已损坏
- NTFS 驱动程序存在错误
- 该分区上的目录/文件结构存在某些问题,从而触发了 rEFInd 中的错误
- 您的固件包含其自己的 NTFS 驱动程序。我听说过有关此类实现的传言,但我自己从未遇到过。如果是这种情况,则前面的三个子情况之一也为真。
- rEFInd 将非 NTFS 分区误识别为 NTFS。发生这种情况的原因可能是分区从另一种形式转换后剩余的 NTFS 数据。这本身不会引起问题,但可以想象,相同的假设剩余 NTFS 数据会导致分区实际保存的文件系统驱动程序出现故障。在这种情况下,备份分区、将其清零、创建新的文件系统并恢复应该可以解决问题。
- 内置 FAT 或 rEFInd EFI ext4fs 驱动程序分别将 NTFS 分区误认为是 FAT 或 ext4fs,并且在尝试访问该卷时挂起。
解决方案/解决方法是将有问题的PARTUUID
值添加到dont_scan_volumes
中的选项中esp/EFI/refind/refind.conf
。
人们可以通过 的输出找到这些blkid
,然后将它们添加为逗号分隔值。例如:
$ sudo blkid
/dev/nvme0n1p1: LABEL="SYSTEM" UUID="4CE7-C215" BLOCK_SIZE="512" TYPE="vfat" PARTLABEL="EFI system partition" PARTUUID="13aa9955-1234-5678-9098-006c334b5088"
/dev/nvme0n1p5: LABEL="Windows RE Tools" BLOCK_SIZE="512" UUID="08C4E6C5C4E6B45A" TYPE="ntfs" PARTLABEL="Basic data partition" PARTUUID="4eced110-0987-6543-2123-b0ab8576869b"
$ grep dont_scan_volumes /boot/efi/EFI/refind/refind.conf
dont_scan_volumes 13aa9955-1234-5678-9098-006c334b5088,4eced110-0987-6543-2123-b0ab8576869b
与 Rod 的电子邮件交流是在 2018 年,要求我从 Win7 上的 rEFInd 迁移到 Win10,这要么是由于 rEFInd 对 Win10 分区的扫描行为发生了变化,要么可能与公司计算机上的附带选项(例如 Bitlocker)有关。我现在添加这个答案,因为 Windows 10 升级刚刚添加了一个新分区到现有的光盘并再次导致此问题。
经过几个小时的阅读其他可能的原因后,我重新意识到要确保全部WindowsPARTUUID
值列在 中dont_scan_volumes
,发现在检查refind.conf
vs.blkid
这次升级后,有一个新的分区需要添加。添加后,rEFInd 再次显示我的预期启动选项refind.conf
(arch 和 windows)。