├── .travis.yml ├── Dockerfile ├── README.md ├── VERSION ├── build.sh └── container-config /.travis.yml: -------------------------------------------------------------------------------- 1 | env: 2 | global: 3 | - secure: Mk6fBZaJN4lTVUjUvrOb+vW49KGxPHKdeTekRLy5DJLGwwFa6W3RNSMA3NF/lrbV8OTwRg2jiofvlqY8YIlG6UJaSc66d+xxOIhZAgiub+MANCS5912Qd77qmduWJ/S3XwrdjzmQrb7iV5uRD/+rWpuEsfNuJUD3V/HeV4mVoVVx9sd8pr2bxAcHejtxxuGsQM6X9dW/OFhTNC7tP3qYfrilmkZybcR4QgDybqhCnIPBdpT2kfgL01L4+1ahn1/ZhllLLF7nEQwIj4bD0gtUkKDHOWP0Ol0Bap+ANeWheVL6wp27prsGBvRFtSa5W7zMxIbcKUcCXxSBfR3htn7RZDhB3sPXUP2U6RL4K1DD4XME2cz+AXAAIQ41lDTzEsGxYgZsNO52vp2+u1qTEAzoSWdUKms1cWqkDmCbiUqNWHAqP4Kepdg5TfeXmHm8whmdo/jehfQ7E7qDdBH7qAvxquwPgTv6X1qRjMw7RVMnaD9AVsCBg+JLwvNqUB4/FV+QG5VK1BVYlX9qzwCYwnia6TzcBOD/b0DCfpqMwwJ9wHDUNkv1cgDHR9DkM+QzU7j74iIYdTNNX9ha11dVkNKtkwwEo/Da3nSzs8O0DqDbJ3a3gG8cyhgmc/fQbF/GI2Zub+xM2kqT8E89wwELcArz7+Y/Fa1LAnoQ8ffYEkcIvfI= 4 | - secure: cyIYq3Y1r0AV/rYcnogAwuWWxMv2DipZak9OUWlLbATNYpAdZZxeI3MDCeqiwS+Xm2X2Ti3f1vmiRC3cLJqupJ/PT8NS5HISxjZXNDusr8VCkRDTfH9nz+yYHaR1y2VFN/I42GFJ5TiuBSC02VTpG14eJKgcvi54qE53RaNKxjog9PkqutU7ULbpdFohac4nybyYky0ZCtCaTpJaQEp6sd9z5r0etnFfhCIGcYqiE74Ct44bgwnqMIAXjtosN5OPZ8nbAAvWVi57ttptcvlLVQAZymqmz5WTXZQtEHVsQDwq/DhSk03h/VQRXQnPyHPCRsKRnr8miu59j6bWYI5QwXdMduyqPcHOarehXKGgQDl/VyL9Jb8zVCYTqxv9QWx89A30qukxNJNJgzRtWHJ7VyIqS6cRN7edYsjLYFx6hmgCgmO6WDeGdQJTPaWP+EYsd6Jsi/PF/Xtz1242Ghu45/ZsIpXnlw22TviZnPqkMS6pSRIZUQntI+JTd4jWt3CXeXJIK8AWFGG4jh7wsnm5qroIZtZU3egl4N8eLoWGl/BWgwsX+TZZQbdf4FIB8czHqMgkP8C6tHyfUvxXfUAw9L1edZhx/wgz+Am+oHkhSyoiCPbBL6kH1cWQOtVg7nzq27LhQcVFCHgFHaOMLd+f4Wm7m3OtavzTp3yQojEGpqk= 5 | - MANAGER_SH="release-manager.sh" 6 | - MANAGER_URL="https://raw.githubusercontent.com/3mdeb/docker-release-manager/master/release-manager.sh" 7 | 8 | sudo: required 9 | 10 | services: 11 | - docker 12 | 13 | before_script: 14 | - wget -O $MANAGER_SH $MANAGER_URL 15 | 16 | script: 17 | - bash $MANAGER_SH build 18 | 19 | after_script: 20 | - docker images 21 | 22 | deploy: 23 | skip_cleanup: true 24 | provider: script 25 | script: 26 | - bash $MANAGER_SH push 27 | on: 28 | branch: master 29 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:16.04 2 | MAINTAINER Piotr Król 3 | 4 | RUN \ 5 | DEBIAN_FRONTEND=noninteractive apt-get -qq update && \ 6 | DEBIAN_FRONTEND=noninteractive apt-get -qqy install \ 7 | ccache \ 8 | build-essential \ 9 | python \ 10 | python-pip \ 11 | qemu \ 12 | sudo \ 13 | vim \ 14 | libgcc-5-dev \ 15 | uuid-dev \ 16 | nasm \ 17 | iasl \ 18 | git \ 19 | gcc-aarch64-linux-gnu \ 20 | gcc-arm-linux-gnueabihf \ 21 | wget \ 22 | zip \ 23 | && DEBIAN_FRONTEND=noninteractive apt-get clean 24 | 25 | RUN pip install -q uefi_firmware 26 | 27 | RUN useradd -m edk2 && \ 28 | echo "edk2:edk2" | chpasswd && \ 29 | adduser edk2 sudo 30 | 31 | RUN mkdir /home/edk2/.ccache && \ 32 | chown edk2:edk2 /home/edk2/.ccache 33 | 34 | VOLUME /home/edk2/.ccache 35 | 36 | USER edk2 37 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | edk2-docker 2 | =========== 3 | 4 | This container aim to provide portable and host independent compilation 5 | environment for edk2 Open Source reference implementation of UEFI and PI 6 | specifications. 7 | 8 | Usage 9 | ----- 10 | 11 | ``` 12 | docker pull 3mdeb/edk2 13 | ``` 14 | 15 | Build 16 | ----- 17 | 18 | ``` 19 | git clone https://github.com/3mdeb/edk2-docker.git 20 | cd edk2-docker 21 | docker build -t 3mdeb/edk2:latest . 22 | ``` 23 | 24 | Building firmware for MinnowBoard Turbot 25 | ---------------------------------------- 26 | 27 | Note that `edk2-platforms` is actively developed and may require different 28 | versions of binary objects in the future. Check [MinnowBoard Max/Turbot - UEFI Firmware](https://firmware.intel.com/projects/minnowboard-max) 29 | for the latest version. Do not forget to change the directory name in `docker` 30 | command accordingly. 31 | 32 | ``` 33 | $ docker pull 3mdeb/edk2 34 | $ git clone https://github.com/tianocore/edk2.git -b vUDK2017 35 | $ git clone https://github.com/tianocore/edk2-platforms.git -b devel-MinnowBoardMax-UDK2017 36 | $ wget https://firmware.intel.com/sites/default/files/minnowboard_max-1.00-binary.objects.zip 37 | $ unzip minnowboard_max-1.00-binary.objects.zip 38 | $ cd edk2/CryptoPkg/Library/OpensslLib 39 | $ git clone -b OpenSSL_1_1_0e https://github.com/openssl/openssl openssl 40 | $ cd ../../../.. 41 | $ docker run --rm -it -w /home/edk2 -v $PWD/edk2:/home/edk2/edk2 \ 42 | -v $PWD/edk2-platforms:/home/edk2/edk2-platforms \ 43 | -v $PWD/MinnowBoard_MAX-1.00-Binary.Objects:/home/edk2/silicon \ 44 | -v ${CCACHE_DIR:-$HOME/.ccache}:/home/edk2/.ccache \ 45 | 3mdeb/edk2 /bin/bash 46 | (docker)$ cd edk2-platforms/Vlv2TbltDevicePkg/ 47 | (docker)$ . Build_IFWI.sh MNW2 Debug 48 | ``` 49 | 50 | Building firmware for QEMU AArch64 51 | ---------------------------------- 52 | 53 | ``` 54 | $ docker pull 3mdeb/edk2 55 | $ git clone https://github.com/tianocore/edk2.git 56 | $ docker run --rm -it -w /home/edk2/edk2 -v $PWD/edk2:/home/edk2/edk2 \ 57 | -v $PWD/edk2-platforms:/home/edk2/edk2-platforms \ 58 | -v ${CCACHE_DIR:-$HOME/.ccache}:/home/edk2/.ccache \ 59 | 3mdeb/edk2 /bin/bash 60 | (docker)$ git submodule update --init --checkout 61 | (docker)$ . edksetup.sh 62 | (docker)$ make -C BaseTools 63 | (docker)$ GCC5_AARCH64_PREFIX=aarch64-linux-gnu- build -a AARCH64 -t GCC5 -p ArmVirtPkg/ArmVirtQemu.dsc 64 | ``` 65 | 66 | Building firmware for Versatile Express ARM 67 | ------------------------------------------- 68 | 69 | ``` 70 | $ docker pull 3mdeb/edk2 71 | $ git clone https://github.com/tianocore/edk2.git 72 | $ cd edk2 73 | $ git clone https://github.com/tianocore/edk2-platforms.git 74 | $ cd .. 75 | $ docker run --rm -it -w /home/edk2/edk2 -v $PWD/edk2:/home/edk2/edk2 \ 76 | -v $PWD/edk2-platforms:/home/edk2/edk2-platforms \ 77 | -v ${CCACHE_DIR:-$HOME/.ccache}:/home/edk2/.ccache \ 78 | 3mdeb/edk2 /bin/bash 79 | (docker)$ git submodule update --init --checkout 80 | (docker)$ . edksetup.sh 81 | (docker)$ make -C BaseTools 82 | (docker)$ export PACKAGES_PATH=/home/edk2/edk2:/home/edk2/edk2/edk2-platforms 83 | (docker)$ GCC5_ARM_PREFIX=arm-linux-gnueabihf- build -a ARM -t GCC5 -p Platform/ARM/VExpressPkg/ArmVExpress-CTA15-A7.dsc 84 | ``` 85 | -------------------------------------------------------------------------------- /VERSION: -------------------------------------------------------------------------------- 1 | 1.2.1 2 | -------------------------------------------------------------------------------- /build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | USERNAME="3mdeb" 4 | IMAGE="edk2" 5 | 6 | docker build -t $USERNAME/$IMAGE:latest . 7 | -------------------------------------------------------------------------------- /container-config: -------------------------------------------------------------------------------- 1 | DOCKER_USER_NAME="3mdeb" 2 | DOCKER_IMAGE_NAME="edk2" 3 | --------------------------------------------------------------------------------