RASPBERRY PI ON QEMU
在虚拟机 Ubuntu22.04.1
中进行QEMU下的ARM环境搭建
-
Raspbian 镜像:http://downloads.raspberrypi.org/raspbian/images/raspbian-2017-04-10/
-
对应优化后的的QEMU内核:https://github.com/dhruvvyas90/qemu-rpi-kernel/blob/master/kernel-qemu-4.4.34-jessie
创建文件夹,将下载的Raspbian 镜像,以及qemu-kernel放置其中
并下载qemu-system
解压后,进行分区调整
从中可以看出该镜像文件共有两个分区,特别注意第二个分区的起点扇区,每个扇区是512个字节,由此算出第二分区起点位置是512 * 92160 = 47185920 字节。
接下载我们把镜像文件挂载到一个目录下面,这样就可以通过这个目录访问这个镜像文件里面的内容了,在解压后的镜像文件目录下执行命令
使用#
注释掉文件里面的所有内容, Ctrl-x --» Y
保存并退出。
修改/mnt/raspbian/etc/fstab
卸载镜像
sudo umount /mnt/raspbian
写一个qemu启动脚本
gedit qemu_run.sh
#!/bin/bash
sudo qemu-system-arm \
-kernel kernel-qemu-4.4.34-jessie \
-append "root=/dev/sda2 panic=1 rootfstype=ext4 rw" \
-hda 2017-04-10-raspbian-jessie.img \
-vga std \
-cpu arm1176 -m 256 \
-M versatilepb \
-no-reboot \
-serial stdio \
-net nic \
-net user,hostfwd=::1234-:22 \
给脚本加上可执行权限,启动系统
chmod +x qemu_run.sh
./qemu_run.sh
进入终端,启动SSH服务
在Ubuntu上远程访问(默认用户名pi,默认密码raspberry)
ssh pi@127.0.0.1 -p 1234
配置网络
上面为了方便ssh连接,将树莓派的22端口映射到Ubuntu宿主机的1234端口
在Ubuntu上创建共享网络接口(tap0)
kka@kka-ubuntu:~$ sudo apt-get install uml-utilities
kka@kka-ubuntu:~$ sudo tunctl -t tap0 -u kka
Set 'tap0' persistent and owned by uid 1000
kka@kka-ubuntu:~$ sudo ifconfig tap0 172.16.0.1/24
完成配置后,查看tap0接口
kka@kka-ubuntu:~$ ifconfig tap0
tap0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 172.16.0.1 netmask 255.255.255.0 broadcast 172.16.0.255
ether 6e:c0:7b:81:7a:0a txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
重新启动QEMU
sudo qemu-system-arm -kernel kernel-qemu-4.4.34-jessie -cpu arm1176 -m 256 -M versatilepb -serial stdio -append "root=/dev/sda2 rootfstype=ext4 rw" -hda 2017-04-10-raspbian-jessie.img -net nic -net tap,ifname=tap0,script=no,downscript=no -no-reboot
然后就可以从Ubuntu访问raspbian开放的端口,使用nc进行测试