FPGA開発日記

カテゴリ別記事インデックス https://msyksphinz.github.io/github_pages , English Version https://fpgadevdiary.hatenadiary.com/

RISC-V版QEMUでLinuxを立ち上げる試行

QEMURISC-Vのプラットフォームに対応した。 v.2.12 から、RISC-Vに対応している。

ChangeLog/2.12 - QEMU

さっそくダウンロードして使ってみる。ついでに、いくつかRISC-Vに対応しているLinuxプラットフォームがあるので試行してみよう。

RISC-V 版 QEMUのビルド試行

RISC-V向けのQEMUターゲットとしては、 riscv64-softmmuriscv32-softmmu が存在する。これを指定しないと、すべてのプラットフォーム向けにビルドが始まってしまい非常に時間がかかるので注意。 今回は riscv64-softmmu のみ指定した。以下のコマンドにより ${RISCV}/binqemu-system-riscv64 がインストールされる。

$ wget https://download.qemu.org/qemu-2.12.0.tar.xz
$ tar Jxf qemu-2.12.0.tar.xz
$ cd qemu-2.12.0/
$ mkdir build
$ cd build
$ ../configure --target-list=riscv64-softmmu --prefix=${RISCV}

QEMU を使ってFedoraのブートを行う

RISC-V対応のLinuxディストリビューションはいくつか存在するが、バイナリが既にいろいろ揃っていてすぐに立ち上がるのはFedoraであろう。それ以外のディストリビューションについては以下にまとめられている。

Fedora についてもQEMUの立ち上げ方は非常に手こずった。最初はBusyBoxを使って一からビルドしようとしたが、現時点でどうしてもうまく行っていない。 まずは Fedora のビルド済みバイナリを使ってQEMUを立ち上げることにした。

一番役に立ったのは、誰かしらがDockeファイルを作ってくれていた。これを参考にした。以下のファイルをダウンロードすることになる。

  • Linux本体 : https://fedorapeople.org/groups/risc-v/disk-images/vmlinux
  • Berkeley Boot Loader : https://fedorapeople.org/groups/risc-v/disk-images/bbl
  • Fedoraディスクイメージ : https://fedorapeople.org/groups/risc-v/disk-images/stage4-disk.img.xz
$ wget https://fedorapeople.org/groups/risc-v/disk-images/vmlinux
$ wget https://fedorapeople.org/groups/risc-v/disk-images/bbl
$ wget https://fedorapeople.org/groups/risc-v/disk-images/stage4-disk.img.xz
$ xzdec -d stage4-disk.img.xz > stage4-disk.img

以下でQEMUを起動する。

qemu-system-riscv64   \
    -nographic \
    -machine virt \
    -kernel bbl \
    -object rng-random,filename=/dev/urandom,id=rng0 \
    -device virtio-rng-device,rng=rng0 \
    -append "console=ttyS0 ro root=/dev/vda" \
    -device virtio-blk-device,drive=hd0 \
    -drive file=../stage4-disk.img,format=raw,id=hd0 \
    -device virtio-net-device,netdev=usernet \
    -netdev user,id=usernet,hostfwd=tcp::10000-:22
f:id:msyksphinz:20180507012709p:plain
図. FedoraRISC-V QEMU上で起動した様子