1FROM debian:bullseye
2
3# 设置工作目录
4WORKDIR /build-image
5
6# 将本地的脚本复制到工作目录
7COPY *.sh ./
8
9# 设置用来存放rust缓存的卷
10VOLUME [ "/root/.cargo/registry" ]
11
12# 设置rust源的环境变量
13ENV RUSTUP_DIST_SERVER=https://mirrors.ustc.edu.cn/rust-static
14ENV RUSTUP_UPDATE_ROOT=https://mirrors.ustc.edu.cn/rust-static/rustup
15
16RUN sed -i "s@http://\(deb\|security\).debian.org@http://mirrors.ustc.edu.cn@g" /etc/apt/sources.list && apt update && apt install -y \
17    ca-certificates \
18    curl \
19    gnupg \
20    lsb-release \
21    llvm-dev libclang-dev clang gcc-multilib \
22    gcc build-essential fdisk dosfstools qemu-kvm \
23    sudo wget
24
25# 安装Rust
26RUN curl https://sh.rustup.rs -sSf | sh -s -- --default-toolchain nightly -y && \
27    # You have to add the rustup variables to the $PATH
28    echo "export PATH=\"\$HOME/.cargo/bin:\$PATH\"" >> ~/.bashrc && \
29    bash -c "source $HOME/.cargo/env && \
30    # 更换cargo的索引源
31    touch $HOME/.cargo/config && \
32    bash change_rust_src.sh && \
33    # 安装rust的编译工具
34    echo "正在安装DragonOS所需的rust组件...首次安装需要一些时间来更新索引,请耐心等待..." && \
35    cargo install cargo-binutils && \
36    rustup toolchain install nightly && \
37    rustup default nightly && \
38    rustup component add rust-src && \
39    rustup component add llvm-tools-preview && \
40    rustup target add x86_64-unknown-none"
41
42# 编译安装GCC交叉编译工具链
43RUN bash build_gcc_toolchain.sh -f
44
45# 清除缓存
46WORKDIR /
47RUN apt-get autoremove -q -y && \
48    apt-get clean -q -y && \
49    rm -rf /build-image
50
51ENV DragonOS_GCC=/root/opt/dragonos-gcc/gcc-x86_64-unknown-none/bin/
52# 设置容器启动后执行的命令
53CMD ["/bin/bash"]
54