MacのQEMU上でRaspbianを動かす

MacのQEMU上でRaspbianを動かす

準備

  • まずbrewをインストール
    ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"
  • brewをアップデート
    sudo brew update
  • qemuをインストール
    brew install qemu
  • wgetをインストール
    brew install wget
  • 適当な作業フォルダを作り、移動する
    mkdir piemu
    cd piemu

確認

  • 以下のコマンドで使える仮想マシンを確認(versatilepbがあればOK)
    qemu-system-arm -machine help
  • 以下のコマンドで使える仮想CPUを確認(RaspberryPiはarm1176かarm1176-r2なのでそれがあればOK)
    qemu-system-arm -cpu help -machine versatilepb

インストール

  • PaspberryPi用のカーネルをダウンロード
    wget http://xecdesign.com/downloads/linux-qemu/kernel-qemu
  • RaspberryPiのページからRaspbianのイメージをダウンロードし展開
  • qemuを起動(rpi.imgはRaspbianのイメージファイル(日付とか)に読み替えてください)(qemuはctrl+altでマウス入力をウィンドウ外にはずせます)
    qemu-system-arm -kernel kernel-qemu -cpu arm1176 -m 256 -M versatilepb -serial stdio -append "root=/dev/sda2 panic=1 rootfstype=ext4 rw init=/bin/bash" -hda rpi.img 
  • 以下のコマンドでエディタを起動します。
    nano /etc/ld.so.preload
  • 一行目をコメントアウトします。行頭で#を入力し、ctrlを押しながらOを押して下さい。ファイル名はそのままで上書きして下さい。
    #/usr/lib/arm-linux-gnueabihf/libcofi_rpi.so
  • catでファイル内容を確認します。
    cat /etc/ld.so.preload
    #/usr/lib/arm-linux-gnueabihf/libcofi_rpi.so
  • /etc/udev/rules.d/90-qemu.rulesを作る
    touch /etc/udev/rules.d/90-qemu.rules
  • nanoで以下を記述(実機とディスクデバイス名を合わせるため)
    nano /etc/udev/rules.d/90-qemu.rules
    KERNEL=="sda", SYMLINK+="mmcblk0"
    KERNEL=="sda?", SYMLINK+="mmcblk0p%n"
    KERNEL=="sda2", SYMLINK+="root"
  • 終了する
    exit
  • ターミナル側のqemuをctrl+Cで殺す
  • 以下のコマンドで再度起動する。
    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 rpi.img
  • あとは好きに使う
  • ディスクイメージの空き容量を増やすためにはRASPBERRY PI のイメージファイルを拡張する

オプションについて

-m 256 256MB以上にすると起動しない。
-hda rpi.img Raspbianのディスクイメージファイル。
-redir tcp:2222:22 ホストのTCPポート2222をQEMUターゲットのポート22にリダイレクトする。
-no-reboot 再起動せずに終了する。
-serial stdio ゲストの仮想シリアルポートをホストの標準入出力にリダイレクトする。
-append “root=/dev/sda2 panic=1 rootfstype=ext4 rw” カーネルコマンドライン。
-kernel kernel-qemu kernel-qemuを使う

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です