はじめに
*2020/04/27現在の情報
qemuを使えばRISC-Vの仮想環境が作れるようなので試してみた。
RISC-Vのエコシステムは情報が少ない上に、現在絶賛開発中だからか少し遅れた情報をもとに環境を作ろうとしてもうまく行かないことが多く、サイトによって書いてあることもバラバラなのでなるべく新しく信頼できる情報を届けて役に立てればと思う。(私の情報も信頼はできないかもしれないが...)
目標
今回は64bitのRISC-Vをqemuでエミュレートしてfedoraを動かす。
自分の環境
Ubuntu 20.04 LTS
QEMUのインストール
まずはエミュレータのqemuを入れる。最新版のでいいんじゃないかな。
git clone https://github.com/qemu/qemu
cd qemu
git submodule init
git submodule update --recursive
./configure --target-list=riscv64-softmmu
make -j $(nproc)
sudo make install
fedoraイメージのインストール
https://dl.fedoraproject.org/pub/alt/risc-v/repo/virt-builder-images/images/
こちらのサイトから「Fedora-Developer-Rawhide-*.raw.xz」と「Fedora-Developer-Rawhide-*-fw_payload-uboot-qemu-virt-smode.elf」をダウンロードしましょう。米印には日付が入っています。
現在の最新版は
Fedora-Minimal-Rawhide-20200108.n.0-sda.raw.xz
Fedora-Minimal-Rawhide-20200108.n.0-fw_payload-uboot-qemu-virt-smode.elf
ですのでこれらをダウンロードして、適当なワーキングディレクトリに放り込んでxzファイルは解凍しておきましょう。
QEMUでfedoraをブート
いよいよQEMUでfedoraをブートします。下のコマンドの意味はわからないのもあるけどとりあえずコピペで実行。さっきのfedoraイメージを放り込んだフォルダで行ってください。
qemu-system-riscv64 \
-nographic \
-machine virt \
-smp 8 \
-m 2G \
--bios none\
-kernel Fedora-Developer-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 \
-append "console=ttyS0 ro root=/dev/vda" \
-device virtio-blk-device,drive=hd0 \
-drive file=Fedora-Developer-Rawhide-20200108.n.0-sda.raw,format=raw,id=hd0 \
-device virtio-net-device,netdev=usernet \
-netdev user,id=usernet,hostfwd=tcp::10000-:22
そして下の画面が出てきたらだいたい大丈夫。でこの画面のあとに色々続いていって
rootでログインする場合:
ユーザ名は「root」、パスワードは「fedora_rocks!」
ssh接続で他ターミナルからの接続は以下のコマンドでできる。
ssh -p 10000 -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o PreferredAuthentications=password -o PubkeyAuthentication=no root@localhost
riscvでログインする場合:
ユーザ名は「riscv」、パスワードは「fedora_rocks!」
ssh接続で他ターミナルからの接続は以下のコマンドでできる。
ssh -p 10000 -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o PreferredAuthentications=password -o PubkeyAuthentication=no riscv@localhost
遊ぶ
適当になんかインストールしてみましょう。機関車が走る「sl」コマンドをインストールして実行しましょう。rootでログインしておいて下さい。
$ dnf install sl
でインストールされたら実行してみましょう。
おわりに
情報集めとか、もろもろとても大変で苦労した。まったくうまく行かず試行錯誤の結果うまくできた。しかし、これらのことをやるまえに色々ビルドしたり試行錯誤したことのおかげで出来たのかもしれないので、もしかすると今回書いた内容だけで出来ない可能性もある。
もし出来なければコメントかこちらのtwitterで教えていただければ幸いです。
https://twitter.com/a163236
参考
これでうまくいかなかったら下のサイトを見て色々やった方がいいかも…
https://risc-v-getting-started-guide.readthedocs.io/en/latest/linux-qemu.html
https://fedoraproject.org/wiki/Architectures/RISC-V/Installing
https://msyksphinz.hatenablog.com/entry/2018/05/07/040000