[App Sharing] [UEFI-EDK2-学习笔记] 搭建EDK2开发环境
Tofloor
poster avatar
trufane
deepin
2024-01-02 22:41
Author

一、摘要

1、安装开发工具

2、获取源码

3、配置开发环境

二、正文

1、安装开发工具

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

2、获取源码

  1. 由于edk2仓库存储在github上,而国内访问 github很不稳定且速度较慢,因此可以利用国内镜像站获取github仓库源码,用镜像站替换https://github.com 即可。目前可用的镜像站有:https://kkgithub.com https://hub.njuu.cf https://hub.nuaa.cf https://hub.yzuu.cf。
  2. 创建UIFI工作目录:mkdir UEFIWorkspace
  3. 进入UEFIWorkspace:cd UEFIWorkspace
  4. 获取edk2 源码:git clone https://hub.njuu.cf/tianocore/edk2
  5. 获取elk2-libc源码:git clone https://hub.njuu.cf/tianocore/edk2-libc
  6. 获取acpica源码:git clone https://hub.njuu.cf/acpica/acpica

3、配置开发环境

  1. 由于edk2中引用了其他仓库,而clone下来的edk2中只包含其仓库的引用,因此还需要进行代码同步:

    1. 进入UEFIWorkspace/edk2
    2. 编辑 .gitmodules文件,将所有的https://github.com替换为国内镜像,如https://hub.njuu.cf,保存并退出;
    3. 获取代码: git submodule update --init
  2. 编译 acpica:

    1. 进入 UEFIWorkspace
    2. make -C ./acpica
  3. 编译BaseTools:

    1. 进入UEFIWorkspace/edk2
    2. make -C ./BaseTools
  4. 创建工具路径脚本

    1. 进入UEFIWorkspace
    2. vim init_env.sh
    3. 添加以下内容:
      export WORKSPACE=$PWD
      export PACKAGES_PATH=$WORKSPACE/edk2:$WORKSPACE/edk2-libc/
      export LASL_PREFIX=$WORKSPACE/acpica/generate/unix/bin/
      export PYTHON_COMMAND=/user/bin/python3
      
    4. 保存并退出: :wq
  5. 此后每次新建终端均要执行以下命令才能正常开始编译:

    1. source init_env.sh
    2. source edk2/edksetup.sh
  6. 编译模拟器并运行 HelloWorld

    1. 进入 UEFIWorkspace
    2. 执行编译命令:build -p edk2/EmulatorPkg/EmulatorPkg.dsc -t GCC5 -a X64 -b RELEASE
    3. 输出结果在 Build/目录下
    4. 启动模拟器:cd Build/EmulatorX64/RELEASE_GCC5/X64/ && ./Host
    5. 启动后输入:fs0: (注意要输入冒号 :)
    6. 输入 HelloWorld.efi
    7. 成功的话可以看到输出: UEFI Hello World !
      截图 2024-01-02 15-00-02.png
  7. 至此,UIFI开发环境就算搭建完成

Reply Favorite View the author
All Replies

No replies yet