在PVE平台上使用QEMU模拟ARM环境
环境准备
使用的版本是Proxmox VE 8.2.2 版本,首先先配置好镜像源。
需要以下组件
pve-qemu-kvm 8.0.2-7 amd64 Full virtualization on x86 hardware
qemu-efi-aarch64 2022.11-6 all UEFI firmware for 64-bit ARM virtual machines
qemu-server 8.0.7 amd64 Qemu Server Tools
qemu-system-aarch64组件进行arm模拟转换,在PVE8中目前没有内置这个组件,首先通过apt install qemu-efi-aarch64来安装
通过PVE web页面可以快速配置环境,但是仍有部分配置需要手动调整启动命令行来实现,比如spice的支持,等
首先建立虚拟机
- 操作系统这里先不选任何介质,因为默认添加的光盘会通过IDE总线挂载,qemu-system-aarch64不支持
- 系统这里机型默认i440fx(没测过Q35,按照PVE官方说明不设置硬件直通的情况下都建议使用i440fx)
bios选择uefi模式,efi的盘随便挂一块
SCSI控制器这里注意,必须且只能选择VirtIO SCSI模式,其他模式qemu-system-aarch64不支持
- 硬盘这里总线注意选择SCSI,下面配置根据自己情况酌情勾选,我这里只勾选了SSD仿真
- CPU这里只选需要的核心数量,类别这里什么都不选,一会再改命令行
- 内存情况我选的是2G,貌似是因为发行版不同的原因,目前我尝试非2G内存时会出现鼠标、键盘无法使用的情况
- 网络VirtIO (半虚拟化) qemu-system-aarch64是可以支持的,直接用半虚拟化模式
- 手动添加镜像,总线选择SCSI,即使在创建向导时选择了不使用任何介质但是在硬件中依然会创建一个CD/DVD Drive 注意删除这个硬件
添加完成后,我们来看一下目前的启动配置和cmdline是什么样的
config文件如下
agent: 1
bios: ovmf
boot: order=scsi0;net0;scsi1
cores: 8
efidisk0: ISCSI-Thin:vm-112-disk-0,efitype=4m,pre-enrolled-keys=1,size=4M
memory: 4096
meta: creation-qemu=8.0.2,ctime=1701243164
net0: virtio=12:DE:C5:6C:F3:B1,bridge=vmbr0,firewall=1
numa: 0
ostype: l26
scsi0: ISCSI-Thin:vm-112-disk-1,iothread=1,size=100G
scsi1: DSM_NFS_ISO:iso/uos-desktop-20-professional-1060-arm64-202309.iso,media=cdrom,size=3588150K
scsihw: virtio-scsi-pci
smbios1: uuid=de71dc68-e726-43b5-8738-a5013e24e6c8
sockets: 1
#vmgenid: 6f1f76ab-b800-4e1b-a7a3-4589f1fce4d2 注释掉这行
arch: aarch64 添加指定架构
cmdline如下
/usr/bin/qemu-system-aarch64 -id 112 -name ‘vm112,debug-threads=on’ -no-shutdown -chardev ‘socket,id=qmp,path=/var/run/qemu-server/112.qmp,server=on,wait=off’ -mon ‘chardev=qmp,mode=control’ -chardev ‘socket,id=qmp-event,path=/var/run/qmeventd.sock,reconnect=5’ -mon ‘chardev=qmp-event,mode=control’ -pidfile /var/run/qemu-server/112.pid -daemonize -smbios ‘type=1,uuid=de71dc68-e726-43b5-8738-a5013e24e6c8’ -drive ‘if=pflash,unit=0,format=raw,readonly=on,file=/usr/share/pve-edk2-firmware//AAVMF_CODE.fd’ -drive ‘if=pflash,unit=1,id=drive-efidisk0,format=raw,file=/dev/zvol/ZFS_workspace/vm-112-disk-0,size=67108864’ -smp ‘8,sockets=1,cores=8,maxcpus=8’ -nodefaults -boot ‘menu=on,strict=on,reboot-timeout=1000,splash=/usr/share/qemu-server/bootsplash.jpg’ -vnc ‘unix:/var/run/qemu-server/112.vnc,password=on’ -cpu cortex-a57 -m 4096 -device ‘pci-bridge,id=pci.1,chassis_nr=1,bus=pcie.0,addr=0x1e’ -device ‘pci-bridge,id=pci.2,chassis_nr=2,bus=pcie.0,addr=0x1f’ -device ‘usb-ehci,id=ehci,bus=pcie.0,addr=0x1’ -device ‘usb-tablet,id=tablet,bus=ehci.0,port=1’ -device ‘usb-kbd,id=keyboard,bus=ehci.0,port=2’ -device ‘virtio-gpu,id=vga,bus=pcie.0,addr=0x2’ -chardev ‘socket,path=/var/run/qemu-server/112.qga,server=on,wait=off,id=qga0’ -device ‘virtio-serial,id=qga0,bus=pcie.0,addr=0x8’ -device ‘virtserialport,chardev=qga0,name=org.qemu.guest_agent.0’ -device ‘virtio-serial,id=spice,bus=pcie.0,addr=0x9’ -chardev ‘spicevmc,id=vdagent,name=vdagent’ -device ‘virtserialport,chardev=vdagent,name=com.redhat.spice.0’ -spice ‘tls-port=61000,addr=127.0.0.1,tls-ciphers=HIGH,seamless-migration=on’ -device ‘virtio-balloon-pci,id=balloon0,bus=pcie.0,addr=0x3,free-page-reporting=on’ -iscsi ‘initiator-name=iqn.1993-08.org.debian:01:dc8a864c80c9’ -device ‘virtio-scsi-pci,id=scsihw0,bus=pcie.0,addr=0x5’ -drive ‘file=/dev/zvol/CoreDataBase/vm-112-disk-0,if=none,id=drive-scsi0,format=raw,cache=none,aio=io_uring,detect-zeroes=on’ -device ‘scsi-hd,bus=scsihw0.0,channel=0,scsi-id=0,lun=0,drive=drive-scsi0,id=scsi0,rotation_rate=1’ -drive ‘file=/mnt/pve/DSM_NFS_ISO/template/iso/uos-desktop-20-professional-1060-arm64-202309.iso,if=none,id=drive-scsi1,media=cdrom,aio=io_uring’ -device ‘scsi-cd,bus=scsihw0.0,channel=0,scsi-id=0,lun=1,drive=drive-scsi1,id=scsi1,bootindex=100’ -netdev ‘type=tap,id=net0,ifname=tap112i0,script=/var/lib/qemu-server/pve-bridge,downscript=/var/lib/qemu-server/pve-bridgedown’ -device ‘virtio-net-pci,mac=12:DE:C5:6C:F3:B1,netdev=net0,bus=pcie.0,addr=0x12,id=net0,rx_queue_size=1024,tx_queue_size=256’ -machine ‘accel=tcg,type=virt+pve0’
这样实际上就已经可以启动了,但是也可以修改SPICE参数使用SPICE来链接。可以改为
spice ‘port=60010(绑定的端口),tls-port=60011(加密的端口),addr=xxx.xxx.xxx.xxx,seamless-migration=on,password-secret=test’ -object ‘secret,id=test,data=123456’
即可用SPICE来链接。
最终效果如下
1.如何在YAML中输入多行字符串
2.ddt服务架构
3.删除Windows中网络名称后边的数字
4.在Firefox浏览器中启用Windows11风格滚动条
5.PVE 8 开启SR-IOV
6.无线电B类考试题库(六)
7.无线电B类考试题库(五)
8.无线电B类考试题库(四)