🍁

(失敗メモ)RISC-V 版 Haiku in QEMU

2024/11/05に公開

はじめに

Haiku (Haiku OS) のナイトリービルドには RISC-V 64 版があり、公式ブログでは QEMU で起動しているスクリーンショットが掲載されています。

しかし残念ながら私は、QEMU で起動させることができませんでした。

将来の再チャレンジの時のために、今回やったことを残しておきます。

QEMU まったく分からないマンなので、アドバイスいただけると嬉しいです。

QEMU のビルド

RISC-V をエミュレーションする Windows 用 QEMU は公式バイナリが無いので、自前でビルドします。途中まではこちらのサイトの手順そのままです。

MSYS2 のインストール

MSYS2 のサイトの Installation セクションからインストーラー msys2-x86_64-yyyymmdd.exe をダウンロードし、インストールします。

デフォルトで C:\msys64 にインストールされます。

mingw64.exe(青いアイコン)をダブルクリックして起動します。

RISC-V エミュレーション QEMU のビルド

mingw64 コマンドプロンプト内で以下を実行していきます。

pacman -Syu

Yes/No を聞かれたら y で回答します。

突然 mingw64 が落ちたりして不安になりますが、mingw64 を再度起動して、上記も再度実行。`there is nothing to do' が表示されるまで繰り返し実行します(とはいえ 3 回でそうなりました)。

次は開発用パッケージのインストール。

pacman -S --needed base-devel \
        git \
        python \
        python-setuptools \
        ninja

続いて依存関係のインストール。

pacman -S --needed mingw-w64-x86_64-glib2 \
        mingw-w64-x86_64-pixman \
        mingw-w64-x86_64-gtk3 \
        mingw-w64-x86_64-SDL2 \
        mingw-w64-x86_64-libslirp \
        mingw-w64-x86_64-toolchain \
        mingw-w64-x86_64-python-sphinx \
        mingw-w64-x86_64-python-sphinx_rtd_theme \
        mingw-w64-x86_64-meson```

続いて QEMU ソースコードの入手。

git clone https://gitlab.com/qemu-project/qemu.git
cd qemu
git submodule init
git submodule update --recursive

そしてビルドします。

./configure --target-list=riscv64-softmmu --disable-docs
make -j $(nproc)

私の環境では 5 分ほどかかりましたが、C:\msys64\home\(ユーザー名)\qemu\buildqemu-system-riscv64.exe が生成されます。

Haiku の実行

Haiku ナイトリービルドから最新のイメージファイルをダウンロードし、zip を展開してイメージファイルを build フォルダに保存します(そこに置くのはどうかという気もしますが実験ということで)。

QEMU RISCV64 u-boot バイナリ u-boot.bin もダウンロードして build フォルダに保存します。

mingw64 コマンドプロンプト内で

cd build
./qemu-system-riscv64 -M virt -m 1G -device ati-vga -kernel u-boot.bin \
        -drive file=haiku-master-hrevXXXXX-riscv64-mmc.image,format=raw,if=virtio \
        -usb -device usb-ehci,id=echi -device usb-kbd -device usb-tablet

として QEMU を起動し、RISC-V 版 Haiku を実行します。

QEMU は起動したものの、Haiku 側で VM の画面に何も出力していないようです。

50% の確率でハングアップする不具合があるらしいので何度か起動してみましたが、ダメでした。

備考

WSL2 内で Ubuntu 用 QEMU を用いる方法も試してみたのですが、Fedora は起動したものの Haiku は起動しませんでした。

確認環境

項目 環境
Windows Windows 11 Pro 23H2
Haiku hrev58294-riscv64-mmc
QEMU version 9.1.50 (v9.1.0-1348-g11b8920ed2)

参考リンク

Discussion