QEMUでRPiをエミュレートしてみる
前回は、Crosstool-NGでtoolchainを構築して、RPi3のチュートリアルをビルドしてみました。
今回は、ビルドしたカーネルを動かしてみたいと思います(・`ω´・)b
・・・が、ビルドするたびにカーネルをSDカードにコピーするのも手間なのでQEMUというエミュレータ環境を使ってみます。
QEMUをビルドする
QEMUはオープンソースのプロセッサエミュレータです。
PowerPC、SPARC、ARMなど多くのプロセッサを模擬することができます。
特に、2.12からはRaspberry Pi3のモデルをサポートしているようです。
ただし、QEMUの公式バイナリではまたサポートされていないようなので自分でビルドする必要があります。
https://github.com/bztsrc/raspi3-tutorial#emulation
まずは公式のGitからチェックアウトしてmakeします。
$ cd ~ $ git clone https://git.qemu.org/git/qemu.git $ cd qemu $ git submodule init $ git submodule update --recursive $ ./configure $ make
makeできたらとりあえずパスを通します。これで準備完了です。
$ export PATH=$PATH:$HOME/qemu/aarch64-softmmu
QEMUを動かしてみる
前回、ビルドしたカーネルを動かしてみます。
Makefile.gccのrunに使用するQEMUのバイナリを指定します。
今回はqemu-system-aarch64を使用します。
run: qemu-system-aarch64 -M raspi3 -kernel kernel8.img -serial stdio
あとは以下のコマンドを実行して「Hello World!」が表示されれば成功!
$ make run qemu-system-aarch64 -M raspi3 -kernel kernel8.img -serial null -serial stdio VNC server running on 127.0.0.1:5900 Hello World!