Miles' Blog

天涯何處無幹話,何必要講實務話

QEMU

與 VirtualBox 等其他虛擬機不同的是,QEMU 可以模擬 CPU 硬體核心。想當然爾,一定會很慢。

以下筆記是使用 MacOS + QEMU 模擬 Raspberry Pi ARM CPU + raspbian jessie 系統。

首先要先安裝 QEMU

brew install qemu

再來要來這裡下載 Raspberry Pi kernel。這裡的 kernel 必須與下面的作業系統是對應的。(裡面的 README 也有說明)

接著到 Raspberry Pi 官網下載作業系統映像檔。

以下使用 kernel-qemu-4.4.34-jessie + 2019-04-08-raspbian-stretch.zip

下載完後,先解壓縮 zip

$ unzip 2019-04-08-raspbian-stretch.zip
Archive: 2019-04-08-raspbian-stretch.zip
inflating: 2019-04-08-raspbian-stretch.img

準備齊全後,就可以啟動 QEMU 了:

qemu-system-arm \
-kernel kernel-qemu-4.4.34-jessie \
-cpu arm1176 -m 256 \
-M versatilepb -no-reboot -serial stdio \
-append "root=/dev/sda2 panic=1 rootfstype=ext4 rw init=/bin/bash" \
-drive "file=2019-04-08-raspbian-stretch.img,index=0,media=disk,format=raw"

啟動後,因預設的設定並不適合 QEMU 執行,所以要進去裡面調整設定:

sed -i -e 's/^/#/' /etc/ld.so.preload
sed -i -e 's/^/#/' /etc/ld.so.conf
sed -i -e 's/^/#/' /etc/fstab

再次啟動 QEMU:

qemu-system-arm
-kernel kernel-qemu-4.4.34-jessie
-cpu arm1176 -m 256
-M versatilepb -no-reboot -serial stdio
-append "root=/dev/sda2 panic=1 rootfstype=ext4 rw"
-drive "file=2017-03-02-raspbian-jessie.img,index=0,media=disk,format=raw"
-net user,hostfwd=tcp::5022-:22

這裡多加了一個 port forwarding 設定,接著就能使用 ssh 進入機器了:

ssh -p 5022 pi@localhost

References

0%