3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

RISC-VをQEMUでエミュレートしてfedoraを動かす

Last updated at Posted at 2020-04-27

はじめに

*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

そして下の画面が出てきたらだいたい大丈夫。でこの画面のあとに色々続いていって
スクリーンショット 2020-04-27 01-31-07.png

数分たつとログインを要求される。ここまでいって一安心。
スクリーンショット 2020-04-27 01-35-21.png

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 

でインストールされたら実行してみましょう。

スクリーンショット 2020-04-27 01-39-51.png
機関車が走ってれば成功!!おめでとうございます。

おわりに

情報集めとか、もろもろとても大変で苦労した。まったくうまく行かず試行錯誤の結果うまくできた。しかし、これらのことをやるまえに色々ビルドしたり試行錯誤したことのおかげで出来たのかもしれないので、もしかすると今回書いた内容だけで出来ない可能性もある。

もし出来なければコメントかこちらの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

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?