読者です 読者をやめる 読者になる 読者になる

TakayukiKoyama Geek Blog

Create, Entertain, Experience

Ubuntu(VM)上でRaspberryPiのOSを起動する

ラズパイ Linux

 RaspberryPi関連で開発するときに、RaspberryPi上で開発するよりは、仮想環境を作ったほうが楽?もしくはラズパイが手元にないときに作業をすすめるのに便利なので環境構築を紹介。

 下記のサイトの通りにやっていけば良いが、一部うまくいかないところがあるので、メモとして残しておく。

[Ubuntu] QEMUでRaspberry Pi

Raspberry Pi 2 Model B (1)

Raspberry Pi 2 Model B (1)

環境

・ホスト:Windows8.1

・ゲスト:VMwarePlayer Ubuntu14.04

・ゲストのゲスト:QEMU Raspbian2013-09-25

UbuntuOSのセットアップ

 VMwareについては割愛。

 UbuntuOSは下記のサイトから14.04をダウンロード。

Ubuntu Desktop 日本語 Remixのダウンロード | Ubuntu Japanese Team

 VMwarePlayerで「新規仮想マシンの作成」からダウンロードしたISOファイルを選択。

 ※VMwarePlayer6.0.0だと2回目の起動時にうまく起動できなかったが、Updateしたら正常に起動した。VMwarePlayer7は問題ないと思う。

RaspbianOSのセットアップ

 まずはQEMUをインストール

$ sudo apt-get update
$ sudo apt-get install qemu

 RaspberryPi作業ディレクトリ(~/raspi)で作業する。

$ mkdir ~/raspi
$ cd ~/raspi

 ラズパイのOSイメージをダウンロード。ただし、最新版だと起動時にうまくいかないので、バージョンを指定する。

$ wget http://downloads.raspberrypi.org/raspbian/images/raspbian-2013-09-27/2013-09-25-wheezy-raspbian.zip
$ unzip 2013-09-25-wheezy-raspbian.zip

 kernel-qemuというファイルが必要になるが、サイトのURL先からはダウンロード出来なくなっているので、下記サイトからダウンロードして、raspiディレクトリに配置する方法をお勧めする。

Dropbox - kernel-qemu

 イメージファイルをマウントして1行修正する

$ sudo mkdir /mnt/raspbian
$ sudo mount ~/raspi/2013-09-25-wheezy-raspbian.img -o offset=62914560 /mnt/raspbian
$ sudo vi /mnt/raspbian/etc/ld.so.preload

 書かれている1行の先頭に「#」を付けてコメントアウトする。アンマウントしてイメージファイルに戻す。

$ sudo umount ~/raspi/2013-09-25-wheezy-raspbian.img /mnt/raspbian
$ sudo rmdir /mnt/raspbian

 RaspbianOSを起動。

$ sudo qemu-system-arm -kernel ~/raspi/kernel-qemu -cpu arm1176 -m 256 -M versatilepb -no-reboot -serial stdio -append "root=/dev/sda2 panic=1" -hda ~/raspi/2013-09-25-wheezy-raspbian.img -net nic -net tap,ifname=tap0
# fsck /dev/sda2
<Enter>
# shutdown -h now

 System halted.と表示されたら、QEMUを閉じて、もう一度起動する。

$ sudo qemu-system-arm -kernel ~/raspi/kernel-qemu -cpu arm1176 -m 256 -M versatilepb -no-reboot -serial stdio -append "root=/dev/sda2 panic=1" -hda ~/raspi/2013-09-25-wheezy-raspbian.img -net nic -net tap,ifname=tap0

 青い画面が表示されたら、設定変更したいものを操作して、Finishを選択。

 OSのユーザ名:pi、パスワード:raspberry

ネットワークセットアップ

 そのままの状態ではネットワークが繋がらないので、Ubuntu側で調整する。ただし、Ubuntuではeth0でネットワークが繋がっているものとする。

$ sudo apt-get install bridge-utils libvirt-bin
$ sudo vim /etc/qemu-ifup

 「ifconfig "$1" 0.0.0.0 up」と書かれてある後ろの行に以下の1行を書き加える。

brctl addif virbr0 "$1"

 libvert-binをインストールすると、virbr0というブリッジネットワークが作られるので、QEMUのネットワークと繋げることで、通信できるようになる。ちなみに先ほどのqemu-system-armコマンドのオプションの場合、$1がtap0になって、virbr0とtap0が繋がって通信できるようになる。

 念のため、外部ネットワークに通信できるかRaspbianOSを起動してpingで確認

pi@raspberrypi:~# ping www.google.com

 これで応答していればOK。ホストが解決できないという場合はネットワークがうまく接続できていないので、もう一度確認する必要がある。

ちなみに

 このままだと、RaspbianOSのディスク容量が少ないので、開発を行う場合は容量を増やす必要があるが、それはまた別のエントリで。

広告を非表示にする