< ホームへ戻る

[Ubuntu] QEMUでRaspberry Pi

QEMUで、Raspberry PiのRaspbianを動作させる情報です。ホストOSは、Ubuntu 13.04 64bitです。

2013年11月25日 更新

QEMUをインストール

QEMUをインストールします。

$ sudo apt-get -y install qemu

ブリッジを追加

QEMUのホストOS(Ubuntu)にブリッジを追加します。

  1. bridge-utilsをインストールします。
  2. $ sudo apt-get -y install bridge-utils
  3. interfacesに記述します。
  4. $ sudo cp /etc/network/interfaces /etc/network/interfaces_org
    $ sudo gedit /etc/network/interfaces
    内容は以下の通りです。(DHCP払い出しIPを利用している場合)
    auto lo
    iface lo inet loopback

    auto eth0
    iface eth0 inet manual
    up /sbin/ifconfig eth0 promisc

    auto br0
    iface br0 inet dhcp
    bridge_ports eth0
    bridge_stp off
    bridge_maxwait 1
  5. ネットワークを再起動します。
  6. $ sudo /etc/init.d/networking restart

ゲスト起動時のスクリプトを変更

QEMUにて、ゲストOSを起動する際にブリッジへ接続するようスクリプトを変更します。

  1. qemu-ifupを変更します。
  2. $ sudo cp /etc/qemu-ifup /etc/qemu-ifup_org
    $ sudo gedit /etc/qemu-ifup
    内容は以下の通りです。
    #!/bin/sh
    echo "Executing /etc/qemu-ifup"
    sudo /sbin/ifconfig $1 0.0.0.0 promisc up
    echo "Adding $1 to br0 ..."
    sudo /sbin/brctl addif br0 $1
    sleep 3
    実行権限を設定します。
    $ sudo chmod a+x /etc/qemu-ifup
  3. qemu-ifdownを変更します。
  4. $ sudo cp /etc/qemu-ifdown /etc/qemu-ifdown_org
    $ sudo gedit /etc/qemu-ifdown
    内容は以下の通りです。
    #!/bin/sh
    sudo /sbin/brctl delif br0 $1
    sudo /sbin/ifconfig $1 down
    実行権限を設定します。
    $ sudo chmod a+x /etc/qemu-ifdown

QEMUでRaspbianを動作

QEMUでRaspbianを動作させる手順です。

  1. Raspbianを格納するディレクトリを作成します。
  2. $ mkdir ~/qemu_pi
    $ cd ~/qemu_pi
  3. Raspbianイメージファイルをダウンロードして解凍します。
  4. $ wget http://downloads.raspberrypi.org/raspbian_latest -O 2013-09-25-wheezy-raspbian.zip
    $ unzip 2013-09-25-wheezy-raspbian.zip
    2013-09-25-wheezy-raspbian.imgが解凍されます。
  5. Linux kernel for Qemu をダウンロードする。
  6. $ wget http://xecdesign.com/downloads/linux-qemu/kernel-qemu
  7. Raspbianイメージファイルをマウントします。
  8. $ sudo mkdir /mnt/raspbian
    $ sudo mount ~/qemu_pi/2013-09-25-wheezy-raspbian.img -o offset=62914560 /mnt/raspbian
  9. ld.so.preloadの内容を変更します。
  10. $ sudo gedit /mnt/raspbian/etc/ld.so.preload
    [変更前]
    /usr/lib/arm-linux-gnueabihf/libcofi_rpi.so

    [変更後]
    #/usr/lib/arm-linux-gnueabihf/libcofi_rpi.so
  11. Raspbianイメージファイルをアンマウントします。
  12. $ sudo umount ~/qemu_pi/2013-09-25-wheezy-raspbian.img /mnt/raspbian
    $ sudo rmdir /mnt/raspbian
  13. 一旦、QEMUから起動します。
  14. $ sudo qemu-system-arm -kernel ~/qemu_pi/kernel-qemu -cpu arm1176 -m 256 -M versatilepb -no-reboot -serial stdio -append "root=/dev/sda2 panic=1" -hda ~/qemu_pi/2013-09-25-wheezy-raspbian.img -net nic -net tap,ifname=tap0
    rp_qemu000
    上記の画面で止まるので、以下のコマンドを入力します。
    (QEMU上での操作)
    # fsck /dev/sda2
    Fix<y>? の質問はそのままEnterキーを押します。
    終わったら、シャットダウンします。
    (QEMU上での操作)
    # shutdown -h now
以上で、Raspbianを使用する前の雑用は終わりです。
この時点でのRaspbianイメージファイルを別にコピーしておくことで、上記の雑用を済ませた状態でやり直すことが出来ます。

もう一度、QEMUから起動します。
$ sudo qemu-system-arm -kernel ~/qemu_pi/kernel-qemu -cpu arm1176 -m 256 -M versatilepb -no-reboot -serial stdio -append "root=/dev/sda2 panic=1" -hda ~/qemu_pi/2013-09-25-wheezy-raspbian.img -net nic -net tap,ifname=tap0
rp_qemu001
Raspbianの初期設定画面が表示されます。

参考:
QEMUでARM環境を手にいれる | 團長の小部屋
HOWTO: Virtual Raspbian on Qemu in Ubuntu Linux 12.10