- Back to Home »
- QEMU , Raspberry PI »
- Raspberry Pi on QEMU
Sunday, February 2, 2020
QEMU là một chương trình mô phỏng nền tảng chip, trong đó có chip ARM mà raspberry pi sử dụng. Nhờ QEMU ta có thể tạo môi trường develop giống như khi đang sử dụng raspberry pi thật vậy. Vì chạy trên máy tính nên build ứng dụng sẽ nhanh hơn rất nhiều so với khi dùng raspberry pi thật để build.
1.Install QEMU
For ubuntu
$sudo apt-get install qemu-system-arm
For Fedora
#yum install qemu-system-arm
2.Download Raspberry pi image and kernel file
Shell script to download and run qemu
#!/bin/sh
QEMU=$(command -v qemu-system-arm)
TMP_DIR=qemu-rpi
RPI_KERNEL=kernel-qemu-4.14.79-stretch
RPI_KERNEL_FILE=$TMP_DIR/$RPI_KERNEL
PTB=versatile-pb.dtb
PTB_FILE=$TMP_DIR/$PTB
IMAGE_BASE=2018-06-27-raspbian-stretch-lite
IMAGE=$IMAGE_BASE.zip
IMAGE_FILE=$TMP_DIR/$IMAGE
RPI_FS=$TMP_DIR/$IMAGE_BASE.img
mkdir -p $TMP_DIR
wget https://github.com/dhruvvyas90/qemu-rpi-kernel/blob/master/${RPI_KERNEL}?raw=true \
-O ${RPI_KERNEL_FILE}
wget https://github.com/dhruvvyas90/qemu-rpi-kernel/raw/master/$PTB \
-O ${PTB_FILE}
wget http://downloads.raspberrypi.org/raspbian_lite/images/raspbian_lite-2018-06-29/$IMAGE \
-O ${IMAGE_FILE}
unzip $IMAGE_FILE -d $TMP_DIR
$QEMU -kernel ${RPI_KERNEL_FILE} \
-cpu arm1176 -m 256 -M versatilepb \
-dtb ${PTB_FILE} -no-reboot \
-serial stdio -append "root=/dev/sda2 panic=1 rootfstype=ext4 rw" \
-drive "file=${RPI_FS},index=0,media=disk,format=raw" \
-net user,hostfwd=tcp::5022-:22 -net nic
Sau khi khởi động raspberry pi từ QEMU, đăng nhập với thông tin
raspberrypi login: pi
password: raspberry
Note: Chạy bản rút gọn raspbian lite nên không có giao diện đồ họa
Vì script trên đã cấu hình mở cổng ssh từ host sang pi
hostfwd=tcp::5022-:22
nên từ máy host có thể ssh vào máy ảo pi bằng lệnh
ssh pi@localhost -p5022
Password: raspberry
Hoặc copy file, thư mục từ host xuống máy ảo pi
password: raspberry
ninhld@ninhld:~$ scp -P 5022 -r Pictures pi@localhost:/home/pi
pi@localhost's password:
t_logo.png 100% 12KB 8.9KB/s 00:01
Screenshot from 2020-02-09 09-17-10.png 100% 86KB 1.7MB/s 00:00
Screenshot from 2020-02-08 23-13-52.png 100% 78KB 54.8KB/s 00:01
3.QEMU networkMặc định QEMU sẽ cấp cho pi địa chỉ ip là 10.0.2.15 và chỉ có thể chạy TCP và UDP mà thôi, giao thưc ping không thực hiện được.
Link:
- QEMU Arch
- Networking
4. Ứng dụng
Mọi sự thay đổi (những ứng dụng được cài đặt, cấu hình, data do người dùng tạo ra) đều được lưu vào file image (như trong bài viết này là 2018-06-27-raspbian-stretch-lite.img), vì thế nếu dùng file image này burn xuống sd card vày chạy trên raspberry pi thì mọi thứ sẽ giống y như khi chạy trên qemu vậy.
Note: Có thể thay đổi kích thước image bằng lệnh dưới đây
$ qemu-img resize -f raw 2018-06-27-raspbian-stretch-lite.img +5G
*Tăng size của 2018-06-27-raspbian-stretch-lite.img thêm 5GB
$ qemu-img info 2018-06-27-raspbian-stretch-lite.img
image: 2018-06-27-raspbian-stretch-lite.img
file format: raw
virtual size: 6.7G
disk size: 1.7G
*Xem dung lượng