【UEFI】使用Docker快速部署EDK2开发环境

这篇具有很好参考价值的文章主要介绍了【UEFI】使用Docker快速部署EDK2开发环境。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

最近换了OA,重新配置EDK2开发环境让我窒息,因此我决定把整个EDK2的开发环境打包在Docker镜像中,方便在不同设备上快速构建开发环境,也方便后续对开发环境镜像更新。

1 Linux下的部署方法

主逻辑:

① 安装Docker,基于Ubuntu 20.04

② 创建Dockerfile

③ 编译Docker镜像

④ 启动Docker容器

1.1 安装Docker

1.1.1 卸载旧版本 (如果适用)

如果你之前安装过旧版本的 Docker,首先需要卸载它们。可以使用以下命令来执行卸载:

sudo apt-get remove docker docker-engine docker.io containerd runc

1.1.2 更新 apt 软件包索引

确保你的系统上的 apt 软件包索引是最新的:

sudo apt-get update

1.1.3 安装依赖软件包

Docker 需要一些依赖软件包来正常运行,你可以通过以下命令安装它们:

sudo apt-get install -y \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common

1.1.4 添加 Docker 的官方 GPG 密钥

添加 Docker 官方 GPG 密钥以验证下载的 Docker 软件包的完整性:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

1.1.5 添加 Docker APT 仓库

添加 Docker APT 仓库以便于从它安装 Docker:

sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

1.1.6 更新 apt 软件包索引

再次更新 apt 软件包索引以确保你已经添加的 Docker 仓库已经被包含:

sudo apt-get update

1.1.7 安装 Docker

安装 Docker 软件包:

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

1.1.8 检查安装情况

现在 Docker 已经安装完成。你可以通过运行以下命令来验证 Docker 是否已经正确安装:

sudo docker --version

【UEFI】使用Docker快速部署EDK2开发环境,UEFI,docker

1.2 创建Dockerfile

构建Dockerfile有两种情况,1:拉取github上EDK2的最新source,并直接基于ubuntu20.04进行实时环境搭建并编译镜像;2:直接将本地已搭建好的EDK2的开发环境打包成镜像。我把两种方案都做一遍,但实际工作中只需要任选其一即可,没有优劣,看实际需要决定。

1.2.1 拉取EDK2最新source并编译docker镜像

在ubuntu的桌面上新建名为docker的文件夹并创建Dockerfile:

mkdir docker

cd docker/

touch Dockerfile

开始修改Dockerfile:

sudo gedit Dockerfile

复制下方内容并粘贴到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

【UEFI】使用Docker快速部署EDK2开发环境,UEFI,docker

其实这个部分的逻辑就是之前我基于linux手动搭建开发环境的逻辑,只是通过Dockerfile的方式来自动完成,具体可以对比我之前的文章:【UEFI】Windows和Linux下的环境搭建

1.2.2 打包本地开发环境并编译为镜像文件

我的EDK2开发环境放置在/home/dsy/Desktop/UEFIWorkspace/下,在这个文件夹下创建Dockerfile:

touch Dockerfile

开始修改Dockerfile:

sudo gedit Dockerfile

复制下方内容并粘贴到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
   
# 将所需要的文件夹下的所有文件拷贝到容器的 /workspace 目录下
COPY edk2 /workspace/edk2
COPY edk2-libc /workspace/edk2-libc
COPY edk2-platforms /workspace/edk2-platforms
COPY acpica /workspace/acpica
COPY myexport.sh /workspace

# 将当前文件夹下所有文件和文件夹都拷贝到容器的 /workspace 目录下
# COPY . /workspace

【UEFI】使用Docker快速部署EDK2开发环境,UEFI,docker

需要明确,我的EDK2开发环境是放置在/home/dsy/Desktop/UEFIWorkspace/下的,你们要确认自己的环境位置再针对修改上方路径。

1.3 编译Docker镜像

同样,我把刚刚1.2中的两种不同情况也分开编译。

1.3.1 拉取EDK2的最新source并编译为镜像文件

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

sudo docker build -t edk2_dev_env:1.0 .

【UEFI】使用Docker快速部署EDK2开发环境,UEFI,docker

1.3.2 打包本地开发环境并编译为镜像文件

直接在/home/dsy/Desktop/UEFIWorkspace/,开始编译Docker镜像,命名为edk2_dev_env_local,版本号为1.0,前方的镜像命名必须为小写,缩写含义为(EDK2_Development_Environment_Local):

sudo docker build -t edk2_dev_env_local:1.0 .

【UEFI】使用Docker快速部署EDK2开发环境,UEFI,docker

1.4 启动Docker容器

1.4.1 启动1.3.1中生成的edk2_dev_env:1.0镜像

sudo docker run -it --name container_edk2_dev_env edk2_dev_env:1.0

 接下来就可以正常执行uefi代码编译和开发了。

【UEFI】使用Docker快速部署EDK2开发环境,UEFI,docker

1.4.2 启动1.3.2中生成的edk2_dev_env_local:1.0镜像

sudo docker run -it --name container_edk2_dev_env_local edk2_dev_env_local:1.0

【UEFI】使用Docker快速部署EDK2开发环境,UEFI,docker

2 常用命令

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)文章来源地址https://www.toymoban.com/news/detail-853239.html

到了这里,关于【UEFI】使用Docker快速部署EDK2开发环境的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【UEFI基础】EDK网络框架(UDP4)

    UDP的全称是 U ser D atagram P rotocol,它不提供复杂的控制机制,仅利用IP提供面向无连接的通信服务。它将上层应用程序发来的数据在收到的那一刻,立即按照原样发送到网络。 UDP报文格式: 各个参数说明如下: 字段 长度(字节) 描述 Source Port 2 发送端口,标识哪个应用程序

    2024年01月22日
    浏览(32)
  • 【UEFI基础】EDK网络框架(TCP4)

    相比UDP4,TCP4是一种面向连接的通信协议,因此有更好的可靠性。 TCP4的首部格式如下: 各个参数说明如下: 字段 长度(bit) 含义 Source Port 16 源端口,标识哪个应用程序发送。 Destination Port 16 目的端口,标识哪个应用程序接收。 Sequence Number 32 序号字段。 TCP链接中传输的数

    2024年01月22日
    浏览(31)
  • docker快速部署oracle19c、oracle12c,测试环境问题复现demo快速搭建笔记

    (复制sql,替换表名执行完毕后,再修改自己想要的字段即可) (复制sql,替换自己的表名) 一个oracle表示一个实例,一个实例可以配置多个服务,独立维护的oracle服务 一个服务内可以有多个表空间,默认表空间就有很多,比如常见的SYSTEM、TEMP、USERS 常见的默认角色: 1、

    2024年02月04日
    浏览(60)
  • golang—kafka架构原理快速入门以及自测环境搭建(docker单节点部署)

    Apache Kafka 是一个分布式的流处理平台。它具有以下特点: 支持消息的发布和订阅,类似于 RabbtMQ、ActiveMQ 等消息队列 支持数据实时处理 能保证消息的可靠性投递 支持消息的持久化存储,并通过多副本分布式的存储方案来保证消息的容错 高吞吐率,单 Broker 可以轻松处理数千

    2024年02月04日
    浏览(52)
  • 使用Docker快速部署MySQL

    使用Docker安装,仅仅需要一步即可,在命令行输入下面的命令 MySQL安装完毕!通过任意客户端工具即可连接到MySQL.         当我们执行命令后,Docker做的第一件事情,是去自动搜索并下载了MySQL,然后会自动运行MySQL,我们完全不用插手。         而且,这种安装方式

    2024年02月19日
    浏览(42)
  • docker部署nodejs开发环境,基础示例篇

    一直想写一个关于多容器开发环境,以后会逐步更新,今天先从简单的hello world开始吧 下面的例子来自于 https://nodejs.org/zh-cn/docs/guides/nodejs-docker-webapp/ 一共4个文件,分别是 dockerfile docker-compose.yml package.json server.js 注意哦!!! 第10行 volumes里必须要把container中的node_modules映射

    2023年04月18日
    浏览(34)
  • 使用docker快速搭建hive环境

    写在前面 想练练Hive SQL,但是没有hive shell环境。现在只有一台空的CentOS 7机子,一想要弄jdk、hadoop、mysql、hive就头疼。 于是在网上找了找,发现用docker部署hive会快很多,在此记录一下部署过程。 以下过程每一步在文末都附有参考文档,出错的朋友可以去看对应的参考文档。

    2024年01月22日
    浏览(39)
  • 使用Docker快速部署ES单机

    所有的操作都是基于Docker来的,没有装Docker的话请参照官方文档安装 初始化相关目录 准备配置文件 将下面的内容粘贴到elasticsearch.yml 修改系统设置 修改该配置是为了防止es在启动时出现下面的错误 添加ik分词器 ik分词器为常用的中文分词器,如果你不需要用到中文搜索,这

    2024年02月11日
    浏览(43)
  • Docker快速上手:使用Docker部署Drupal并实现公网访问

    Dupal是一个强大的CMS,适用于各种不同的网站项目,从小型个人博客到大型企业级门户网站。它的学习曲线可能相对较陡,但一旦熟悉了它的工作方式,用户就能够充分利用其功能和灵活性。在本文中,我们将介绍如何使用Docker快速部署Drupal,并且结合cpolar内网穿透工具实现公

    2024年02月08日
    浏览(46)
  • Superset二次开发之环境部署(Docker版)

    /data/superset ├── 3.x-build.sh                                                –   docker build 命令脚本 ├── 3.x-run.sh                                                   –   docker run 命令脚本 ├── src                                                   

    2024年02月19日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包