我试图将 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(gdisk
、sgdisk
和cgdisk
)中,它由分区类型 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.efi
或refind_x64.efi
)复制到 USB 驱动器的EFI/BOOT/bootx64.efi
文件中;然后将后续引导加载程序复制为grubx64.efi
。在这种情况下,rEFInd 可能也不是最好的选择,因为使用它需要手动将 rEFInd 的密钥添加到您使用的每台启用了安全启动功能的计算机上。(另一方面,如果您只想在一台计算机上启动,这可能是一个可以接受的成本。)