2017年12月18日月曜日

QEMU上でRaspbian Jessieを起動

QEMUのインストールの記事でQEMUをインストールしましたので、QEMU上でRaspbianを起動してみました
Raspbianを起動するには、下記2つのがいるが必要になります
  1. QEMU用のカーネル
  2. Rapbianのイメージファイル
QEMU用のカーネルは、Compiling ARM1176 for QEMU Raspberry Pi Emulation Kernelに作成手順が記載されています。これは難しいですよね。
そこで、GitHubで公開(Qemu kernel for emulating Rpi on QEMU)されているビルド済みのカーネルを使用させていただきました。なお、公開されているカーネルの最新版(kernel-qemu-4.4.34-jessie)をダウンロードしました



次にRaspbianのダウンロードですが、カーネルがjessieを使用していますのでこれに合わせる必要があります。Raspbianのミラーサイトから2017-07-05-raspbian-jessieをダウンロードします。

これで必要なファイルはそろいましたので、ターミナルからQEMUを使用して起動します。Raspbianのディフォルト設定のままでは起動しません。初回起動でbashを立ち上げて、QEMUで起動するための設定をRaspbianのイメージファイル内に行います。起動コマンドは次の通りです。

qemu-system-arm -kernel kernel-qemu-4.4.34-jessie -cpu arm1176 -m 256 -M versatilepb -no-reboot -serial stdio -append "root=/dev/sda2 panic=1 rootfstype=ext4 rw init=/bin/bash" -hda 2017-07-05-raspbian-jessie.img

Raspbianのターミナルが起動したら、下記のファイルをviコマンドなどで開きます

vi /etc/ld.so.preload

このファイルには1行しかありませんので、その行をコメントアウトします


次にQEMUで認識しているディスクとRaspbianでのディスクを合わせるためにシンボリックリンクを作成します。新規に/etc/udev/rules.d/90-qemu.rulesファイルを作成し、下記シンボリックリンクを記載します。

vi /etc/udev/rules.d/90-qemu.rules

KERNEL=="sda", SYMLINK+="mmcblk0"
KERNEL=="sda?", SYMLINK+="mmcblk0p%n"
KERNEL=="sda2", SYMLINK+="root"



この2つのファイル編集で書き換えは完了になります。実際にRaspbianを下記コマンドで起動します

 qemu-system-arm -kernel kernel-qemu-4.4.34-jessie -cpu arm1176 -m 256 -M versatilepb -no-reboot -serial stdio -append "root=/dev/sda2 panic=1 rootfstype=ext4 rw" -hda 2017-07-05-raspbian-jessie.img

起動プロセスが流れていきます 。ドキドキする瞬間ですね


しばらくすると見覚えのあるRaspbian GUIが起動しました


QEMUを使用するといろいろと遊べそうですね

0 件のコメント:

コメントを投稿