🌊
RISCV開発用dockerイメージを作成する
やりたいこと
タイトル通りですが、RISCVの開発をするにあたり、dockerコンテナ内で作業すると色々都合がいいので、RISCV開発に必要な環境が揃ったイメージを作ります。
前提
現在「RISC-Vとchiselで学ぶ はじめてのCPU自作」で勉強しており、本書内にdockerfileも載っていますが、いかんせん古くて現在だとこのままでは使えません。(著者のDockerHubに更新されたイメージもありますが、これですら古い)
具体的に言うと
-
ubuntuのバージョンが古い
- このせいで一部のツールをインストールしようとしてもlibcのバージョンが古くてインストールできないことがあります
-
riscv-gnu-toolchainのブランチが古い(既に存在しない)
ということで、前記書籍のdockerfileをベースに、上記の問題点を修正したdockerfileを作りました。
内容
以下がdockerfileの内容です。
FROM ubuntu:23.04
ENV RISCV=/opt/riscv
ENV PATH=$RiSCV/bin:$PATH
ENV MAKEFLAGS=-j4
WORKDIR $RISCV
RUN apt-get update
RUN apt-get install -y autoconf automake autotools-dev curl python3 python3-pip libmpc-dev libmpfr-dev libgmp-dev gawk build-essential bison flex texinfo gperf libtool patchutils bc zlib1g-dev libexpat-dev ninja-build git cmake libglib2.0-dev default-jre
RUN git clone https://github.com/riscv/riscv-gnu-toolchain &&cd riscv-gnu-toolchain
RUN cd riscv-gnu-toolchain && mkdir build && cd build && ../configure --prefix=${RISCV} --enable-multilib && make
RUN git clone -b master --single-branch https://github.com/riscv/riscv-tests && cd riscv-tests && git checkout c4217d88bce9f805a81f42e86ff56ed363931d69 && git submodule update --init --recursive
RUN echo "deb https://repo.scala-sbt.org/scalasbt/debian all main" | tee /etc/apt/sources.list.d/sbt_old.list && curl -sL "https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x2EE0EA64E40A89B84B2DF73499E82A75642AC823" | apt-key add && apt-get update && apt-get install -y sbt
要点は以下です。
- ubuntuのバージョンは新しいものに
- 最初の基本的なパッケージ群のインストールはここを参考に、いくつか必要なもの(default-jreなど)を追加
- riscv-gnu-toolchainのインストールも上記リンク先を参考に
- ブランチなどは特に指定せず
- それ以外は上記書籍の通り
とりあえずこのdockerfileでchisel-template環境で作成したコードをsbtでコンパイルして実行できることまで確認できました。
Discussion