你有没有想过,一台电脑开机的那几秒钟,到底发生了什么?屏幕亮起之前,内存其实还是一片空白。而要让内存开始工作,本身就需要一段代码——这段代码必须先于内存存在,却又必须被放进内存里运行。这是一个先有鸡还是先有蛋的死结。
最近有一场演讲,讲的正是这个死结被解开的过程。开源固件项目 coreboot 现在可以在 Intel Bay Trail 系列 SoC 上完成 DRAM 初始化了。这个进展由 Mate Kukri 在近期的开源固件会议(Open Source Firmware Conference)上做了分享。
![]()
一块十几年前的芯片,为什么值得啃
Bay Trail 算不上什么新硬件。这批 SoC 已经超过十年,当年只用在 Chromebook 这类低性能移动设备上。而 coreboot 在 Chromebook 上的历史,几乎和这批芯片一样长。
问题在于,DRAM 初始化这件事一直很难。难的原因很直白:在你完成初始化之前,你根本没有内存可用。传统做法是调用厂商提供的专有「二进制 blob」——这些代码几乎没有配套文档。想逆向它们,需要相当硬核的总线侦查工作。
这次用到的手段是软件层面的:用 SerialICE 调试器和 Unicorn Engine CPU 模拟器来完成逆向。演讲的重点也放在这套方法本身,以及它如何被更广泛地应用,而不是纠缠于某一块过时 SoC 上具体怎么做 DRAM 初始化。
少一个 blob,意味着什么
对普通用户来说,「少一个二进制 blob」听起来像是极客圈的自娱自乐。但它背后的逻辑其实很朴素:每多一个不透明的 blob,你就多一分无法审计、无法掌控的黑箱。
coreboot 是开源的,所以你能做的事比专有 UEFI 固件多得多。比如,你可以选择完全不初始化 RAM,让整个系统跑在 CPU 缓存里。当然,你也可以用它来跑 DOOM。
如果你追求的是彻底没有二进制 blob,那就得去找被更硬核的 Libreboot 发行版支持的硬件——Libreboot 是 coreboot 的一个分支,完全不接受任何二进制 blob。只是如今的情况有点微妙:装 Libreboot 可能比找到兼容的硬件还容易。
这件事真正的看点
值得注意的不是 Bay Trail 本身。它太老了,老到大多数人根本不会去碰。真正有价值的是那套逆向方法——用 SerialICE 和 Unicorn Engine 去拆解没有文档的固件。
这套方法如果能被更广泛地复用,意味着更多被厂商锁死的硬件,有可能被一点点撬开。据演讲信息,相关内容之后应该会归档到 OFSC 网站上,让没能到现场的人也能听到 Mate 以及其他讲者的分享。
开源固件这条路走得慢。一块十几年前的芯片,到现在才被啃下一块硬骨头。但每少一个 blob,就多一分透明。这种进展不会上头条,却实实在在地发生着。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.