赞
踩
双击安装:qemu-w64-setup-20240328.exe
添加qemu安装目录到系统环境变量
下载后文件如下:
新建runPi.bat 文件,写入:
qemu-system-arm -M versatilepb -cpu arm1176 -m 256 -drive "file=2020-02-13-raspbian-buster.img,if=none,index=0,media=disk,format=raw,id=disk0" -device "virtio-blk-pci,drive=disk0,disable-modern=on,disable-legacy=off" -net "user,hostfwd=tcp::5022-:22" -dtb ./qemu-rpi-kernel/versatile-pb-buster-5.4.51.dtb -kernel ./qemu-rpi-kernel/kernel-qemu-5.4.51-buster -append "root=/dev/vda2 panic=1" -no-reboot -net nic
注意修改里面几个文件(2020-02-13-raspbian-buster.img,versatile-pb-buster.dtb ,kernel-qemu-5.4.51-buster )的路径为自己机器实际路径,
相关指令选项介绍:
保存后双击该脚本即可启动树莓派系统:
宿主机网:
一、对宿主系统(Windows)安装TAP-Win32虚拟网卡,并加入-net参数运行qemu
下载OpenVPN的Windows安装程序。
http://openvpn.net/index.php/open-source/downloads.html
默认勾选TAP Virtual Ethernet Adapter。
安装结束后,Windows会出现一个新的虚拟网卡。
右键“网络邻居”->属性,打开“网络连接”
把新的TAP-Win32 Adapter V9网卡的名称改为my-tap。
右键->属性->Internet协议(TCP/IP)
双击后选择“使用下面的IP地址”
把IP地址和子网掩码分别改为:
192.168.2.39
255.255.255.0
-net nic -net tap,ifname=my-tap
sudo ifconfig eth0 192.168.2.40
sudo route add default gw 192.168.2.39 eth0
正常情况下,只要重启qemu就可还原虚拟机内ubuntu的IP和网关设置。
如果想手动删除默认网关,可键入:(假设虚拟网卡以192.168.200.10为IP)
$ sudo route del default gw 192.168.200.10 eth0
如果想重新设置虚拟系统(例如qemu内的ubuntu)的对外IP,
直接执行ifconfig指定新的IP即可。
例如sudo ifconfig eth0 192.168.200.12。
4.测试
ping www.baidu.com 成功
接下来我们通过ssh连接树莓派终端,打开cmd命令窗口,输入:
ssh pi@127.0.0.1 -p 5022
紧接着使用gdb+gdbserver对C程序进行调试
首先利用ftp工具将已经编译好的可执行文件和GCC包下arm-none-linux-gnueabi\libc\usr\bin目录中的gdbserver传送到模拟器中
然后执行以下命令:
./gdbserver :22349 test
该模拟器的ip不在局域网段上,宿主机连接不上, 可以采用端口映射的办法来替代,只需要在模拟器启动时多追加加上一行参数hostfwd=tcp::22349-:22349,具体启动指令修改如下:
qemu-system-arm -M versatilepb -cpu arm1176 -m 256 -drive "file=2020-02-13-raspbian-buster.img,if=none,index=0,media=disk,format=raw,id=disk0" -device "virtio-blk-pci,drive=disk0,disable-modern=on,disable-legacy=off" -net "user,hostfwd=tcp::5022-:22,hostfwd=tcp::22349-:22349" -dtb ./qemu-rpi-kernel/versatile-pb-buster-5.4.51.dtb -kernel ./qemu-rpi-kernel/kernel-qemu-5.4.51-buster -append "root=/dev/vda2 panic=1" -no-reboot -net nic
如此一来就可以在宿主gdb调试窗口中直接使用以下指令进行连接:
(gdb) target remote 127.0.0.1:22349
连接成功了,通过以上这种方式,我们只需要将模拟器启动使其后台运行,我们通过ssh进行登录连接,这样速度快了很多,而且相比一些安卓模拟器,QEMU占用系统资源也不高
另外我们发现,还存在声卡缺失,同时运行有延迟卡顿现象,我们接下来对这两方面进行优化
小问题
如果是raw格式,可能会有些风险警告,可以通过-drive format=raw进行指定处理:
qemu-system-arm.exe -machine raspi2b -drive file=2020-02-13-raspbian-buster.img,format=raw,index=0,media=disk
随着我们对系统的频繁操作我们发现系统镜像文件在不断增大,此时想要回到原来的状态,只能重新下载镜像安装了,如果你不想遭受重新下载的痛苦,那么建议你使用备份镜像的模式进行系统的安装
这时qemu-img.exe派上了用场,它不仅可以帮助你创建空镜像文件,而且还可以对已有的镜像文件进行格式转换,QEMU支持的镜像有以下:
qemu-img 支持非常多种的文件格式,可以通过 qemu-img -h 查看. 其中 raw 和 qcow2 是比较常用的两种, raw 是 qemu-img 命令默认的,qcow2 是 qemu 目前推荐的镜像格式,是功能最多的格式
创建空镜像文件:
qemu-img create -f qcow2 test.qcow2 10G
-f 选项用于指定镜像的格式,
qcow2 格式是 QEMU最常用的镜像格式,采用来写时复制技术来优化性能。
test.qcow2 是镜像文件的名字,
10G是镜像文件最大值
镜像转换:
qemu-img.exe convert -f raw system.img -O vmdk system.vmdk
表示将原始格式的镜像文件转换成vmdk格式
使用备份镜像的方式启动镜像示例:
qemu-system-x86_64 -m 2048 -enable-kvm test.qcow2 -cdrom Centos-Desktop-x86_64-20-1.iso
下载ubuntu-18.04.4 arm server版
https://old-releases.ubuntu.com/releases/18.04/ubuntu-18.04.4-server-arm64.iso
下载EFI
http://releases.linaro.org/components/kernel/uefi-linaro/16.02/release/qemu64/QEMU_EFI.fd
6、创建空白磁盘
来到目标保存目录,打开cmd,输入
qemu-img create ubuntuarm64.img 50G
7、安装系统
cmd输入以下命令。注意,安装光盘、空白磁盘、EFI、tap网卡路径及名称根据实际填写。
qemu-system-aarch64.exe -m 8192 -cpu cortex-a72 -smp 8,sockets=4,cores=2 -M virt -bios QEMU_EFI.fd -net nic -net tap,ifname=my_tap -device VGA -drive if=none,file=./ubuntu-18.04.4-server-arm64.iso,id=cdrom,media=cdrom -device virtio-scsi-device -device scsi-cd,drive=cdrom -drive if=none,file=./ubuntuarm64.img,id=hd0 -device virtio-blk-device,drive=hd0 -device nec-usb-xhci -device usb-ehci -device usb-kbd -device usb-mouse -accel tcg,thread=multi
此时可以看到ubuntu安装选项
后续启动
后续如果想要重新启动qemu,不需要再重新安装ubuntu,用以下命令启动即可。
qemu-system-aarch64.exe -m 4096 -cpu cortex-a57 -smp 2 -M virt -bios ./QEMU_EFI.fd -net nic -net tap,ifname=my_tap -device VGA -drive if=none,file=./ubuntuarm64.img,id=hd0 -device virtio-blk-device,drive=hd0 -device usb-ehci -device usb-kbd -device usb-mouse
sudo vim /etc/apt/source.list
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal main restricted
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal-updates main restricted
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal-updates universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal-updates multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal-backports main restricted universe multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal-security main restricted
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal-security universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal-security multiverse
在Ubuntu 18.04中设置静态IP地址,你可以编辑/etc/netplan目录下的配置文件。通常文件名为01-netcfg.yaml,但可能会有所不同。
以下是设置静态IP的步骤和示例配置:
找到Netplan配置文件。通常这个文件位于/etc/netplan/目录下。
ls /etc/netplan/
编辑该配置文件。你需要使用一个文本编辑器,如nano或vim。
sudo nano /etc/netplan/01-netcfg.yaml
修改配置文件以设置静态IP。以下是一个配置示例:
network:
version: 2
renderer: networkd
ethernets:
enp0s3:
dhcp4: no
addresses:
- 192.168.1.10/24
gateway4: 192.168.1.1
nameservers:
addresses: [8.8.8.8, 8.8.4.4]
确保将enp0s3替换为你的网络接口名称,192.168.1.10替换为你想要的静态IP地址,192.168.1.1替换为你的网关地址,以及8.8.8.8和8.8.4.4替换为你选择的DNS服务器地址。
保存文件并退出编辑器。
应用配置。
sudo netplan apply
确认静态IP设置成功。
ip addr show
openwrt:https://archive.openwrt.org/chaos_calmer/
Debian系统镜像:https://people.debian.org/~aurel32/qemu/
谷歌安卓原生镜像:https://developers.google.cn/android/images
树莓派x86镜像: https://www.raspberrypi.org/downloads/raspberry-pi-desktop/
Ubuntu22镜像:http://old-releases.ubuntu.com/releases/22.10/ubuntu-22.10-live-server-arm64.iso
https://blog.csdn.net/sinat_24468029/article/details/52918535
https://www.freebuf.com/sectool/368589.html
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。