QEMU-2.3でqemu-system-armのvexpress-a9ボードを動かしてみます。
ルートファイルシステムはBuildroot-2015.02で作成します。
Debian jessie上でやりました。
Table of Contents
1 QEMU-2.3のビルドとインストール
ディスプレイの表示にSDL2を使おうと思います。
QEMUのビルドに必要なパッケージとSDL2パッケージをインストールします。
sudo apt-get install gcc g++ autoconf automake libtool sudo apt-get install libsdl2-dev
QEMUをダウンロードします。
wget http://wiki.qemu-project.org/download/qemu-2.3.0.tar.bz2 tar jxf qemu-2.3.0.tar.bz2 cd qemu-2.3.0
configureでSDL2の参照を有効にします。-enable-sdlのみだとSDL1.2が参照されるようなので、–with-sdlabi=2.0でSDL2を参照します。
./configure --enable-sdl --with-sdlabi=2.0 --prefix=${HOME}
ビルドします。全アーキテクチャのバイナリを生成する為、そこそこ時間がかかります(core-i3なマシンで20分くらい掛かりました)。
make all install -j4
2 Buildroot-2015.02のビルド
Buildrootをダウンロードします。
wget http://buildroot.uclibc.org/downloads/buildroot-2015.02.tar.gz tar zxf buildroot-2015.02.tar.gz cd buildroot-2015.02
defconfigを確認してみます。
ls configs <snip> at91sam9260eknf_defconfig qemu_arm_nuri_defconfig at91sam9261ek_defconfig qemu_arm_versatile_defconfig at91sam9263ek_defconfig qemu_arm_vexpress_defconfig <snip>
qemu-system-armにvexpress-a9というボードがあります。
qemu-system-arm -M ? | grep vexpress vexpress-a15 ARM Versatile Express for Cortex-A15 vexpress-a9 ARM Versatile Express for Cortex-A9
Cortex-A9コアは最近のスマホで使われており(最近はarmv8コアが主流かもしれませんが)、動かしてみるのも楽しそうです。
Buildrootのqemu_arm_vexpress_defconfigを使用します。make xxx_defconfigでconfigs配下のdefconfigを使用できます。
make qemu_arm_vexpress_defconfig
ビルドします(ツールチェインとパッケージ群をネットワーク経由で取得する為、ネットワーク速度依存な部分が大きいですが、core-i3なマシンで30分くらい掛かりました)。
make -j4
ルートファイルシステムのイメージが作成されます。
$ ls output/images/ rootfs.ext2 zImage
3 vexpressボードの起動
ルートファイルシステムをSDカードとして読み込みます。
qemu-system-arm -M vexpress --kernel output/images/zImage \ -sd output/images/rootfs.ext2 -serial stdio \ -append "root=/dev/mmcblk0 rw"
起動するとシリアル、ディスプレイ、QEMU用プロンプト(デバイス追加等の操作)のウィンドウが表示されます。
グラフィック関係のパッケージが全然含まれていない為、ディスプレイはペンギン画像とカーネルログが表示される程度です。シリアルからログインできます。