【发布时间】:2021-05-16 04:14:01
【问题描述】:
我尝试在 UEFI 环境中启动精灵微内核。所以我编译了一个最小的引导加载程序并创建了一个 ESP 映像。如果我通过 HDD 引导,这工作正常,但我想通过 qemu -kernel 选项直接引导它(这是我使用 AMD SEV 时的一些特殊要求)。这不起作用。
如果我使用包含胖映像的 grub mkimage,我可以像这样使用 grub 启动内核,例如:
mcopy -i "${basedir}/disk.fat" -- "${basedir}/kernel" ::kernel
mcopy -i "${basedir}/disk.fat" -- "${basedir}/module" ::module
grub-mkimage -O x86_64-efi
-c "${basedir}/grub-bootstrap.cfg"
-m "${basedir}/disk.fat"
-o "${basedir}/grub.efi"
但我的系统的目标是极简主义和安全性,因此是微内核,所以 grub 及其漏洞是毫无疑问的。
所以我的问题是: 如何创建类似于 grub-mkimage 的可启动应用程序映像?
我已阅读有关 efi 存根启动的信息,但无法真正弄清楚如何构建 efi 存根映像。
通常我是一个裸机嵌入式程序员,所以整个 uefi 启动对我来说有点奇怪。我很高兴有任何提示或建议。另外我认为堆栈溢出可能不是解决此类低级问题的最佳场所,您能推荐其他论坛吗?
【问题讨论】:
-
我已经阅读了一些文章,但找不到将精灵和引导加载程序包含到单个应用程序映像中的方法,您知道具体的吗?