UEFI EDK2环境安装

部署环境

vmvare15.0 + ubuntu20.04 + docker
edk2 源码

具体步骤

docker安装

# 更新apt软件包索引
sudo apt-get update

# 添加docker依赖
sudo apt-get install -y \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common

# 添加docker 官方GPG密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

# 安装docker
sudo apt-get install -y docker-ce docker-ce-cli containerd.io

# 检查安装情况
sudo docker --version

安装情况如下
image.png

拉取EDK2代码

mkdir docker
cd docker/
touch Dockerfile

# 修改Dockerfile文件
sudo gedit Dockerfile

复制下方内容并粘贴到该文件中

 # 使用基础的 Ubuntu 镜像
FROM ubuntu:latest
 
 # 设置工作目录
WORKDIR /workspace
 
 # 更新 apt 软件包索引并安装所需软件包
RUN apt-get update && apt-get install -y \
    git \
    python3 \
    uuid-dev \
    nasm \
    bison \
    flex \
    build-essential \
    x11proto-xext-dev \
    libx11-dev \
    libxext-dev
 
 # 下载 EDK2 及其他必要开发包
RUN git clone http://github.com/tianocore/edk2.git && \
    git clone http://github.com/tianocore/edk2-libc.git && \
    git clone http://github.com/acpica/acpica.git
 
 # 更新 SubModule
RUN cd edk2 && git submodule update --init
 
 # 编译 BaseTools
RUN make -C edk2/BaseTools PYTHON_COMMAND=/usr/bin/python3
 
 # 编译 ACPICA
RUN make -C acpica/
 
 # 设置开发工具地址
 RUN echo "export WORKSPACE=\$PWD" >> /workspace/myexport.sh \
    && echo "export PACKAGES_PATH=\$PWD/edk2:\$PWD/edk2-libc" >> /workspace/myexport.sh \
    && echo "export IASL_PREFIX=/workspace/acpica/generate/unix/bin/" >> /workspace/myexport.sh \
    && echo "export PYTHON_COMMAND=/usr/bin/python3" >> /workspace/myexport.sh \
    && echo "source edk2/edksetup.sh" >> /workspace/myexport.sh
 
 # 设置脚本可执行权限
RUN chmod +x /workspace/myexport.sh
 
 # 设置环境变量
ENV WORKSPACE=/workspace
ENV PACKAGES_PATH=/workspace/edk2:/workspace/edk2-libc
ENV IASL_PREFIX=/workspace/acpica/generate/unix/bin/
ENV PYTHON_COMMAND=/usr/bin/python3

编译

  1. 拉取EDK2的github source并编译为Docker镜像,命名为edk2_dev_env,版本号为1.0,前方的镜像命名必须为小写,缩写含义为(EDK2_Development_Environment):
sudo docker build -t edk2_dev_env:1.0 .

编译结果如下:
image.png

  1. 启动生成的镜像
 sudo docker run -it --name container_edk2_dev_env edk2_dev_env:1.0

image.png

  1. 运行镜像
build -p edk2/EmulatorPkg/EmulatorPkg.dsc -t GCC5 -a X64

image.png
image.png

qemu运行

# 安装 qemu
sudo apt-get install qemu-system-x86

# 生成OVMF固件
build -p edk2/OvmfPkg/OvmfPkgX64.dsc -a X64 -t GCC5
cd Build/OvmfX64/DEBUG_GCC5/FV/
qemu-system-x86_64 -bios OVMF.fd -nographic

# qemu界面 使用 Ctrl+A 然后 X 退出
# docker界面 使用 exit退出

运行效果
image.png

参考文献

常见docker指令

 sudo docker ps -a                                 显示所有正在运行和已停止的 Docker 容器的列表
 sudo docker rm container_name/id                  删除容器(提供名称或ID)
 sudo docker restart container_name/id             重新启动容器(提供名称或ID)
 sudo docker exec -it container_name/id /bin/bash  以命令行的形式执行容器
 sudo docker images                                显示所有Docker镜像的列表
 sudo docker rmi image_name/id                     删除镜像(提供名称或ID)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

-特立独行的猪-

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

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

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

打赏作者

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

抵扣说明:

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

余额充值