github.com/insomniacslk/u-root@v0.0.0-20200717035308-96b791510d76/.circleci/images/test-image-arm64/Dockerfile (about)

     1  # Copyright 2020-2021 the u-root Authors. All rights reserved
     2  # Use of this source code is governed by a BSD-style
     3  # license that can be found in the LICENSE file.
     4  
     5  FROM cimg/go:1.13
     6  
     7  # Install dependencies
     8  RUN sudo apt-get update &&                          \
     9      sudo apt-get install -y --no-install-recommends \
    10          `# Linux dependencies`                      \
    11          git                                         \
    12          bc                                          \
    13          bison                                       \
    14          flex                                        \
    15          gcc-aarch64-linux-gnu                       \
    16          libssl-dev                                  \
    17          make                                        \
    18          `# QEMU dependencies`                       \
    19          python                                      \
    20          libglib2.0-dev                              \
    21          libfdt-dev                                  \
    22          libpixman-1-dev                             \
    23          zlib1g-dev                                  \
    24          libcap-dev                                  \
    25          libattr1-dev                                \
    26          `# Linux kernel build deps`                 \
    27          libelf-dev &&                               \
    28      sudo rm -rf /var/lib/apt/lists/*
    29  
    30  # Create working directory
    31  WORKDIR /home/circleci
    32  COPY config_linux5.2.0_arm64.txt .config
    33  
    34  # Build linux
    35  RUN set -eux;                                                             \
    36      git clone --depth=1 --branch=v5.2  https://github.com/torvalds/linux; \
    37      sudo chmod 0444 .config;                                              \
    38      mv .config linux/;                                                    \
    39      cd linux;                                                             \
    40      export ARCH=arm64;                                                    \
    41      export CROSS_COMPILE=/usr/bin/aarch64-linux-gnu-;                     \
    42      make olddefconfig;                                                    \
    43      make -j$(($(nproc) * 2 + 1));                                         \
    44      cd ~;                                                                 \
    45      cp linux/arch/arm64/boot/Image Image;                                 \
    46      rm -rf linux/
    47  
    48  # Build QEMU
    49  RUN set -eux;                                                          \
    50      git clone --depth=1 --branch=v3.1.0 https://github.com/qemu/qemu;  \
    51      cd qemu;                                                           \
    52      mkdir build;                                                       \
    53      cd build;                                                          \
    54      ../configure                                                       \
    55          --target-list=aarch64-softmmu                                  \
    56          --enable-virtfs                                                \
    57          --disable-docs                                                 \
    58          --disable-sdl                                                  \
    59          --disable-kvm;                                                 \
    60      make -j$(($(nproc) * 2 + 1));                                      \
    61      cd ~;                                                              \
    62      cp -rL qemu/build/pc-bios/ ~/pc-bios;                              \
    63      cp qemu/build/aarch64-softmmu/qemu-system-aarch64 .;               \
    64      rm -rf qemu/
    65  
    66  # Export paths to binaries.
    67  ENV UROOT_KERNEL /home/circleci/Image
    68  ENV UROOT_QEMU "/home/circleci/qemu-system-aarch64 -machine virt -cpu cortex-a57 -L /home/circleci/pc-bios"
    69  ENV UROOT_TESTARCH arm64