如何在我的 USB 驱动器上创建 EFI 分区?

如何在我的 USB 驱动器上创建 EFI 分区?

我试图将 GRUB 安装到 USB 驱动器上。我想创建一个多启动 USB 磁盘,但出现错误EFI directory not found。如何在 USB 闪存驱动器上成功创建 EFI 分区?

答案1

您可以使用 GParted 执行此任务(创建 EFI 分区)...要安装它,请打开终端并执行:

sudo apt install gparted  

从 Dash 打开 GParted,选择 USB 驱动器,创建一个新的gpt分区表,然后创建一些新分区。以下是我制作的演示如何操作 ->如何使用 GParted 准备磁盘

答案2

创建一个EFI 系统分区 (ESP)可以通过多种方式完成,但这只是您需要做的开始。ESP 是一个 GPT 类型代码为 C12A7328-F81F-11D2-BA4B-00A0C93EC93B 的分区(或者,在 MBR 磁盘上,类型代码为 0xEF),并且使用 FAT32 文件系统(尽管通常可以使用 FAT16 甚至 FAT12)。在 Linux 中,基于 libparted 的工具(例如 GParted 和parted)通过“启动标志”的存在来识别 GPT 磁盘上的 ESP,因此您必须在 ESP 上设置该标志 - 但这仅适用于 GPT 磁盘。(我认为 libparted 的最新版本使用“esp 标志”作为“启动标志”的同义词,因此您可以改为设置它。这可能也适用于 MBR 磁盘,但我对此不确定。)在 GPT fdisk(gdisksgdiskcgdisk)中,它由分区类型 EF00 标识。

如果您使用 GParted 创建 ESP,它可以在您创建分区的同时创建 FAT 文件系统。如果您使用parted或 GPT fdisk,则需要通过运行mkdosfs或其他工具来执行此操作。

创建分区后,您必须将引导加载程序复制到该文件EFI/BOOT/bootx64.efi(假设在具有 64 位 EFI 的 x86-64 系统上引导)。您提到了 GRUB,这可能很棘手,因为 GRUB 依赖于配置文件,其位置嵌入在 GRUB 二进制文件中;但标准的 Ubuntu GRUB 会从您的硬盘中查找其配置文件。有一些 GRUB 安装脚本可以帮助自动设置,但我对它们不太熟悉。您可能需要考虑使用我的rEFInd 启动管理器而是。它会在启动时自动扫描引导加载程序,因此很可能只需要很少的配置,并且它的配置文件与 rEFInd 二进制文件位于同一目录中。

还有一点需要注意:如果您的 USB 驱动器要在启用了安全启动功能的计算机上启动,则需要将shimx64.efi(而不是grubx64.efirefind_x64.efi)复制到 USB 驱动器的EFI/BOOT/bootx64.efi文件中;然后将后续引导加载程序复制为grubx64.efi。在这种情况下,rEFInd 可能也不是最好的选择,因为使用它需要手动将 rEFInd 的密钥添加到您使用的每台启用了安全启动功能的计算机上。(另一方面,如果您只想在一台计算机上启动,这可能是一个可以接受的成本。)

相关内容