如何将 Arch Linux 系统从 BIOS 转换为 UEFI?

如何将 Arch Linux 系统从 BIOS 转换为 UEFI?

我正在将系统迁移到新的 SSD。我想借此机会从BIOS转换为EFI。主板已经使用了大约 1 年,因此固件应该足够新,以避免早期版本出现的 UEFI 问题。

我使用两个完整的系统分区(用于生产和测试),并且选择是通过 GRUB 菜单完成的。我想保留它。

新的SSD是GPT分区的,我创建了一个类型为EF00、VFat格式的“EFI系统”分区,并安装在/boot/efi。

然而,现在我陷入了恶性循环:只要我没有在新 SSD 上安装支持 EFI 的 GRUB,我就需要在 UEFI 设置中保持启用 CSM 模块,并在 BIOS 模式下从旧 HDD 引导。但只要我以 BIOS 模式启动,我就无法执行 agrub-install --target=x86_64-efi因为它说EFI variables are not supported on this system.

我找到了一些关于 Ubuntu 的说明boot-repair,但它不适用于 Arch Linux,并且对于使用它是否是一个好主意存在一些争议。

答案1

有以下几种选择:

  • 您可以grubx64.efi使用 生成包含适当 GRUB 模块的文件grub-mkimage -O x86_64-efi,将其放入/boot/efi/EFI/BOOT/BOOTX64.EFI并与 GRUB 配置文件放在同一目录中。这与使可移动媒体可 UEFI 启动通常执行的操作类似。然后您可以禁用 CSM,固件应将 SSD 检测为有效的 UEFI 启动磁盘。

  • 或者,您可以禁用 CSM 并从 UEFI 可启动可移动媒体(或 Freddy 建议的 Super Grub2 Disk)启动 Linux,然后在必要时 chroot 到您的 Arch 安装。

无论哪种方式,您的系统现在都将以 UEFI 模式启动,因此可以访问 EFI 变量,并且您现在可以使用grub-install --target=x86_64-efi为永久安装的操作系统安装正确的引导加载程序,按照 UEFI 规范期望的方式完成。

答案2

最简单的解决方案可能是从超级Grub2磁盘

  1. 下载并安装一个超级 Grub2 磁盘 ISO到 USB 记忆棒。选择混合 ISO 和dd/或cat图像到棒,即

    dd if=/path/to/super_grub2_disk_hybrid_2.04s1.iso of=/dev/sdX bs=16M
    

    /dev/sdXUSB 记忆棒的路径在哪里,例如/dev/sdd

  2. 将 BIOS 启动模式更改为“仅 UEFI”(无 CSM)。

  3. 从棒中启动 Super Grub2 Disk,然后从菜单中选择“检测并显示启动方法”。如果它按预期工作,您应该会看到一个内核列表,可以从目录中找到的内核进行引导/boot
  4. 选择一个内核,启动到您的 Arch 安装并安装GRUB
  5. 保留 U 盘以备不时之需。

答案3

它与超级Grub2磁盘正如@Freddy 所建议的。以防万一其他人偶然发现这个问题,我将在下面更详细地描述整个过程(包含 Freddy 的步骤)。

然而,当前稳定的 Super Grub2 Disk iso 映像无法从 USB 记忆棒启动。我需要进行测试并使用多架构 USB 映像

这是完整的过程:

  • 创建 Super Grub 2 Disk USB 记忆棒并测试它:-)
  • 最后一次从旧 HDD 或 SSD 启动
  • 创建一个“gpt”新SSD上的分区表和一些分区:
    1. “EFI 系统”分区,类型为 EF00,VFat 格式化,并安装在 /boot/efi
    2. 一个小的 Linux 分区,安装在 /boot
    3. 根据加密、LVM 的使用,...系统、数据的一个或多个分区...
  • 如果适用,设置加密和/或 LVM
  • 将旧 HDD 或 SSD 中的所有数据复制到新 HDD 或 SSD
  • 调整 fstab在新的根文件系统上添加新的 UUID、标签或您正在使用的任何内容
  • 调整grub.cfg相应地在新的 to-be-/boot 文件系统上
  • 关闭
  • 断开旧的基于 BIOS 的 HDD 或 SSD
  • 启动电脑并进入UEFI设置
  • 禁用 CSM
  • 从 Super Grub2 Disk USB 启动(可能需要打开 UEFI 的启动菜单)
  • 转到“检测并显示启动方法”(可能需要一些时间),如果您之前正确调整了 grub.cfg,则只需选择正确的菜单项,无需手动编辑任何内容。
  • 在新 SSD 上执行 grub 安装
  • 您可能需要再次进入 UEFI 设置并选择新的 SSD 作为默认机器人设备

相关内容