Windows环境
下载安装QEMU
qemu-w64-setup-20260422.exe
- 下载 qemu-w64-setup-20260422.exe
点击下一步,下一步 直到安装完成。
- 配置windows的环境变量
新增 C:\Program Files\qemu
下载EFI
QEMU_EFI.fd
下载TAP驱动
tap-windows-9.24.7-I601-Win10.exe
名字改为tap0
启动
打开CMD
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| 首次安装 qemu-img create -f qcow2 my_arm_vdisk.qcow2 40G qemu-system-aarch64.exe ^ -m 4G ^ -cpu cortex-a57 ^ -smp 4 ^ -M virt ^ -bios "C:\path\to\QEMU_EFI.fd" ^ -device virtio-gpu-pci ^ -device virtio-keyboard-pci ^ -device virtio-mouse-pci ^ -display sdl ^ -drive if=none,file=my_arm_vdisk.qcow2,id=hd0 ^ -device virtio-blk-device,drive=hd0 ^ -drive if=none,file=your_system_image.iso,id=cdrom,media=cdrom ^ -device virtio-scsi-device ^ -device scsi-cd,drive=cdrom ^ -device nec-usb-xhci -device usb-kbd -device usb-tablet ^ -netdev tap,id=net0,ifname=tap0 ^ -device virtio-net-device,netdev=net0
|
安装好后正常启动
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| set "disk_img=arm64.qcow2" set "efi_file=QEMU_EFI.fd" set "tap_name=QEMU"
start "" qemu-system-aarch64w.exe -m 4G -machine type=virt -cpu neoverse-n1 ^ -smp 8,sockets=4,cores=2 ^ -bios "%efi_file%" ^ -drive "if=none,file=%disk_img%,id=hd0" ^ -device virtio-blk-device,drive=hd0 ^ -device virtio-gpu-pci ^ -object rng-builtin,id=objrng0 ^ -device virtio-rng-pci,rng=objrng0 ^ -device nec-usb-xhci -device usb-kbd -device usb-tablet ^ -netdev tap,id=net0,ifname=%tap_name% ^ -device virtio-net-pci,netdev=net0 ^ -display vnc=0.0.0.0:1
|
VNC 图形
VNC-Viewer-5.3.1-Windows-64bit.exe
使用 宿主机IP:5901 端口连接进去
Linux 的libvirt
如果是在Linux环境运行qemu,需要这个
edk2-aarch64-202011-18.oe2203sp4.noarch.rpm
aarch64.tar.gz
1 2 3 4 5 6 7 8 9 10 11
| [root@localhost ~]# rpm -ql edk2-aarch64-202011-18.oe2203sp4.noarch /usr/share/edk2 /usr/share/edk2/aarch64 /usr/share/edk2/aarch64/QEMU_EFI-pflash.raw /usr/share/edk2/aarch64/QEMU_EFI.fd /usr/share/edk2/aarch64/QEMU_VARS.fd /usr/share/edk2/aarch64/vars-template-pflash.raw /usr/share/licenses/edk2-aarch64 /usr/share/licenses/edk2-aarch64/LICENSE.openssl /usr/share/licenses/edk2-aarch64/License.txt [root@localhost ~]#
|
导入方式启动
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| [root@localhost libsdt]# cat /home/kvm/vm_arm64_dev/arm64.import #!/bin/bash
DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" echo "Working directory: $DIR" VM_NAME="arm64"
# --- 2. 检查虚拟机名称是否已存在 (核心修改) --- if virsh list --all --name | grep -qx "$VM_NAME"; then echo "错误: 虚拟机 '$VM_NAME' 已经存在。" echo "请先使用 'virsh undefine $VM_NAME --nvram' 删除旧机器,或更改脚本中的 VM_NAME。" exit 1 fi # ------------------------------------------
# 1. 定义官方固件路径 CODE_PATH="/usr/share/edk2/aarch64/QEMU_EFI-pflash.raw" VARS_PATH="/usr/share/edk2/aarch64/vars-template-pflash.raw"
# 2. 清理旧的虚拟机定义(防止名称冲突) virsh destroy $VM_NAME 2>/dev/null virsh undefine $VM_NAME --nvram 2>/dev/null
# 3. 执行安装 virt-install \ --name $VM_NAME \ --arch aarch64 \ --machine virt \ --cpu cortex-a57 \ --vcpus 4 \ --memory 4096 \ --import \ --os-variant linux2022 \ --boot loader="${CODE_PATH}",loader_type=pflash,loader_ro=yes,nvram_template="${VARS_PATH}" \ --tpm none \ --disk path="${DIR}/${VM_NAME}.qcow2",format=qcow2,bus=virtio \ --network bridge=br0,model=virtio \ --graphics vnc,listen=0.0.0.0,port=5900 \ --video virtio \ --noautoconsole \ --autostart
[root@localhost libsdt]#
|
安装当时启动
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
| [root@localhost libsdt]# cat /home/kvm/vm_uos/uos.install #!/bin/bash
DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" VM_NAME="arm64_dev" echo "Working directory: $DIR"
# 0. 定义 ISO 路径 ISO_PATH="${DIR}/uos-server-20-1060a-arm64.iso"
# 1. 定义官方固件路径 CODE_PATH="/usr/share/edk2/aarch64/QEMU_EFI-pflash.raw" VARS_PATH="/usr/share/edk2/aarch64/vars-template-pflash.raw"
# --- 2. 检查虚拟机名称是否已存在 (核心修改) --- if virsh list --all --name | grep -qx "$VM_NAME"; then echo "错误: 虚拟机 '$VM_NAME' 已经存在。" echo "请先使用 'virsh undefine $VM_NAME --nvram' 删除旧机器,或更改脚本中的 VM_NAME。" exit 1 fi # ------------------------------------------
echo "正在创建虚拟机 $VM_NAME..."
# 3. 执行安装 virt-install \ --name "$VM_NAME" \ --arch aarch64 \ --machine virt \ --cpu cortex-a57 \ --vcpus 2 \ --memory 2048 \ --rng /dev/urandom,model=virtio \ --location "${ISO_PATH}" \ --os-variant linux2022 \ --boot loader="${CODE_PATH}",loader_type=pflash,loader_ro=yes,nvram_template="${VARS_PATH}" \ --tpm none \ --disk path="${DIR}/${VM_NAME}.qcow2",format=qcow2,bus=virtio,size=40 \ --network bridge=br0,model=virtio \ --graphics vnc,listen=0.0.0.0,port=5901 \ --video vga \ --noautoconsole \ --autostart
#--video virtio \ [root@localhost libsdt]#
|