制作 UEFI Shell 下可以识别的 FAT 分区光盘镜像
制作 UEFI Shell 下可以识别的 FAT 分区光盘镜像
上一篇文章 浏览器中的 UEFI 体验 – QEMU Wasm 有提到我们在测试 QEMU UEFI 环境时使用了一个 test.iso,那么如何来制作这样一个 iso 镜像呢?
0x00 准备工作
工具安装:
Linux系统:安装
dosfstools
(用于创建 FAT 文件系统)和genisoimage
(用于生成 ISO)。1
sudo apt-get install dosfstools genisoimage
Windows系统:准备 UltraISO(用于编辑镜像文件)。
文件准备:
- 需包含的 UEFI 程序(如 HelloWorld.efi)。
0x01 创建 FAT 镜像文件
1
mkfs.vfat -C fat-32M.bin 0x8000
0x02 添加文件到镜像
方法 1:Linux 命令行
挂载镜像:
1
sudo mount -o loop fat-32M.bin /mnt
复制文件:
1
sudo cp HelloWorld.efi /mnt/
卸载镜像:
1
sudo umount /mnt
方法 2:使用 UltraISO(Windows)
打开 UltraISO,选择 文件 > 打开,加载 fat-32M.bin。
将 HelloWorld.efi 拖入右侧窗口。
保存修改(文件 > 保存)。
0x03 生成可启动 ISO
创建ISO目录结构:
1 2
mkdir iso_root mv fat-32M.bin iso_root/
生成ISO镜像:
1 2
cd iso_root/ genisoimage -e fat-32M.bin -b fat-32M.bin -no-emul-boot -output ./test.iso ./
0x04 验证与使用
检查ISO结构:
1
isoinfo -i test.iso -l
输出结果如下:
1 2 3 4 5
directory listing of / d--------- 0 0 0 2048 Mar 4 2025 [ 24 02] . d--------- 0 0 0 2048 Mar 4 2025 [ 24 02] .. ---------- 0 0 0 2048 Mar 4 2025 [ 25 00] BOOT.CAT;1 ---------- 0 0 0 33554432 Mar 4 2025 [ 26 00] FAT_32M.BIN;1
在虚拟机上测试:
0xFF
通过以上步骤,我们可以获得一个在 UEFI Shell 能直接访问的 FAT 分区光盘镜像。如果我们想在某些受限制的条件来简单测试一些 UEFI 程序,这也许会有一些帮助。
本文由作者按照 CC BY 4.0 进行授权