下面介紹用QEMU模擬Raspberry Pi的方法,采用了這種方法後就算沒有開發板也能進行測試。
開發環境
測試用的Host OS環境是 Debian 7.2 Wheezy amd64.
Guest OS是, 對Raspberry Pi進行優化後的 Debian Raspbian (2013-09-15) .
2014/7/31 追加: Debian 8 jessie amd64, QEMU 2.0.0, Raspbian (2014-06-20) 也用同樣的步驟確認過動作.
安裝QEMU
先安裝QEMU.
sudo aptitude install qemu
執行下面的命令來檢查需要的CPU是否被支持了. 如果arm1176 被顯示就OK.
arm1176 沒有被表示的話, 或者是重新編譯QEMU, 或者是查找其他的Binary.
qemu-system-arm -cpu'?' | grep arm1176
映像的下載
創建合適的目錄, 從http://www.raspberrypi.org/downloads 下載 Raspbian 映像並展開.
在同一個目錄下從 http://xecdesign.com/downloads/linux-qemu/kernel-qemu 下載內核映像文件.
第一次啟動
執行下面的命令, 第一次啟動qemu.
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 2013-09-25-wheezy-raspbian.img
編集/etc/ld.so.preload.
nano/etc/ld.so.preload
如下所示, 注釋掉第一行並保存, 關閉文件.
#/usr/lib/arm-linux-gnueabihf/libcofi_rpi.so
下面的步驟可選。 QEMU 模擬器上磁盤是認作 /dev/sda , 但是由於實機上是認作 /dev/mmcblk0 所以要設定對應的符號鏈接。
創建/etc/udev/rules.d/90-qemu.rules 並追加以下記錄.
/etc/udev/rules.d/90-qemu.rules
KERNEL=="sda", SYMLINK+="mmcblk0"
KERNEL=="sda?", SYMLINK+="mmcblk0p%n"
KERNEL=="sda2", SYMLINK+="root"
結束。
exit
起動
起動下面的命令。
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 2013-09-25-wheezy-raspbian.img
用用戶名: pi, 密碼: raspberry 登錄, 這樣就能起動 X.
關於選項
關於QEMU 起動時候的選項的說明整理了一下.
-kernel kernel-qemu
使用下載的內核映像 kernel-qemu.
-cpu arm1176
模擬ARM1176 CPU. Raspberry Pi 板上搭載了 Broadcom BCM2835, 這個處理器用的是ARM1176JZ-F.
-m 256
RAM的大小是256MB. 設定成比256MB大的值板子好像不能啟動.
-M versatilepb
設定模擬的開發板類型. versatilepb 是 ARM Versatile Platform Board
-no-reboot
不重啟退出.
-serial stdio
重定向Guest 的串口到Host的標准輸入輸出.
-append “root=/dev/sda2 panic=1 rootfstype=ext4 rw”
內核的命令行.
-hda 2013-09-25-wheezy-raspbian.img
Harddisk 0 使用 2013-09-25-wheezy-raspbian.img.
其他
就用那樣的映像的話磁盤的空余容量比較少, 根據需要可以需要擴張磁盤的大小. 詳情請參照 Raspberry Pi のイメージファイルを拡張する.
參考
QEMU – Emulating Raspberry Pi the easy way (Linux or Windows!) (http://xecdesign.com/qemu-emulating-raspberry-pi-the-easy-way/)
Raspberry Pi 樹莓派上安裝Weston http://www.linuxidc.com/Linux/2013-06/86685.htm
用於Raspberry Pi 的Linux 操作系統已經可用 http://www.linuxidc.com/Linux/2012-03/56058.htm
Raspberry Pi(樹莓派)試用小記 http://www.linuxidc.com/Linux/2013-10/91008.htm
Raspberry Pi(樹莓派)的安裝、配置IP及軟件源等入門 http://www.linuxidc.com/Linux/2013-10/91009.htm
Ubuntu 12.04之找不到Qemu命令 http://www.linuxidc.com/Linux/2012-11/73419.htm
Arch Linux上安裝QEMU+EFI BIOS http://www.linuxidc.com/Linux/2013-02/79560.htm
QEMU的翻譯框架及調試工具 http://www.linuxidc.com/Linux/2012-09/71211.htm
QEMU 的詳細介紹:請點這裡
QEMU 的下載地址:請點這裡