首页 > 解决方案 > 将内核映像添加到 BIOS 二进制文件

问题描述

几年前,我的高中计算机科学老师一直在谈论早期的游戏可以“现在”安装在 BIOS 芯片上。后来多亏了那个家伙,决定学习工程学。几年过去了,bios 闪存芯片变得越来越大,现在我决定接受挑战。我从一个类中挖出了一个小的内核和用户空间映像,并决定将其用作基础。这是一个小型多线程网络游戏,大小只有几MB。我仍然有源代码,但随着大学项目的进行,我们没有使用版本控制,可能需要相当长的时间才能让它再次工作。我仍然有工作图像。注意,内核负责切换到长模式。

kernel-x86_64-pc99: ELF 32-bit LSB executable, Intel 80386
module: ELF 64-bit LSB executable, x86-64

当然,我可以使用一些 UEFI 并将图像与 grub 一起嵌入,但这只是矫枉过正,而不是练习的重点,因为我有点想探索裸机 x86 区域。

我不需要庞大的设置,基本上只需要一个 PCI 网络设备和用于调试的串行。所以我决定根据我的需要修改一个小的bios,即qboot。一切都使用 qemu(+ 内核 + initrd 选项)运行,但 qboot 从 qemu fw_cfg 加载内核+模块。现在我正试图摆脱所有 qemu 的东西,但还有很多事情要做。

这是我的问题,如何将图像添加到 bios 二进制文件中?

在将其作为二进制文件转储之前,我可以以某种方式将图像(作为一个部分)添加到我的 bios 精灵中吗?我以后如何在我的 bios 代码中找到我的图像的地址和大小?

目前我正在测试 qemu 上的所有内容,以免烧毁我的公寓,但后来我打算将它刷到旧的技嘉主板上。

标签: x86elfbootbiososdev

解决方案


推荐阅读