我已经在新的 SSD 上安装了 Arch Linux,但在使用 UEFI 启动时遇到了问题。
我成功地通过 USB 启动到 ISO,并且我相信我已经在 SSD 上成功安装了 Arch Linux,因为我可以使用 arch-chroot 来访问进入该环境。
我曾经efibootmgr
修改过 UEFI 启动顺序,使最高优先级是适当分区上的 EFI 文件。我知道这是有效的,因为如果我更改该 EFI 文件,行为就会改变。
运行 efibootmgr 将 UEFI 指向该分区后,我发现该分区是空的。应该efibootmgr
为我填充一个 .efi 文件吗?如果没有,我该如何创建或获取 EFI 文件?
我尝试从 Arch Linux ISO USB 复制 EFI 文件。第一个启动进入 EFI SHELL,但它没有用,因为终端不滚动,字体很大,所以文本很快就会从屏幕底部打印出来。第二个 EFI 文件搜索 ISO USB 驱动器/dev/disk/by-label/
并尝试从中启动。如果我可以指示它搜索我的 SSD 的主分区,这可能会很有用。
任何建议都值得感激。
答案1
让它工作了,回答我自己的问题以帮助遇到此问题的任何人。
efibootmgr 是否应该为我填充 .efi 文件?
不,efibootmgr 只是将 UEFI 指向一个 EFI 文件
如何制作或获取 EFI 文件?
其中一种方法是使用 GRUB,如下所述:https://itsfoss.com/install-arch-linux/
它告诉我们我们需要安装grub
并efibootmgr
挂载 EFI 分区。然后发出以下命令:
grub-install --target=x86_64-efi --bootloader-id=<name> --efi-directory=<path-to-efi-mount-point>
哪里<name>
就是使用 efibootmgr 列出 EFI 优先级时出现的标签。该命令将在 EFI 分区上生成一个 EFI 文件,并修改 EFI 启动优先级以指向该 EFI 文件。最后一步是生成 grub 配置文件。
请注意,GRUB 是一个非常灵活的引导加载程序,使用它来生成 EFI 文件只是众多功能之一。grub 的默认用例似乎是使用 BIOS 而不是 UEFI,这就是为什么我花了很长时间才找到这个调用。