x86 - 将内核映像添加到 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 上的所有内容,以免烧毁我的公寓,但后来我打算将它刷到旧的技嘉主板上。
解决方案
推荐阅读
- java - url put request OkHTTPClient
- c - C中的多线程读取和打印一个非常大的文件
- javascript - SPA React 投资组合的导航
- java - java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“boolean java.util.ArrayList.add(java.lang.Object)”
- javafx - 在场景中添加随机生成的圆圈(大小一致)以表示 JavaFX 中的星星
- java - 有没有办法从另一个应用程序定位和回显 texfield?
- templates - Jinja2 Ansible 模板 - 需要帮助从变量中删除小数
- java - 编辑翻转计数器以运行其他程序
- android - Firebase 功能。该功能未触发
- java - 如何检查sql表中是否存在变量如果不存在则条件并将其插入到anylogic中的表中