🌊

RISCV開発用dockerイメージを作成する

2024/02/12に公開

やりたいこと

タイトル通りですが、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