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 network

Mặ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 



Leave a Reply

Subscribe to Posts | Subscribe to Comments

- Copyright © Lập trình hệ thống nhúng Linux . Powered by Luong Duy Ninh -