利用 QEMU 运行ARM64 架构的 OpenWRT
之前写了一篇 QEMU User 模式运行 mips 程序的随笔。进体内再来补充下,如何使用 QEMU system 模式运行 Arm64 的系统。
QEMU 环境
略,直接 apt、dnf、pacman 搜索安装下就行。注意需要安装 qemu-arch-extra。
系统镜像 https://mirrors.ustc.edu.cn/openwrt/releases/19.07.5/targets/armvirt/
可以从这里下载。如果想测试 32位系统请下载 32位的镜像,并参考 https://gist.github.com/cocktail828/eec77bac804110478ac55d2381bbb81e
来操作。
这里不再介绍 32 位的步骤,仅介绍下 64位的。
qemu-system-aarch64 运行 64 位系统
运行 Image-initramfs
Image-initramfs 实际上是把 rootfs 与 zImage 打包在一起的。在这种模式下,文件系统完全驻留在内存中,断电时任何修改都会丢失。
qemu-system-aarch64 -M virt -m 1024m -kernel openwrt-19.07.5-armvirt-64-Image-initramfs -no-reboot -nographic -nic user -nic user -cpu cortex-a53 -smp 4
启动如下图
单独指定 rootfs
注意这里添加了 -drive
与 -append
两个参数
qemu-system-aarch64 -M virt -m 1024m -kernel openwrt-19.07.5-armvirt-64-Image -drive file=openwrt-19.07.5-armvirt-64-root.squashfs,format=raw,if=virtio -no-reboot -nographic -nic user -nic user -cpu cortex-a53 -smp 4 -append root=/dev/vda
启动如下图