EFI 中没有 FS0 Shell

No FS0 in EFI Shell

我想尝试为 EFI 编程,所以我使用 virtualbox 创建了一个 VM,选中 "enable efi" 选项并将 CD 留空。 efi shell 以它应该的方式启动,但我只看到 BLK0、BLK1 等,而不是 FS0。有没有办法在不插入 USB 磁盘(显示为 FS)的情况下获得 FS?

编辑: 感谢您的回复。对于仍想使用 VB 的人 - 使用 Windows CD 使用 DISKPART 格式化 VB 磁盘可以解决问题。

@unixsmurf 评论中的回答是正确的。您的图像需要 UEFI 支持的文件系统。如果在 map 命令的输出中看不到 fsX,则表示没有附加的块设备 (blkX) 包含受支持的文件系统。请在您的磁盘上创建 FAT32 分区,然后您将能够在 map 输出中看到 fsX。要在文件系统之间切换,请使用类似 DOS 的语法命令,即。 fs0: 切换到 FS0 文件系统。

根据 UEFI 规范 2.5 第 12.3 节:

EFI encompasses the use of FAT32 for a system partition, and FAT12 or FAT16 for removable media.

我建议直接与 QEMU 一起使用 OVMF(打开虚拟机固件),而不是通过 VirtualBox。为什么 ?

  • 因为你可以破解 OVMF 并了解它的内部工作原理,这让你更好地理解,VirtualBox 隐藏了内部结构,我不确定它是否允许固件更换
  • OVMF 最初是为 QEMU 开发的,它适用于各种其他虚拟机,因为 QEMU 上对 OVMF 的支持比 VirtualBox 上的 OVMF 多得多
  • 使用 QEMU 还可以让您模拟硬件并在使用它的 UEFI 中写入 drivers/applications

我写了 beginners tutorial 帮助设置使用 OVMF 进行 UEFI 应用程序开发所需的开发环境。

更多关于 OVMF