PainterEngine UEFI 适配笔记
前段时间分享了一个跑在 UEFI 环境中的 PainterEngine Demo。最近又在这个基础上添加了输入(键鼠)、文件读取的相关支持。现在有些时间,便记录一下将其移植到 UEFI 环境下的一些心得。主要包含一些关键的移植步骤/技巧,以及遇到的一些问题。 0x00 基础的文件 首先需要新建一个 .inf 文件,然后将 PainterEngine 的 core、kernel、runti...
前段时间分享了一个跑在 UEFI 环境中的 PainterEngine Demo。最近又在这个基础上添加了输入(键鼠)、文件读取的相关支持。现在有些时间,便记录一下将其移植到 UEFI 环境下的一些心得。主要包含一些关键的移植步骤/技巧,以及遇到的一些问题。 0x00 基础的文件 首先需要新建一个 .inf 文件,然后将 PainterEngine 的 core、kernel、runti...
VS Code 中的 GitLens 插件提供了 Line Blame 信息, 这些信息可以在一定程度上帮助我们快速了解某些代码修改的原因。 但有时候想要了解某一点改动的细节,可能还会要跳转到如 GitHub 的 PR 页面去查看是否有更多信息。 此时只要点击在 Line Blame 上悬停鼠标时弹出的 Commit Hover 中的小地球图标,便会在浏览器打开对应的 Commit。 ...
大多数 BIOS 厂商都会提供一个硬盘密码(HDD Password)功能, 但出于种种原因(大多是忘记密码后会很麻烦)你可能并没有使用过它。 最近在测试一个问题时,我非常“快速”地给一块 NVMe 设置了一个常用的密码。 但就在设置完再次启动 BIOS 时,输入密码解锁时却一直提示密码不正确。 于是赶紧再尝试了不同大小写的组合,结果还都是密码不正确。 眼看着一块硬盘就要这样折在我手上,...
提起 BIOS 多数人可能首先想到的就是经典的蓝白界面。 但是在如今 UEFI 的世界里,越来越多厂商开始提供看起来更炫酷、丰富的图形界面。一些人希望厂商能为 BIOS 提供更现代的 GUI 界面,另一些人则觉得经典的界面就挺方便,厂商别阉割功能就好了。 孰优孰劣也是见仁见智,全凭个人喜好了。 0x00 一个有趣的 UEFI GUI 实现 提到 UEFI GUI,这里想先分享一个之前无意...
当下的主流 BIOS 应该都提供了中文(多语言)的支持。对于这些商用 BIOS,如果没有相应的代码,其实现细节我们不得而知。 虽然你也可以通过一些逆向手段做一些了解,但是过程可能会让人稍微有些难受。 如果你只是想比较轻松的了解并且做一些实际的实验,本文将会带你在开源的 UEFI 开发环境 Edk2 中实现一个简单的中文字库。 0x00 规范 在 UEFI Specification 的...
接触过 Python 的朋友大概也都听过一句话:“人生苦短,我用 Python”。 但是在 LLM AI 火热的当下,想必很多人会想说(或者已经喊着):“人生苦短,我用 AI”。 至少对我而言,有时在某些特定场景下确实会在心里默念一句:“人生苦短,我用 Claude”。 这不是刻意吹捧 Claude,只是在个人日常“轻量级”的编码使用体验上,Claude 完成的算是不错的那个。你...
在日常工作中难免会接触到 ASCII 码。但是最近发现之前一直用来随手查 ASCII 码的一个网站加入了广告。 网站虽然很朴素,但临时看一眼也够用了。不过加上了大篇幅的广告,就很影响体验了。 好在当下 LLM AI 发展迅速,在空闲的时候便让 AI 帮忙搓一个网页,然后部署到了 Github Pages 上。 链接如下: https://yangganguefi.github.io/t...
在日常 BIOS 开发的过程中,有时出于代码管控的目的,会使用一些二进制模块。这些二进制模块可能包含 .depex 文件,如果我们想确认这个模块的依赖关系,就需要从 .depex 中找出其依赖的 GUID。然而,手动查看这些二进制数据往往比较繁琐,如果有合适的方式能自动提取出其中包含的 GUID,那样就会方便很多。 当前的方法 如果比较熟悉 edk2 DEPEX 的结构,对于二进制数量较...
通常我们更新 BIOS 时会在各厂商的支持网站里下载一个当前型号的可执行文件,双击运行后,完成 BIOS 的更新并重启机器。对于个人用户来说,这些步骤看起来稍显繁琐,但实际上已足够便利。 而对于每天都要不厌其烦地更新无数遍 BIOS 的工程师来说,选择可能又多了些。直接读写 Flash 的烧录工具,BIOS 内置的更新工具/接口,亦或是服务器上的 BMC。 但是,烧录工具想要方便使用,需...
上一篇文章 浏览器中的 UEFI 体验 – QEMU Wasm 有提到我们在测试 QEMU UEFI 环境时使用了一个 test.iso,那么如何来制作这样一个 iso 镜像呢? 0x00 准备工作 工具安装: Linux系统:安装 dosfstools(用于创建 FAT 文件系统)和 genisoimage(用于生成 ISO)。...