基本信息

编辑推荐
国内首部UEFI专著,资深UEFI专家兼布道者撰写,英特尔中国研究院院长吴甘沙和大数据和数据经济实验室研究总监周鑫联袂推荐。
以实战为导向,全面介绍UEFI的使用、深入剖析UEFI的原理,为开发UEFI应用和驱动程序提供了翔实的指导。
内容简介
作译者
目录
序
前 言
第1章 UEFI概述 1
1.1 BIOS的前世今生 1
1.1.1 BIOS在计算机系统中的作用 1
1.1.2 BIOS缺点 2
1.2 初识UEFI 2
1.2.1 UEFI系统组成 3
1.2.2 UEFI的优点 4
1.2.3 UEFI系统的启动过程 5
1.3 本章小结 12
第2章 UEFI 开发环境搭建 14
2.1 配置Windows开发环境 14
2.1.1 安装所需开发工具 15
2.1.2 配置EDK2开发环境 15
2.1.3 编译UEFI模拟器和UEFI工程 17
2.1.4 运行模拟器 19
2.2 配置Linux 开发环境 21
2.2.1 安装所需开发工具 22
前言
UEFI全称统一可扩展固件接口,是UEFI 论坛发布的一种操作系统和平台固件之间的标准。它之所以能迅速取代BIOS,源于硬件平台的发展以及UEFI相对于BIOS的巨大优势。UEFI可编程性好,可扩展性好,性能高,安全性高。
随着64位CPU取代32位CPU,UEFI也完成了对BIOS的取代。市场已经完成了这种转变,对固件开发者来说,这是一种挑战,固件开发模式已经发生了巨大的改变;这也是一个机遇,UEFI为计算机系统提供了更丰富的功能,为开发者提供了更强大的开发手段。
为什么写这本书
21世纪什么最重要?大家都知道答案。人才是需要培养的。培养UEFI开发者最重要的是相关开发资料。但是目前UEFI相关的开发资料十分匮乏。UEFI是一种全新的技术,是对BIOS的一种革命,BIOS时代的技术积累很难转移给UEFI。在BIOS时代,BIOS开发采用汇编语言并且与硬件特性息息相关,技术被几大公司垄断,进入BIOS开发领域的门槛高,离开的代价大,相关的技术资料很难在广大程序员中流传。进入UEFI时代后,这种开发特点因为惯性的作用依然会延续一段时间。
UEFI开发对广大C/C++开发者敞开了大门,进入和离开UEFI的门槛降低了很多。相信会有更多的开发者进入和离开固件开发领域,这种流动性也会促进这个领域的繁荣,相关的开发资料也会越来越多,越来越精彩。
本书特色
本书是国内第一本介绍UEFI开发的书籍,希望这本书能改善UEFI开发者无处学习的困境。本书以实战为主,辅以相关理论知识,重要的章节还附有完整的应用程序。力图让读者不仅知道如何开发UEFI程序,还让读者了解为什么这样编程。本书提供了丰富的源代码,让读者可以在实践中快速掌握编程要点。
读者对象
本书内容循序渐进,非常适合刚刚接触UEFI开发的初学者、大专院校在校的学生,也适合对UEFI有一定了解的专业开发者。
如何阅读本书
本书假定读者有基本的C和C++知识,但并不要求读者有固件开发的相关知识。本书将一步一步引导读者熟悉UEFI,随着本书的不断深入,使读者成为UEFI开发专家。
本书从实战的角度介绍如何开发UEFI 应用和驱动,用生动的实例介绍如何使用UEFI提供的服务,同时我们将讲述所需的理论知识以及UEFI的内部实现。本书既可以作为UEFI爱好者的入门教材,也可以帮UEFI开发者更加深入了解UEFI内部实现。
本书不是UEFI开发的参考手册,所以读者在学习过程中最好准备UEFI Spec 2.4以备参考。本书提供了大量的实例程序,读者还需下载TianoCore的源码,边学习边实践。
本书内容编排如下:
第1章UEFI概述介绍UEFI发展的历史及UEFI理论知识,UEFI系统启动到结束可分为7个过程,本章从程序开发的角度阐述了这个过程的执行流程。
第2章介绍UEFI开发环境的搭建,EDK2提供了Linux、Windows、Cygwin等多种开发环境,本章逐步讲述了Linux和Windows下UEFI开发环境的搭建,如何制作OVMF固件,以及如何制作启动盘。
第3章介绍EDK2工程模块及包的概念,主要包括.inf文件、.dsc文件和.dec文件的格式与用法。其中,主要的工程模块包括UEFI应用程序模块、驱动程序模块、库模块、Shell应用程序模块。本章最后讲述了如何在模拟器下调试应用程序。
第4章介绍Protocol的概念和用法。UEFI提供的绝大多数服务都是以Protocol的形式提供的,由此可见其重要性。
第5章介绍UEFI中的基础服务,包括系统表,启动服务和运行时服务。系统表是应用程序进入内核的接口,启动服务用于在启动过程中管理计算机软硬件资源,运行时服务是为操作系统访问固件而提供的服务。
序言
收到书稿,看到熟悉的作者名字,立刻有种开始仔细阅读的冲动。
翻完最后一页,掩卷体会,其中充满了正华苦心钻研技术的精神与回馈社会的热情。
在IT行业各个细分领域里,系统程序员需要埋头于汇编语言/C语言的编辑器、调试器和体系结构的大部头手册,堪称最枯燥、最辛苦的工种之一。在系统领域取得成就的程序员需要有丰富的知识、扎实的技巧和踏实的态度,缺一不可。正华在我们团队开始系统程序员的职业生涯,他从一个普通的C程序员,以孜孜不倦的学习态度,快速成长为一个出色的编程语言和编译器系统的开发骨干。然后,他去了更广阔的天地,直到今天成为UEFI专家。正华的钻研精神和成长经历,是本书在专业内容以外,更值得读者学习和体会的精神食粮。
UEFI是一个很出色的方向。尤其是对有志于学习计算机体系结构和操作系统的初学者来说,UEFI是一个复杂度适中、内容涵盖度超高的学习平台。我们这一代的系统程序员,都是从奔腾/586 CPU、DoS、Windows95、Linux Kernel 2.0时代成长起来的。仔细阅读、修改、调试这些操作系统平台,是我们成长最有效的途径。但是,现代主流桌面操作系统,比如Windows、Linux Ubuntu、Fedora,经过20多年的发展,功能超级丰富,系统设计超级复杂、代码量超级多,已经不适合作为体系结构和操作系统初学者的学习对象。UEFI在恰当的时候填补了这个空缺。相比它的前辈BIOS,UEFI已经涵盖现代操作系统的核心内核功能和外设模块,可以视为一个最最简化版的操作系统。学通、学透UEFI,可以帮助操作系统初学者快速入门。同时,对于安全领域和X86嵌入式领域来说,UEFI是不可或缺的知识构成部分。
本书是正华热情回馈社会的成果。书里详细、具体地再现了一个学习者对UEFI的学习历程。相对于枯燥的手册,这种历程回顾方式的学习材料,更具有可阅读性、可学习性、可操作性。事无巨细地列举了所有环境细节、命令参数,能极大地帮助初学者绕过障碍,专注于核心内容的学习,缩短学习过程。这种貌似简单,实则烦琐的学习总结,需要极大的精力和时间来准备与撰写,正华的回馈精神体现无疑。
希望读者们从内容中获取知识的同时,也体会学习和回馈的精神。
周鑫
英特尔中国研究院大数据和数据经济实验室研究总监
2014年11月23日
媒体评论
——吴甘沙
英特尔中国研究院院长