实践环境及准备:
宿主机 | 系统ctyunos release 2.0.1 , 内核版本4.19.90-2102.2.0.0062.ctl2.x86_64 |
qemu |
QEMU emulator version 7.0.0 |
aarch64镜像 | ctyunos-aarch64-20220523093214.qcow2 |
备注:
编译qemu时可以以--target-list 参数指定需要的架构,若未指定,该参数默认为ALL,即均支持。若编译时未支持aarch64版本的话就不会有对应的qemu-system-aarch64 二进制。
创建虚拟机
一个基于QEMU搭建基础的ARM系统的指令如下:
#!/bin/bash
/var/qemu-7.0.0/bin/qemu-system-aarch64 \
-m 128G \
-bios /var/qemu-7.0.0/share/qemu/edk2-aarch64-code.fd \
-object memory-backend-file,id=mem0,size=128G,mem-path=/dev/hugepages,share=on,prealloc=yes \
-numa node,memdev=mem0 \
-machine virt,gic-version=3 \
-cpu cortex-a57 \
-smp 96,sockets=8,cores=12,threads=1 \
-drive file=/var/wanglei7/ctyunos-aarch64.qcow2,if=none,id=drive-virtio-disk0,format=qcow2,cache=writeback \
-device virtio-blk-pci,scsi=off,drive=drive-virtio-disk0,id=virtio-disk0,bootindex=1 \
-vnc :0 \
--nographic
关键参数解释:
-m 设置内存大小。
-bios 设置启动arm系统所需的 UEFI固件文件所在路径。
-object 该行指定了虚机所使用大页路径。
-machine virt 设置机器型号为QEMU 7.0 ARM Virtual Machine,不同的机器型号所支持的cpu数不同。同时针对virt类型,通过gic-version指定ARM通用中断控制器GIC的版本,默认v2版本只支持最多8个CPU,v3版本支持最多512个CPU。
-smp 设置CPU核数。
--nographic 设置为无图像模式。
注意事项:
machine及cpu需在aarch64所支持的版本列表中,该支持列表可使用如下命令查询
qemu-system-aarch64 -machine ?
qemu-system-aarch64 -cpu ?