更新:

更新:

我已经在我的 USB 磁盘上创建了分区parted

parted /dev/sdb
 mklabel gpt
 mkpart boot fat32 0% 1024MB
 set 1 esp on
 set 1 boot on

然后我格式化了分区

mkfs.vfat -F 32 /dev/sdb1

安装并复制我的文件

最后,我跑了:

efibootmgr --create --disk /dev/sdb --part 1 --loader /EFI/BOOT/syslinux.efi --label "Syslinux" --unicode

之后,我无法再挂载该分区:

# mount /dev/sdb1 /mnt/tmp/
mount: /mnt/tmp: wrong fs type, bad option, bad superblock on /dev/sdb1, missing codepage or helper program, or other error.
   dmesg(1) may have more information after failed mount system call.

但该磁盘作为可启动 UEFI 磁盘,因此分区仍然存在。我就是无法安装它!

我在 Debian 12 上这样做

这是strace:https://ctxt.io/2/AABQzO6_EQ

更新:

这很奇怪:

我刚刚发现,如果我首先使用以下命令映射它,我可以安装分区kpartx

kpartx -a -p -kpartx- -s -v /dev/sdb
mount /dev/mapper/sdb-kpartx-1 /mnt/tmp/

答案1

看来您需要加载以下附加内核模块才能挂载 EFI 分区:

efi_pstore
efivarfs

答案2

您的内核是否没有CONFIG_EFI_PARTITION启用该选项(标题为“EFI GUID 分区支持”,这意味着 GPT 分区表)?

这意味着内核将无法解析 GPT 分区表,并且需要用户空间工具,例如kpartx为各个分区构建映射。

kpartx自带了解析 MBR 和 GPT 分区表的代码,因此即使内核不理解 GPT,它也能工作。

由于 GPT 分区表包含保护性MBR,不支持 GPT 的内核通常会在任何 GPT 分区磁盘上检测到类型 0xee 的单个 MBR 主分区。该分区将覆盖整个磁盘,或者 MBR 分区表可以处理的 2 TB 左右。它的目的只是向任何仅 MBR 的操作系统和分区工具指示“此磁盘正在被您不知道的东西使用”。

相关内容