asterinas/osdk/tools/Dockerfile.ubuntu22.04

51 lines
1.5 KiB
Docker

# SPDX-License-Identifier: MPL-2.0
# This image is for the OSDK GitHub CI.
# The environment is consistent with the one
# described in the OSDK User Guide section of the Asterinas Book.
#
# TODO: We should build the Asterinas image based on the OSDK image
# since Asterinas is managed by OSDK itself.
# However, currently, these two images have different contents.
# The main distinction is that
# QEMU, grub, and OVMF in the OSDK image are installed via apt,
# while these tools in the Asterinas image are built from source.
# Some boot methods in Asterinas only function properly
# when using the tools that are built from source.
FROM ubuntu:22.04
ARG DEBIAN_FRONTEND=noninteractive
RUN apt update \
&& apt install -y \
build-essential \
gdb \
curl \
grub-efi-amd64 \
grub2-common \
libpixman-1-dev `# running dependency for QEMU` \
mtools `# used by grub-mkrescue` \
ovmf \
qemu-system-x86 \
xorriso \
&& apt clean \
&& rm -rf /var/lib/apt/lists/*
# Install Rust of both nightly and stable channel
ENV PATH="/root/.cargo/bin:${PATH}"
ARG ASTER_RUST_VERSION
RUN curl https://sh.rustup.rs -sSf | \
sh -s -- --default-toolchain ${ASTER_RUST_VERSION} -y \
&& rustup toolchain install stable \
&& rm -rf /root/.cargo/registry && rm -rf /root/.cargo/git \
&& cargo -V \
&& rustup component add rust-src rustc-dev llvm-tools-preview
# Install cargo-binutils
RUN cargo install cargo-binutils
VOLUME [ "/root/asterinas" ]
WORKDIR /root/asterinas