公式wiki ( https://fedoraproject.org/wiki/Architectures/RISC-V/Installing )の通りにやるだけだがメモ。
ホスト環境
OpenSUSE Tumbleweed (x86_64)
手順
イメージのダウンロード
上のwikiには手動でディスクイメージを作成する方法も載っているが、検証済みのイメージがあるのでそれをダウンロードする(現時点での最新版はfedora32/v5.5-rc5):
$ wget https://dl.fedoraproject.org/pub/alt/risc-v/repo/virt-builder-images/images/Fedora-Minimal-Rawhide-20200108.n.0-sda.raw.xz # ディスクイメージ
$ wget https://dl.fedoraproject.org/pub/alt/risc-v/repo/virt-builder-images/images/Fedora-Minimal-Rawhide-20200108.n.0-fw_payload-uboot-qemu-virt-smode.elf # firmware
$ xz -dv Fedora-Minimal-Rawhide-20200108.n.0-sda.raw.xz # 展開
qemuのビルド
ディストリビューションのqemuで良いと思われるが簡単なのでqemuはビルドする:
$ git clone https://github.com/qemu/qemu
$ cd qemu
$ git checkout -b build v5.1.0-rc3
$ mkdir build && cd build
$ ../configure --target-list=riscv64-softmmu --disable-docs
$ make -j4
起動
wikiの通りに以下のようなスクリプトを使用する:
QEMU_RISCV64=/path/to/qemu/build/riscv64-softmmu/qemu-system-riscv64
$QEMU_RISCV64 \
-nographic \
-machine virt \
-smp 2 \
-m 4G \
-kernel Fedora-Minimal-Rawhide-20200108.n.0-fw_payload-uboot-qemu-virt-smode.elf \
-object rng-random,filename=/dev/urandom,id=rng0 \
-device virtio-rng-device,rng=rng0 \
-device virtio-blk-device,drive=hd0 \
-drive file=Fedora-Minimal-Rawhide-20200108.n.0-sda.raw,format=raw,id=hd0 \
-device virtio-net-device,netdev=usernet \
-netdev user,id=usernet,hostfwd=tcp::10000-:22
起動するとログインコンソールが出る直前にユーザー名/パスワードが表示される (riscv/fedora_rocks!)。
コメント: -kernelオプションにファームウェアを指定しているので、ここからlinux kernelを置き換えるのが面倒そう。
(追記) kernel入れ替え
QEMUの中にfimwareが組み込まれているようで、以下のオプションでQEMUにkernelを与えて起動することができた:
$QEMU_RISCV64 \
-nographic \
-machine virt \
-smp 2 \
-m 4G \
-bios default \
-kernel /path/to/linux/arch/riscv/boot/Image \
-append "root=/dev/vda4 ro console=ttyS0 earlycon" \
-object rng-random,filename=/dev/urandom,id=rng0 \
-device virtio-rng-device,rng=rng0 \
-device virtio-blk-device,drive=hd0 \
-drive file=Fedora-Minimal-Rawhide-20200108.n.0-sda.raw,format=raw,id=hd0 \
-device virtio-net-device,netdev=usernet \
-netdev user,id=usernet,hostfwd=tcp::10000-:22