安装QEMU工具

首先需要在 windows 操作系统里安装 qemu,qemu 官网地址: https://www.qemu.org
选择 windows 版本下载,https://qemu.weilnetz.de/w64/2022/

创建虚拟硬盘

选择 qmeu 的安装⽬录,这⾥我将 qemu 安装到了 D 盘,执⾏下⾯的命令⾸先创建⼀块虚拟硬盘,将虚拟硬盘创建到⾃⼰指定的⽬录,⼤⼩ 100G
选择 qmeu 的安装⽬录,这⾥我将 qemu 安装到了 D 盘,执⾏下⾯的命令⾸先创建⼀块虚拟硬盘,将虚拟硬盘创建到⾃⼰指定的⽬录,⼤⼩ 100G

C:\Users\rainwu>D:\qemu\qemu-img.exe create D:\kylin10sp1\kylin10sp1arm64.img 100G

启动部署(基于ISO安装)

使⽤ qemu-system-aarch64 命令启动 arm 虚拟机

C:\Users\rainwu>D:\qemu\qemu-system-aarch64.exe -m 8196 -cpu cortex-a72 -smp 4,cores=4,threads=1,sockets=1 -M virt -bios D:\QEMU_EFI.fd -net nic,model=virtio -net user -device nec-usb-xhci -device usb-kbd -device usb-mouse -device VGA -drive if=none,file=D:\kylin10sp1\Kylin-Server-10-SP1-Release-Build20-20210518-arm64.iso,id=cdrom,media=cdrom -device virtio-scsi-device -device scsi-cd,drive=cdrom -drive if=none,file=D:\kylin10sp1\kylin10sp1arm64.img,id=hd0 -device virtio-blk-device,drive=hd0
 
## -m 指定虚拟机的内存大小,这里为虚拟机分配 8G 内存
## -cpu 指定 CPU 的类型,这里选择的 CPU 类型为 cortex-a72,4Core 4线程
## -M 模拟服务器类型,这里选择 virt,会自动选择最高版本的 virt
## -bios 指定 bios bin 文件所在的目录,arm 系统启动需采用 UEFI 模式,所以需要下载 QEMU_EFI.fd 文件,该文件作为附件放在文末
## -net 添加网络设备,这里添加一块 virtio 的虚拟网卡,并将该网卡连接本机用户网络,连接 user 网络后方便在线安装需要的软件包
## -device 添加设备
## -drive 添加驱动器,这里分别添加 cdrom 驱动器和硬盘驱动器,cdrom 驱动器需要指定 iso 文件路径,硬盘驱动器需要指定上一步创建的虚拟硬盘文件路径
D:\qemu\qemu-system-aarch64.exe -m 8196 -cpu cortex-a72 -smp 4,cores=4,threads=1,sockets=1 -M virt -bios D:\QEMU_EFI.fd -net nic,model=virtio -net user -device nec-usb-xhci -device usb-kbd -device usb-mouse -device VGA -drive if=none,file=D:\tencentos\TencentOS-Server-3.1-aarch64-minimal-2209.2.iso,id=cdrom,media=cdrom -device virtio-scsi-device -device scsi-cd,drive=cdrom -drive if=none,file=D:\tencentos\tencentosarm.img,id=hd0 -device virtio-blk-device,drive=hd0

D:\qemu\qemu-system-aarch64.exe -m 8196 -cpu cortex-a72 -smp 8,cores=8,threads=1,sockets=1 -M virt -bios D:\QEMU_EFI.fd -device nec-usb-xhci -device usb-kbd -device usb-mouse -device VGA -device virtio-scsi-device -drive if=none,file=D:\tencentos\tencentosarm.img,id=hd0 -device virtio-blk-device,drive=hd0 -net nic,model=virtio -net user 

D:\qemu\qemu-img.exe convert -c -O qcow2 D:\tencentos\tencentosarm.img D:\tencentos\tencentos3arm.img


## ubuntu linux 命令
## 基于镜像引导虚拟机
qemu-system-aarch64 -m 8196 -cpu cortex-a72 -smp 4,cores=4,threads=1,sockets=1 -M virt -bios /home/yop/QEMU_EFI.fd -net nic,model=virtio -net user -device nec-usb-xhci -device usb-kbd -device usb-mouse -device VGA -drive if=none,file=/home/yop/TencentOS-Server-3.1-aarch64-minimal-2209.2.iso,id=cdrom,media=cdrom -device virtio-scsi-device -device scsi-cd,drive=cdrom -drive if=none,file=/home/yop/tencentos3arm.img,id=hd0 -device virtio-blk-device,drive=hd0
## 启动虚拟机
qemu-system-aarch64 -m 8196 -cpu cortex-a72 -smp 8,cores=8,threads=1,sockets=1 -M virt -bios /home/yop/QEMU_EFI.fd -device nec-usb-xhci -device usb-kbd -device usb-mouse -device VGA -device virtio-scsi-device -drive if=none,file=/home/yop/tencentos3arm.img,id=hd0 -device virtio-blk-device,drive=hd0 -net nic,model=virtio -net user

命令执行之后,会弹出系统安装窗口:

 QEMU启动窗口.PNG

因为是 x86 模拟的 arm 指令集,安装过程会比较慢,但基本可操作,耐心等待。

UEFI引导文件附件下载地址:QEMU_EFI.fd

启动(安装系统后启动)

上一步通过 iso 镜像安装完操作系统之后,如果执行了关机,想直接从硬盘启动进入系统,可以执行下面命令:

C:\Users\rainwu>D:\qemu\qemu-system-aarch64.exe -m 8196 -cpu cortex-a72 -smp 8,cores=8,threads=1,sockets=1 -M virt -bios D:\QEMU_EFI.fd -device nec-usb-xhci -device usb-kbd -device usb-mouse -device VGA -device virtio-scsi-device -drive if=none,file=D:\kylin10sp1\kylin10sp1arm64.img,id=hd0 -device virtio-blk-device,drive=hd0 -net nic,model=virtio -net user  
 
## -m 指定虚拟机的内存大小,这里为虚拟机分配 8G 内存
## -cpu 指定 CPU 的类型,这里选择的 CPU 类型为 cortex-a72,4Core 4线程
## -M 模拟服务器类型,这里选择 virt,会自动选择最高版本的 virt
## -bios 指定 bios bin 文件所在的目录,arm 系统启动需采用 UEFI 模式,所以需要下载 QEMU_EFI.fd 文件,该文件作为附件放在文末
## -net 添加网络设备,这里添加一块 virtio 的虚拟网卡,并将该网卡连接本机用户网络,连接 user 网络后方便在线安装需要的软件包
## -device 添加设备
## -drive 添加驱动器,这里分别添加 cdrom 驱动器和硬盘驱动器,cdrom 驱动器需要指定 iso 文件路径,硬盘驱动器需要指定上一步创建的虚拟硬盘文件路径

压缩镜像

执行如下操作,减少镜像文件占用的空间

C:\Users\rainwu>D:\qemu\qemu-img.exe convert -c -O qcow2 D:\kylin10sp1\kylin10sp1arm64.img D:\kylin10sp1\kylin10sp1arm64.img

RAW格式和QCOW2格式介绍

RAQ格式介绍

"raw" 镜像格式是最最简单的,并且是被 KVM 和 Xen 原生支持的格式,你 可以想象裸格式镜像和块设备文件是二进制位相当的,就好像从块设备拷 贝过来的,比方说,使用dd 命令将 /dev/sda 内容拷贝到一个文件。

raw唯一的缺点在于,ls看起来很大,在scp的时候,这会消耗很多的网络IO,而tar这么大的文件,也是很耗时间跟CPU的,一个解决方法是,把raw转换成qcow2的格式,对空间压缩就很大了。而且速度很快。转换命令如下:

qemu-img convert -O qcow2 disk.raw disk.qcow2
qemu-img convert -O raw disk.qcow2 disk.raw

这样转换所消耗的时间远比tar.gz小。

QCOW2格式介绍

qcow2 (QEMU 写时复制版本2)格式通常是KVM使用,相比裸格式,它有额外的特性
例如:

  • 使用稀疏文件呈现方式,因此镜像尺寸更小。
  • 支持快照。

因为qcow2 镜像是稀疏的,因此,qcow2镜像通常比裸格式镜像小,更小的 文件意味着上传更快,因此通常转换裸格式镜像到qcow2格式上传比直接 上传裸格式镜像文件更快。
注意:稀疏文件(英语:sparse file)是一种计算机文件,它能尝试在文件内容大多为空时更有效率地使用文件系统的空间。它的原理是以简短的信息(元数据)表示空数据块,而不是在在磁盘上占用实际空间来存储空数据块。只有真实(非空)的数据块会按原样写入磁盘。