1.UEFI环境搭建

在这里插入图片描述

前言

因为之前一直有一个小想法,所以接触到了UEFI的知识点,所以就开始进行相关知识点的学习记录,当然最后的想法能不能成功倒是没有那么重要,最重要的还是能够从中学习到东西。因为全凭个人兴趣,所有的资料书写都来自书籍和实践,如有侵权,联系我删除。
另外因为兴趣使然,注定是随缘更新,也不知道会不会有人喜欢这个系列。

🧑🏻作者简介:一个设计转行计算机的年轻人
✨联系方式:最下面微信
全文大约阅读时间: 60min



环境说明

因为本人有wsl的环境,所以所有的环境搭建全部都在wsl下操作完成。不确定后期会不会切换,暂时从环境运行等情况来看,wsl22.04完全可以满足需求,如果不清楚wsl的安装可以看我这篇安装指南,如果遇到问题可以先看我的问题记录


开发环境的安装

依赖安装

sudo apt install git python3 uuid-dev nasm bison flex build-essential 

上面安装的文件都可以看到,其中git是非常常用的代码管理工具,大名鼎鼎的GitHub就是依托相关技术的产物,python3是环境依赖,uuid-dev包含了包含了编译的源文件,NASM用来汇编X86,BISONFLEX在编译ACPICA作为依赖。build-essential是开发运行的工具包,包含常用的gccmake等工具。

源码下载

mkdir UEFIWorkspace
cd UEFIWorkspace
git clone https://github.com/tianocore/edk2
git clone https://github.com/tianocore/edk2-libc
git clone https://github.com/acpica/acpica

经过上面的命令我们下载了三个git库,前两个是uefi编译的核心库,第三个是acpi编译的库。
注:博主玩过黑苹果,接触过acpi,黑苹果里电池修补就需要这个,其实就是BIOS提供给OS的接口。

配置开发环境

1.下载submodule

edk2有一些别的仓库的依赖,所以需要下载。需要先进入edk2目录然后执行下面的代码:

~/UEFIWorkspace/edk2$ git submodule update --init

2.编译ACPICA

为了之后可以编译acpi,需要编译IASL编译器,其实也有发行版,但是编译的更靠谱。

~/UEFIWorkspace$ make -c ./acpica/

3.编译BaseTools

编译UEFI需要一些小工具,这个地方需要用源码编译一下。

~/UEFIWorkspace/edk2$ make -c BaseTools

4.设置开发环境

新建envexport.sh,内容如下

export WORKSPACE=$PWD #设置工作目录
export PACKAGES_PATH=$PWD/edk2:$PWD/edk2-libc #设置edk2的依赖路径
export IASL_PREFIX=$PWD/acpica/generate/unix/bin/ #设置acpi编译器位置
export PYTHON_COMMAND=/usr/bin/python3 #设置python路径

其中PWD是linux的当前路径,也就说这个脚本执行只能在edk2上层。

编译UEFI模拟器和程序

编译UEFI模拟器

注:每次需要编译的时候这两句必须执行,否则会报错东西找不到!!!!

source envexport.sh
source edk2/edksetup.sh

接下来开始编译模拟器:

build -p edk2/EmulatorPkg/EmulatorPkg.dsc -t GCC5 -a IA32 #编译32位模拟器
build -p edk2/EmulatorPkg/EmulatorPkg.dsc -t GCC5 -a X64 #编译64位模拟器

因为我本身就是64位平台,并且32不常用我就只编译了64位模拟器。


编译UEFI程序

编译UEFI包

build -p edk2-libc/AppPkg/AppPkg.dsc -t GCC5 -a X64

编译UEFI包里的程序(.efi)

build -p edk2/MdeModulePkg/MdeModulePkg.dsc -m edk2/MdeModulePkg/Application/HelloWorld/HelloWorld.inf -a X64 -t GCC5

使用模拟器运行

自带模拟器运行

我们可以用上面我们编译出来的编译器直接运行,运行方法如下:

cd Build/EmulatorX64/DEBUG_GCC5/X64 && ./Host

在这里插入图片描述

qemu运行

qemu是大名鼎鼎的模拟器,可以完全模拟一个真实的环境,当然还是有稍微的区别,但是做少量修改就可以放到真机执行。
先进行安装

sudo apt install qemu

qemu运行的时候需要的是OVMF镜像,所以我们需要进行一下编译

build -p edk2/OvmfPkg/OvmfPkgX64.dsc -t GCC5 -a X64 -b DEBUG

然后需要建立目录结构:

~/UEFIWorkspace$ mkdir _ovmf_dbg
~/UEFIWorkspace$ cd _ovmf_dbg/
~/UEFIWorkspace/_ovmf_dbg$ cp ../Build/OvmfX64/DEBUG_GCC5/FV/OVMF.fd ./
~/UEFIWorkspace/_ovmf_dbg$ mkdir hda-contents
~/UEFIWorkspace/_ovmf_dbg$ cp ../Build/OvmfX64/DEBUG_GCC5/X64/HelloWorld.* ./hda-contents/

然后就可以进行启动qemu:

qemu-system-x86_64 -s -pflash OVMF.fd -hda fat:rw:hda-contents/ -net none -debugcon file:debug.log -global isa-debugcon.iobase=0x402

在这里插入图片描述

真机运行

build -a IA32 -a X64 -p edk2/ShellPkg/ShellPkg.dsc -t GCC5 -b RELEASE

然后在Build/Shell/RELEASE_GCC5/IA32X64文件下会有shel_xxxx.efi,拷到u盘(需要是FAT分区,FAt16或者FAT32都可以)中的efi\boot目录下,命名为bootx32.efibootx64.efi就可以真机运行了。

总结

这次是开坑的文章,主要记录一下编译运行的过程,下一篇开始就进入正式的UEFI程序模块学习。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

XingleiGao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值