Raspberry Pi(Raspbian wheezy)をOS XのQEMUで動作させる手順

Updated: / Reading time: 3 minutes

Raspberry Pi emulator for WindowsでRaspbian最新版を動作させる手順ではWindows上のQEMUでRaspbianを動作させましたが、現在使用しているのはMacBookなので、OS X上のQEMUでRaspbianを動作させる手順をまとめます。内容はほぼ同じです。

注意

  • Raspbian Jessieを動作させようとしましたが、Kernel Panicで起動しませんでした。よって、当記事では前回と同じRaspbian wheezyを動作させます。
  • OSとQEMUの組み合わせがマズイのかと思ってDebian on VirtualBoxで試しましたが、別の原因で起動しませんでした。
  • CentOS、Ubuntuではqemu-system-armをインストールする方法が分かりませんでした。あまりまじめに探していませんが。

作業環境

  • OS X Yosemite
  • qemu 2.4.0.1

作業手順

QEMUをインストール

Homebrewでqemuをインストールします。

$ brew install qemu

必要なCPUがサポートされているかチェックします。arm1176が表示されればサポートされています。arm1176が表示されない場合は、QEMUをビルドする必要があります。問題無いはず。

$ qemu-system-arm -M versatilepb -cpu '?' | grep arm1176

Raspbianおよびkernelをダウンロード

Raspberry Pi Downloads - Software for the Raspberry Piから、RASPBIAN WHEEZYをダウンロードします。ファイルサイズが大きいので注意。ダウンロードしたら展開して、raspbian.imgにリネームします。

次に、dhruvvyas90/qemu-rpi-kernelからkernel-qemu-3.10.25-wheezyをダウンロードします。ダウンロードしたら、kernel-qemuにリネームします。

Raspbian使用準備

RaspbianをQEMUで使用するためには、いくつかの調整を行う必要があります。なお、この作業の一部でキーボードが英語配列になることがあるので注意。

Raspbianを起動(1回目)

調整のため、1回目の起動を行います。

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

ld.so.preloadを修正

/etc/ld.so.preloadを修正します。1行目先頭に#を追加して、コメントアウトします。

# sed -i -e 's/^/#/' /etc/ld.so.preload

90-qemu.rulesを作成

/etc/udev/rules.d/90-qemu.rulesを作成します。

# touch /etc/udev/rules.d/90-qemu.rules
# echo 'KERNEL=="sda", SYMLINK+="mmcblk0"' >> /etc/udev/rules.d/90-qemu.rules
# echo 'KERNEL=="sda?", SYMLINK+="mmcblk0p%n"' >> /etc/udev/rules.d/90-qemu.rules
# echo 'KERNEL=="sda2", SYMLINK+="root"' >> /etc/udev/rules.d/90-qemu.rules

Raspbianを終了

これで使用準備ができました。いったん、終了します。

# exit

Raspbianを起動(2回目)

Raspbianを起動します。以降、以下のコマンドでRaspbianを起動します。1回目の起動とはコマンド内容が少し異なるので注意。

$ qemu-system-arm -kernel kernel-qemu -cpu arm1176 -m 256 -M versatilepb -no-reboot -serial stdio -append "root=/dev/sda2 panic=1 rootfstype=ext4 rw" -hda raspbian.img -redir tcp:5022::22

正常に起動したら、設定完了です。この時点のraspbian.imgをバックアップしておくと、状態を元に戻すのが楽になります。

-redir tcp:5022::22で、ホストOSの5022番ポートを、ゲストOSの22番ポートにリダイレクトします。5022番ポート以外を使用する場合は、このオプションを変更します。sshログインするには、以下のようにコマンドを実行します。パスワードはraspberryです。

ssh -p 5022 pi@localhost

参考リンク