DragonOS/tools/Dockerfile
guanjinquan 5ed4cd4602
Patch gcc toolchain (#111)
* 添加了GCC_cross_compile——tool_chain

* - 解决环境变量路径拼接时,多了`/`的问题
- apt安装时增加-y,不需用户确认

* 解决添加环境变量的命令有误的问题

* 修正编译错误时,还会执行下一步的问题

* new: 编译完成后清理临时文件

* 更新makefile

* 调整:把grub安装在 $HOME/opt/dragonos-grub下

* new: 新增dockerfile

* 将镜像源换成中科大的(原因是清华的总是ban掉用于构建镜像的服务器的ip)

* 修改为基于debian bullseye构建

* 取消指定版本

* 修复MBR磁盘镜像未设置启动标志的bug

* 取消在docker中安装grub

* 安装grub的过程改到客户机上进行

* bootstrap.sh 添加--no-docker

* 使用新版的docker编译镜像

* 修补, 添加了一些关于gcc的check

Co-authored-by: longjin <longjin@RinGoTek.cn>
2022-12-22 21:09:12 +08:00

54 lines
1.7 KiB
Docker

FROM debian:bullseye
# 设置工作目录
WORKDIR /build-image
# 将本地的脚本复制到工作目录
COPY *.sh ./
# 设置用来存放rust缓存的卷
VOLUME [ "/root/.cargo/registry" ]
# 设置rust源的环境变量
ENV RUSTUP_DIST_SERVER=https://mirrors.ustc.edu.cn/rust-static
ENV RUSTUP_UPDATE_ROOT=https://mirrors.ustc.edu.cn/rust-static/rustup
RUN sed -i "s@http://\(deb\|security\).debian.org@http://mirrors.ustc.edu.cn@g" /etc/apt/sources.list && apt update && apt install -y \
ca-certificates \
curl \
gnupg \
lsb-release \
llvm-dev libclang-dev clang gcc-multilib \
gcc build-essential fdisk dosfstools qemu-kvm \
sudo wget
# 安装Rust
RUN curl https://sh.rustup.rs -sSf | sh -s -- --default-toolchain nightly -y && \
# You have to add the rustup variables to the $PATH
echo "export PATH=\"\$HOME/.cargo/bin:\$PATH\"" >> ~/.bashrc && \
bash -c "source $HOME/.cargo/env && \
# 更换cargo的索引源
touch $HOME/.cargo/config && \
bash change_rust_src.sh && \
# 安装rust的编译工具
echo "正在安装DragonOS所需的rust组件...首次安装需要一些时间来更新索引,请耐心等待..." && \
cargo install cargo-binutils && \
rustup toolchain install nightly && \
rustup default nightly && \
rustup component add rust-src && \
rustup component add llvm-tools-preview && \
rustup target add x86_64-unknown-none"
# 编译安装GCC交叉编译工具链
RUN bash build_gcc_toolchain.sh -f
# 清除缓存
WORKDIR /
RUN apt-get autoremove -q -y && \
apt-get clean -q -y && \
rm -rf /build-image
ENV DragonOS_GCC=/root/opt/dragonos-gcc/gcc-x86_64-unknown-none/bin/
# 设置容器启动后执行的命令
CMD ["/bin/bash"]