OS X で Raspbian Jessie を動かす手順のメモです。
目的
Raspberry Pi の動作環境を手持ちの MacBookAir で構築するため作業しました。
手順
QEMU のインストール
OS Xでターミナルを開き、下記コマンドで QEMU をインストールします。
$ brew install qemu
Raspbian エミュレート用の QEMU カーネルのダウンロード
Raspbian エミュレート用の QEMU カーネルのページ から最新の kernel-qemu-4.x.xx-jessie をダウンロードします。ダウンロードしたファイルを適当なディレクトリを作って保存します。
ここでは、 kernel-qemu-4.4.13-jessie をダウンロードし、 /raspbian というディレクトリを作成し保存しました。
Raspbian Jessie の OS イメージのダウンロード
Raspbian Jessie の OS イメージのダウンロードページ から OS イメージをダウンロードします。
ここでは、 RASPBIAN JESSIE WITH PIXEL(2017-01-09-raspbian-jessie.img) をダウンロード展開し、そのファイルを上記 /raspbian に保存しました。
Raspbian Jessie の OS イメージの編集
VirtualBox+Vagrant利用環境が既に構築済みであると仮定し、そちらでRaspbian Jessie の OS イメージの編集を構築していきます。ターミナルを開いて下記コマンドを実行します。
$ cd /raspbian $ vagrant init ubuntu/trusty64 $ vagrant up $ vagrant ssh
別途起動したターミナル上で、下記コマンドでマウントの際に利用する Raspbian Jessie の OS イメージの offset 値を計算します。ここでは offset 値は 70254592 だったのでその値を使います。詳細は こちら を参考。
$ fdisk -l /vagrant/2017-01-09-raspbian-jessie.img
次のコマンドで Raspbian Jessie の OS イメージをマウントします。
$ sudo mount -v -o offset=70254592 -t ext4 /vagrant/2017-01-09-raspbian-jessie.img /mnt/
マウント後、下記コマンドでファイル編集します。この辺は こちらの記事 と同じです。
$ sudo vi /mnt/etc/ld.so.preload
/usr/lib/arm-linux-gnueabihf/libarmmem.so ↓ #/usr/lib/arm-linux-gnueabihf/libarmmem.so
同様に
$ sudo vi /mnt/etc/fstab
/dev/mmcblk0p1 /boot vfat defaults 0 2 /dev/mmcblk0p2 / ext4 defaults,noatime 0 1 ↓ #/dev/mmcblk0p1 /boot vfat defaults 0 2 #/dev/mmcblk0p2 / ext4 defaults,noatime 0 1
これで exit して OS イメージの編集を終えます。
$ exit
QEMU で Raspbian Jessie を起動する
下記コマンドで Raspbian Jessie 起動します。
$ qemu-system-arm -kernel kernel-qemu-4.4.13-jessie -cpu arm1176 -m 256 -M versatilepb -no-reboot -serial stdio -append "root=/dev/sda2 panic=1" -hda 2017-01-09-raspbian-jessie.img -redir tcp:10022::22 -redir tcp:15901::5901
上記コマンドで別途ターミナルが開き Raspbian が起動しますが、 apt-get で構成管理をしようとした際に書き込み権限がないというエラーで弾かれてしまうため、リマウントします。エラー原因については こちら を参考。
$ sudo mount / -o remount,rw
リマウントしてしばらくすると Raspbian Jessie のログイン画面が現れるため、 pi ユーザーでパスワード(デフォルトだと raspbian)を入力しログインします。すると次のOS画面が現れ、ターミナルを起動し apt-get 等でインストール可能になっている点も確認できます。これでエミュレータとして最低限の利用が可能と思います。
課題
上記手順では初代の Raspberry Pi をエミュレートしているため、起動含め全てがもっさりしています。Raspberry Pi2, 3 も利用できるのか、エミュレータとしての限界は別途利用してみて探ってく必要があります。
参考
下記以外もトラブルシューティング等色々なページを参考にしました。
Raspberry piをエミュレートする(Mac / QEMU / Raspbian)
QEMU for windowsでRaspbian Jessieを動作させる
Ubuntu上のエミュレータ(QEMU)で動作するRaspbian
WindowsでRaspbian Jessieをエミュレートしてみた