# Ubuntu 20.04 安装EDK2

By [Tinychenlin](https://paragraph.com/@cryptometaman) · 2021-11-23

---

(1) Ubuntu 20.04 添加源

    $sudo vim  /etc/apt/sources.list
    
    deb http://mirrors.aliyun.com/ubuntu/ xenial main
    deb-src http://mirrors.aliyun.com/ubuntu/ xenial main
    
    deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main
    deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main
    
    deb http://mirrors.aliyun.com/ubuntu/ xenial universe
    deb-src http://mirrors.aliyun.com/ubuntu/ xenial universe
    deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
    deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
    
    deb http://mirrors.aliyun.com/ubuntu/ xenial-security main
    deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main
    deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe
    deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security universe
    
    $sudo apt update
    

(2)安装依赖包

    $sudo apt install git python3 python3-distutils uuid-dev nasm bison flex
    $sudo apt install gcc g++ build-essential qemu qemu-system
    $sudo apt install libx11-dev x11proto-xext-dev libxext-dev 
    

(3)安装gcc-5 并配置多版本gcc

    $apt install gcc-5 g++-5
    $sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 40
    $sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-5 40
    $sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 50
    $sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-9 50
    $sudo update-alternatives --config gcc
    $sudo update-alternatives --config g++
    

(4)获取源代码和编译

    $git config --global url."https://hub.fastgit.org".insteadOf https://github.com
    $git clone https://github.com/tianocore/edk2.git
    $git clone https://github.com/tianocore/edk2-libc.git
    $git clone https://github.com/acpica/acpica.git
    $cd edk2
    $git submodule update --init
    $cd ..
    $make -C edk2/BaseTools
    $make -C acpica/
    $gvim mybuild.sh
    #!/bin/bash
    export WORKSPACE=$PWD
    export PACKAGES_PATH=$PWD/edk2:$PWD/edk2-libc
    export IASL_PREFIX=$PWD/acpica/generate/unix/bin/
    export PYTHON_COMMAND=/usr/bin/python3
    $sudo chmod a+x mybuild.sh
    $source ./mybuild.sh
    $source source edk2/edk2setup.sh
    $build -p  edk2/EmulatorPkg/EmulatorPkg.dsc -a X64 -t GCC5 
    

(5)坑

（a) 强制将Os 变成O0， 即不优化

(b)报 \[RegisterFilterLib\] is not found， 将自己的dsc文件中添加

!include MdePkg/MdeLibs.dsc.inc

---

*Originally published on [Tinychenlin](https://paragraph.com/@cryptometaman/ubuntu-20-04-edk2)*
