fst*_*nis 3 boot uefi grub-efi refind
最近重新安装后,我发现 rEFInd 遇到了一个非常奇怪的问题:虽然它在我的 /boot 分区上检测到 GRUB 和 vmlinuz,但使用后者非常慢。
具体来说,在选择“Boot vmlinuz-4.8.0-53-generic from 191 MiB ext2 volume”后,我立即看到了一个带有以下文本的黑屏:
Starting vmlinuz-4.8.0-53-generic
Using load options 'root=UUID=6641e1e2-6829-49cc-bf88-85ba5eefbff8 ro quiet splash nomodeset vt.handoff=7 initrd=\initrd.img-4.8.0-53-generic'
Run Code Online (Sandbox Code Playgroud)
经过大约一分钟的等待 (!),Linux 正常启动(而且相当快)。
另一方面,如果我选择 GRUB,我将进入 GRUB 引导菜单,在选择默认选项后,Linux 会立即开始引导。
这可能是什么原因?
我的设置包括一个 SSD(我安装了 Linux 和 Windows)和一个 HDD(我的 /home 所在的位置),以及一个 ext2 /boot 分区和安装在 /boot/efi 上的 EFI 分区(最初由 Windows 创建)。这是我的 /etc/fstab:
UUID=6641e1e2-6829-49cc-bf88-85ba5eefbff8 / ext4 errors=remount-ro 0 1
UUID=3c804805-c41e-4b9d-af02-118b98858ae4 /boot ext2 defaults 0 2
UUID=8EA5-5319 /boot/efi vfat umask=0077 0 1
UUID=bf088ec8-140d-4829-8de7-deb1d375b0e5 /home ext4 defaults 0 2
UUID=E2A8CA84A8CA5727 /mnt/Windows ntfs defaults,umask=007,gid=46 0 0
UUID=3fb0b28d-87d8-4162-b469-1c157a4d00b0 none swap sw 0 0
Run Code Online (Sandbox Code Playgroud)
我是 rEFInd 的维护者。
这是一个文件系统驱动程序问题。由于我不完全理解的原因,一些 rEFInd 的文件系统驱动程序(尤其是ext2_x64.efi驱动程序)在某些计算机上运行缓慢。几年前我在驱动程序代码中添加了一个粗略的预读缓存,这很有帮助——在 VirtualBox 下,速度从大约 3 分钟的加载时间提高到几十秒,IIRC。但是,即使使用此缓存,某些计算机仍然存在问题。
解决方案是更改为另一个文件系统。rEFInd 的 ext4fs 驱动程序比它的 ext2/3fs 驱动程序快得多,而 Btrfs 和 ReiserFS 驱动程序仍然更快。(请注意,ext4fs 驱动程序可以读取 ext2fs,但这种方式几乎不会提供速度改进;它需要读取实际的 ext4 文件系统以提供速度改进。)在最坏的情况下,您可以使用 FAT,这需要没有特殊的驱动程序(它内置在所有 EFI 中);或者在 Mac 上,你可以使用 HFS+。(还有一个随 rEFInd 一起提供的 HFS+ 驱动程序,因此原则上您甚至可以在非 Mac PC 上使用 HFS+,但这样做几乎没有意义或没有意义。)不过,移出标准 Linux 文件系统是不可取的。Ubuntu 依赖符号链接来进行一些(但不是全部)内核更新,这使得 FAT 成为一个糟糕的选择;虽然 HFS+ 应该可以工作,Ubuntu 没有正式支持它。甚至 ReiserFS 也不是 Ubuntu 安装程序中的一个选项,所以我会为 Ubuntu 避开它。剩下的就是 ext4fs 和 Btrfs。
切换相当简单,但并非没有风险——如果您犯了错误,您的系统可能会无法启动。基本流程是:
drivers或drivers_x64子目录(/boot/efi/EFI/refind/drivers或/boot/efi/EFI/refind/drivers_x64,可能)。ext2_x64.efi从该位置删除旧文件将减少 rEFInd 的加载时间一秒左右。/boot/efi)。/boot分区。为此,您可以使用zip、tar、cp或其他一些文件级工具。/boot。/boot分区上创建一个新的文件系统。sudo blkid /dev/sda{x}(更改/dev/sda{x}为您的/boot分区的标识符)以了解其新的 UUID 值。/etc/fstab以更改/boot分区的 UUID 值和文件系统类型。sudo mount -a以挂载新/boot分区。(它可能会抱怨没有/boot/efi挂载点。您可以忽略此警告。)/boot文件恢复到新的/boot文件系统。此时,您应该能够重新启动,它会运行得更好。但是,一个错误可能会导致系统无法启动。为了降低这种风险,你可以复制,至少一个工作的内核,initrd文件,并refind_linux.conf从/boot对/boot/efi和测试,然后再开始从ESP启动的内核能力。如果出现问题,这将为您提供一种后备启动方式。如果没有问题,您当然可以在完成后从 ESP 中删除内核。
有关 rEFInd 驱动程序的更多信息,请参阅有关此主题的文档:
http://www.rodsbooks.com/refind/drivers.html
| 归档时间: |
|
| 查看次数: |
3830 次 |
| 最近记录: |