玩转Mac OS之UEFI(一)----Mac下搭建UEFI开发环境

EFI:

它是一种可扩展固件接口,英文名Extensible Firmware Interface 的缩写,是英特尔一个主导个人电脑技术研发的公司推出的一种在未来的类PC的电脑系统中替代BIOS的升级方案

UEFI:

新型UEFI,全称“统一的可扩展固件接口”(Unified Extensible Firmware Interface), 是一种详细描述类型接口的标准。这种接口用于操作系统自动从预启动的操作环境,加载到一种操作系统上。
可扩展固件接口(Extensible Firmware Interface,EFI)是 Intel 为 PC 固件的体系结构、接口和服务提出的建议标准。其主要目的是为了提供一组在 OS 加载之前(启动前)在所有平台上一致的、正确指定的启动服务,被看做是有近20多年历史的 BIOS 的继任者。
UEFI是由EFI1.10为基础发展起来的,它的所有者已不再是Intel,而是一个称作Unified EFI Form的国际组织。

二者的区别

  • EFI: v1.0版本 现在被用于Mac OS上
  • UEFI: v2.0版本 适用于大多数PC电脑, 不兼容EFI的v1.0版本

如何在Mac上开发UEFI

目前开发UEFI有以下两种选择

  • GNU_EFI_ToolKit
  • EDK II
    本次主要讲述在如何在Mac OS上搭建EDK II 开发环境,EDK II是开源的,源码放在GitHub上,并且提供了相应的build方法。不过对于像一些初次接触的人开说,编译起来还是非常困难的。就像小编足足花了一周多混迹在Google、Bing、Baidu才终于给编译成功。说起来这个问题也很是难受,小编在UBuntu、Windows上都编译的好好的,一到Mac上就出各种问题。都是眼泪啊!!

在开始之前介绍本次的编译环境

  • 电脑: Mac Book Pro 2017
  • 系统:Mac OS 10.12.6
  • Xocde:9.0.1
System
Xcode
GCC

在开始编译EDK II之前 需要安装依赖的程序
打开http://www.opensource.apple.com/在Developer Tools下选择最新的版本号单击进去目前最高是8.2.1,然后找到cctools-895下载,895指版本号,目前最高版本是895。
打开http://llvm.org/releases/download.html#5.0在Sources下下载LLVM Source Code目前小编这里是LLVM5.0.0
接下来把 llvm-5.0.0.src/include/llvm-c这个文件夹里的内容复制到cctools-895/include/llvm-c 这个文件夹里面 注意:不要覆盖原有的Disassembler.h文件
打开http://pan.baidu.com/s/1c2xYBVM下载libprunetrie.a 将该文件下载后复制到/usr/local/lib/目录下 部分电脑如果没有这个文件夹,那么就自行创建吧
打开http://pan.baidu.com/s/1miMeR9Y下载prnue_trie.h将该文件下载后复制到cctools-895/include/mach-o/文件夹

打开终端

$ cd cctools-895/
$ make

最后出现“dsymutil ./mtoc.NEW”就算编译成功了 接着在终端输入

$ cd cctools-895/efitools/
$ sudo cp mtoc.NEW /usr/local/bin/mtoc

同样如果出现没有这个文件夹的话,自行创建

安装HomeBrew

$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

安装NASM

$ brew install nasm
$ brew upgrade nasm

安装ACPI Compiler

$ brew install acpica
$ brew upgrade acpica

安装Git

brew install git
brew upgrade git

到现在为止前期的准备工作已经做好了,接下来就是编译EDK II

$ cd ~/
$ mkdir ./work
$ cd ~/work
$ git clone https://github.com/tianocore/edk2.git
$ cd ./edk2/BaseTools
$ make

配置编译环境,由于每次编译新项目都需要配置编译环境所以写一个脚本更方便。
打开Vim - 新建文件 命名为:sourcemesetup.sh
脚本内容

export EDK_TOOLS_PATH=$PWD/BaseTools
export NASM_PREFIX=/usr/local/Cellar/nasm/2.13.01/bin/
source edksetup.sh BaseTools

脚本要执行需要添加一个可执行权限

$ cd edk2
$ chmod a+x sourcemesetup.sh

修改编译方式
在edk2/Conf/路径下的target.txt 保存着edk2的编译方式
搜索 ACTIVE_PLATFORM 改为 MdeModulePkg/MdeModulePkg.dsc
搜索 TARGET_ARCH 改为 X64
搜索Tools_CHAIN_TAG 改为 XCODE5

target.txt
$ cd edk2
$ source sourcemesetup.sh
$ build 

在编译的过程中肯定会出现编译错误
例如 [-Werror, -Wvarags]


编译错误

像这样的编译错误,可以在edk 2的编译选项中增加字段来解决
打开edk2/Conf/tools_def.txt
搜索 DEBUG_XCODE5_X64_CC_FLAGS
将-Wno-varags 添加进去保存后退出

tools_def.txt

在接下来出现的一些错误同理解决

到此为止,在Mac上的EDK II 开发环境已经搭建完成了!

小编也是初次接触UEFI,能力有限,有错误的话还请指正。如果您也是UEFI的开发人员。欢迎留下联系方式,大家一起交流,共同进步。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,445评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,889评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,047评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,760评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,745评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,638评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,011评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,669评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,923评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,655评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,740评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,406评论 4 320
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,995评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,961评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,023评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,483评论 2 342

推荐阅读更多精彩内容

  • 4.x86 CPU架构设计 4.1.x86硬件需求 对于通用交换机硬件需求,请参阅“交换机硬件需求”章节描述。 x...
    半天妖阅读 5,368评论 0 1
  • 说明 这是一篇使用ASUS N45SL电脑安装Mac OS X EI Capitan的教程。此教程的部分文字和图片...
    xiaer阅读 7,040评论 3 9
  • 从Intel 6系列主板之后,就开始提供UEFI BIOS支持,正式支持GPT硬盘分区表,一举取代了此前的MBR分...
    DecadeHeart阅读 1,686评论 0 1
  • 引导过程:EFI 和 iBoot 引导过程指的是从就计算机通电那一瞬间到CPU开始执行操作系统代码时的整个过程,这...
    CoderKo1o阅读 1,942评论 0 1
  • 觉得汤姆绝对是一个很神奇的存在,应该算是唯一一个真正让我觉得喜欢的人。我自己是那种不喜欢关心明星八卦的那种人,所以...
    廉笺阅读 980评论 0 0