qemu模拟arm64平台

参考:https://www.jianshu.com/p/aef9e3f78adb

安装:

对没错我就是那个在Windows下折腾qemu的*b

我现在也不知道为什么安装装不上bootloader,所以只能用-kernel-initrd直接启动

首先下载安装要用的kernel和initrd,在各个镜像站的/debian/dists/Debian11.1/main/installer-arm64/current/images/cdrom/目录下,Debian11.1换成需要安装的版本,这里是11.1

然后下载相应的镜像,我这里下载的是debian-11.1.0-arm64-netinst.iso

创建虚拟硬盘镜像,我这里为了方便提取内核(win下的DiskGenius)用的raw格式:qemu-img create -f raw debian_arm64.qcow2 10G

qemu官方推荐qcow2格式,linux/wsl选手可以用这个格式

然后启动模拟器安装debian:

"C:\Program Files\qemu\qemu-system-aarch64.exe" ^
-machine virt -cpu cortex-a72 -smp 2 -m size=2048M ^
-nic user ^
-drive if=none,file=debian_arm64.qcow2,id=hd0 ^
-device virtio-blk-device,drive=hd0 ^
-drive if=none,file=debian-11.1.0-arm64-netinst.iso,id=cd0,media=cdrom ^
-device virtio-scsi-device -device scsi-cd,drive=cd0 ^
-kernel "D:\VM\debian_arm64_vmlinuz" ^
-initrd "D:\VM\debian_arm64_initrd.gz"

由于Windows的cmd不能正确处理彩色字符,这里建议不要加-nographic,使用GUI的serial窗口操作安装程序(虽然还是谜语)

装好之后,需要把虚拟硬盘镜像的/boot分区的东西搞出来,这里我用的diskgenius,把所有东西复制到boot文件夹

最后就是正常使用时的启动,这里把“虚拟机”(或者应该叫模拟器)的22端口映射到了主机的127.0.0.1:22以方便ssh连接,同时需要传递root参数,否则内核不知道去哪里找根目录:

"C:\Program Files\qemu\qemu-system-aarch64.exe" ^
-machine virt -cpu cortex-a72 -smp 2 -m size=2048M ^
-nic user,hostfwd=tcp:127.0.0.1:22-:22 ^
-drive if=none,format=raw,file=debian_arm64.img,id=hd0 ^
-device virtio-blk-device,drive=hd0 ^
-kernel .\boot\vmlinuz-5.10.0-9-arm64 ^
-initrd .\boot\initrd.img-5.10.0-9-arm64 ^
-append "root=/dev/vda2" ^
-nographic

注:win平台建议配置好sshd再加-nographic

还没有涉及到内核更新情况,如果内核需要更新应该也需要重新导出/boot分区文件

折腾用过的指令

创建qcow2格式硬盘镜像(固定大小),preallocationfallocfull时均会失败:qemu-img create -f qcow2 -o preallocation=metadata debian_arm64.qcow2 10G

改变镜像大小为10G:qemu-img resize debian-10-openstack-arm64.qcow2 10G

预分配所有空间(固定大小),preallocation同创建:qemu-img convert -f qcow2 -O qcow2 -o preallocation=metadata old.qcow2 new.qcow2

Visits: 34

发布者:Tabing010102

???

留下评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据