译者的话

首先,感谢您阅读本书!

这本书是我学习UEFI编程时所使用的资料,也是网上为数不多的这方面介绍的比较详细的资料。如果你尝试搜索"uefi programming tutorial",会发现很多内容,像是OSDev上关于UEFI的介绍,只介绍到Hello world之后就结束了,看完之后一脸懵逼,不知道接下来该从何下手,至少我当时是这样的。这本书是我能找到的相对来说,我个人认为最适合入门的资料,这是我翻译这本书的第一个原因。

翻译这本书的第二个原因是它介绍了另一种UEFI开发的方式。我刚初学的时候,在配置环境这块被EDK2劝退了。使用EDK2来开发虽然是最主流的开发方式,但是EDK2的环境搭建是非常痛苦的,它对于Linux的支持并不完美,而且很挑剔编译器,GCC只支持到5,说是支持Clang 9和Visual Studio 2019,但很多模块用这两者根本无法成功编译(我唯一成功的是在Windows上用VS2019编译出了EmulatorPkg)。后来我了解到了gnu-efi这个替代工具链,找到了gnu-efiでUEFI遊びをはじめよう这篇文章,它推荐了这本书的日文版作为参考。我读了一下发现还不错,而且它介绍的不用edk2或是gnu-efi这些工具的裸机编程,也是一种比较新鲜的方式。

虽然我并不完全认同作者的一些做法,像是不使用标准的UEFI类型,但这本书的内容上还是没有问题的,而且本书的实际内容核心是在介绍UEFI API的功能和用法,这点无论用什么来开发,都是相通的,所以我个人认为这本书还是很有价值的。

我个人认为这本书最精彩的地方是一上来的1.2.1 遵循UEFI标准编写程序这节。它着重介绍了怎么去阅读UEFI标准文档找到需要的信息,我认为掌握这点对学习UEFI开发是很有帮助的。

翻译中文版时,我对于日文版做了一些较大的改动,包括重写了一些内容和补充了一些日文版所没有的内容,这些地方都已一一标出。此外,日文版由于纸张这个载体限制,图片都是黑白的,中文版替换了书中几乎所有的图片,希望能给大家一个更直观的感受。

中文版的示例代码在日文版的基础上也进行了许多的修改,包括功能更为强大的Makefile,加入了QEMU/OVMF上对鼠标的支持,以及我用gnu-efi重新实现的书中的示例。关于示例代码的更多内容可以看示例代码的自述文件。

这本书我开坑翻译是2019年12月,直到现在大体完成,已经是2020年7月。咕了这么久既有新冠疫情的原因,也有我个人的一些原因。在发布这本书时,书中内容并不完美,如果您发现了书中或是示例代码的问题,欢迎您提Issue来帮助本书变得更好。

希望这本书能够帮到初学UEFI的各位同学。如果您觉得这本书对您有帮助,您可以给这本书点个Star。

最后,再次感谢您阅读本书!

神楽坂琴梨 (当然这不是我真名)

2020年7月