参考网址:
https://zhuanlan.zhihu.com/p/679415673
qemu-img create -f qcow2 E:\arm_kylin\Kylin.img 50G
arm64专用BIOS,用于启动 EFI (可扩展固件接口) 内核
https://releases.linaro.org/components/kernel/uefi-linaro/16.02/release/qemu64/QEMU_EFI.fd
安装 iso
qemu-system-aarch64.exe -m 8192 -cpu cortex-a72 -smp 4,cores=4,threads=1,sockets=1 -M virt -bios E:\arm_kylin\QEMU_EFI.fd -net nic -net tap,ifname=tap0 -device nec-usb-xhci -device usb-kbd -device usb-mouse -device VGA -drive if=none,file=E:\arm_kylin\Kylin-Desktop-V10-SP1-General-Release-2303-ARM64.iso,id=cdrom,media=cdrom -device virtio-scsi-device -device scsi-cd,drive=cdrom -drive if=none,file=E:\arm_kylin\Kylin.img,id=hd0 -device virtio-blk-device,drive=hd0
重新启动
qemu-system-aarch64.exe -m 8192 -cpu cortex-a72 -smp 4,cores=4,threads=1,sockets=1 -M virt -bios E:\arm_kylin\QEMU_EFI.fd -net nic -net tap,ifname=tap0 -device nec-usb-xhci -device usb-kbd -device usb-mouse -device VGA -drive if=none,id=cdrom,media=cdrom -device virtio-scsi-device -device scsi-cd,drive=cdrom -drive if=none,file=E:\arm_kylin\Kylin.img,id=hd0 -device virtio-blk-device,drive=hd0
qemu-system-aarch64.exe -m 8192 -cpu cortex-a72 -smp 4,cores=4,threads=1,sockets=1 -M virt -bios E:\arm_kylin\QEMU_EFI.fd -net nic -net tap,ifname=tap0,script=no -device nec-usb-xhci -device usb-kbd -device usb-mouse -device VGA -drive if=none,id=cdrom,media=cdrom -device virtio-scsi-device -device scsi-cd,drive=cdrom -drive if=none,file=E:\arm_kylin\Kylin.img,id=hd0 -device virtio-blk-device,drive=hd0
这个命令使用 qemu-system-aarch64.exe
启动了一个 QEMU 虚拟机,虚拟机的硬件和部分行为通过命令行参数被配置。下面是对上述命令中各个参数的详细解释:
-m 8192
:分配8192MB(即8GB)的内存给虚拟机。-cpu cortex-a72
:设置虚拟机使用的CPU类型为 ARM Cortex-A72。-smp 4,cores=4,threads=1,sockets=1
:虚拟机配置为4个CPU核心,每个核心1个线程,共1个CPU插槽。-M virt
:指定虚拟机使用的机器类型为“virt”,这是一种针对虚拟化优化的通用ARM板。-bios F:\VM\test\QEMU_EFI.fd
:设置虚拟机使用的BIOS固件文件,路径指向F:\VM\test\QEMU_EFI.fd
。-net nic
:添加一个网络接口卡到虚拟机。-net tap,ifname=tap0
:使用TAP接口配置网络,网络接口命名为tap0
。-device nec-usb-xhci
:为虚拟机添加一个 USB 3.0 控制器。-device usb-kbd
:添加一个 USB 键盘设备给虚拟机。-device usb-mouse
:添加一个 USB 鼠标设备给虚拟机。-device VGA
:添加一个标准的VGA显示适配器给虚拟机。-drive if=none,file=F:\VM\test\Kylin-Desktop-V10-SP1-General-Release-2303-ARM64.iso,id=cdrom,media=cdrom
:创建一个驱动设备,其源文件是一个CD镜像Kylin-Desktop-V10-SP1-General-Release-2303-ARM64.iso
,并将这个设备标识ID设置为cdrom
,指定媒体类型为cdrom
。-device virtio-scsi-device
:为虚拟机添加一个支持virtio的SCSI控制器,该控制器支持更高的I/O性能和更好的虚拟化集成。-device scsi-cd,drive=cdrom
:将之前创建的CD驱动设备(id为cdrom
)连接到虚拟SCSI控制器上。-drive if=none,file=F:\VM\test\Kylin-ARM64.img,id=hd0
:创建一个虚拟硬盘驱动,其源文件是Kylin-ARM64.img
,并为这个设备分配IDhd0
。-device virtio-blk-device,drive=hd0
:将虚拟硬盘(ID为hd0
)连接到虚拟机上,使用virtio块设备,这也是为了更好的性能和虚拟化优化。
综上所述,这个命令启动了一个配置了8GB内存、ARM Cortex-A72处理器、一个virt类型的机器、带有UEFI固件、网络连接、USB支持、VGA显示以及安装有Kylin操作系统的虚拟机。Kylin是为中国市场设计的一款基于Linux的操作系统,这个特定的版本是针对ARM64架构的。
powershell 提升为 管理员权限
start-process PowerShell -verb runas
配置网络
ifconfig -s eth0 static 192.168.50.128 255.255.255.0 192.168.50.1
qemu-system-aarch64.exe -m 8192 -cpu cortex-a72 -smp 4,cores=4,threads=1,sockets=1 -M virt -bios E:\arm_kylin\QEMU_EFI.fd -net nic,model=virtio -net user -device nec-usb-xhci -device usb-kbd -device usb-mouse -device VGA -drive if=none,id=cdrom,media=cdrom -device virtio-scsi-device -device scsi-cd,drive=cdrom -drive if=none,file=E:\arm_kylin\Kylin.img,id=hd0 -device virtio-blk-device,drive=hd0
参考文献:
https://www.cnblogs.com/wpcnblog/p/11517546.html#:~:text=vlan%3Dvlan%E7%BC%96%E5%8F%B7%EF%BC%8C%E5%B0%86%E7%94%A8%E6%88%B7%E6%A8%A1%E5%BC%8F%E7%BD%91%E7%BB%9C%E6%A0%88%E8%BF%9E%E6%8E%A5%E5%88%B0%E7%BC%96%E5%8F%B7%E4%B8%BAn%E7%9A%84VLAN%E4%B8%AD%EF%BC%88%E9%BB%98%E8%AE%A4%E5%80%BC%E4%B8%BA0%EF%BC%89%E3%80%82%20name%3D%E5%90%8D%E7%A7%B0%EF%BC%8C%E5%88%86%E9%85%8D%E4%B8%80%E4%B8%AA%E7%BD%91%E7%BB%9C%E5%90%8D%E7%A7%B0%EF%BC%8C%E5%8F%AF%E4%BB%A5%E7%94%A8%E6%9D%A5%E5%9C%A8QEMU%20monitor%E4%B8%AD%E8%AF%86%E5%88%AB%E8%AF%A5%E7%BD%91%E7%BB%9C%E3%80%82,net%3D%E5%9C%B0%E5%9D%80%20%E6%8E%A9%E7%A0%81%5D%EF%BC%8C%E8%AE%BE%E7%BD%AE%E5%AE%A2%E6%88%B7%E6%9C%BA%E6%89%80%E5%9C%A8%E5%AD%90%E7%BD%91%EF%BC%8C%E7%BC%BA%E7%9C%81%E5%80%BC%E6%98%AF10.0.2.0%2F24%E3%80%82%20host%3D%E5%9C%B0%E5%9D%80%EF%BC%8C%E8%AE%BE%E7%BD%AE%E5%AE%A2%E6%88%B7%E6%9C%BA%E7%9C%8B%E5%88%B0%E7%9A%84%E5%AE%BF%E4%B8%BB%E6%9C%BAIP%E5%9C%B0%E5%9D%80%EF%BC%8C%E7%BC%BA%E7%9C%81%E5%80%BC%E4%B8%BA%E5%AE%A2%E6%88%B7%E6%9C%BA%E6%89%80%E5%9C%A8%E7%BD%91%E7%BB%9C%E7%9A%84%E7%AC%AC2%E4%B8%AAIP%E5%9C%B0%E5%9D%8010.0.2.2%E3%80%82
QEMU缺省使用“-net nic-net user”参数为客户机配置网络,提供了一种用户模式( user-mode)的网络模拟。使用用户模式的客户机可以连通宿主机及外部网络。用户模式网络完全由QEMU模拟实现整个TCP/IP协议栈,并且使用这个协议栈提供一个虚拟的NAT网络。它不依赖于宿主机上的网络工具组件,如bridge-utils、tunctl、dnsmasq、iptables等,因此也不需要root用户权限。当然,用户模式网络的缺陷也是明显的:因其在QEMU内部实现所有网络协议栈,相对性能较差。
QEMU命令使用“-net user”参数配置用户模式网络,命令格式如下:
** ** qemu-kvm -net nic -net user [, opion[, option[, … ] ] ] myVM.img
用户模式的参数选项描述如下:
vlan=vlan编号,将用户模式网络栈连接到编号为n的VLAN中(默认值为0)。
name=名称,分配一个网络名称,可以用来在QEMU monitor中识别该网络。
net=地址[/掩码],设置客户机所在子网,缺省值是10.0.2.0/24。
host=地址,设置客户机看到的宿主机IP地址,缺省值为客户机所在网络的第2个IP地址10.0.2.2。
restrict=开关,如果将此选项打开(y或yes),则客户机不能与宿主机通信,也不能通过宿主机路由到外部网络。缺省设置为n或no。
hostname=名称,设置在宿主机DHCP服务器中保存的客户机主机名。
dhcpstart=地址,设置能够分配给客户机的第一个IP,QEMU内嵌的DHCP服务器有16个IP地址可供分配,缺省地址范围是10.0.2.15-10.0.2.30。
dns=地址,指定虚拟DNS的地址,其缺省值是网络中的第3个IP地址10.0.2.3,不能与“host= ”中指定的相同。
hostfwd=[tcpludp] [宿主机地址]:宿主机端口- [客户机地址]:客户机端口,将访问宿主机指定端口的TCP/UDP连接重定向到客户机端口上。该选项可以在一个命令行中可以多次重复使用
qemu-system-aarch64.exe -m 8192 -cpu cortex-a72 -smp 4,cores=4,threads=1,sockets=1 -M virt -bios E:\arm_kylin\QEMU_EFI.fd -net nic,model=virtio -net user -device nec-usb-xhci -device usb-kbd -device usb-mouse -device VGA -drive if=none,id=cdrom,media=cdrom -device virtio-scsi-device -device scsi-cd,drive=cdrom -drive if=none,file=E:\arm_kylin\Kylin.img,id=hd0 -device virtio-blk-device,drive=hd0
"C:\Program Files\qemu\qemu-system-aarch64.exe" -m 8G -cpu cortex-a72 --accel tcg,thread=multi -M virt -bios d:\soft\QEMU_EFI.fd -rtc base=localtime -display sdl -device VGA -device nec-usb-xhci -device usb-tablet -device usb-kbd -drive if=virtio,file=d:\qvm\kylin_arm64.img,id=hd0,format=raw,media=disk -net nic,model=virtio -net user
qemu-system-aarch64.exe -m 8192 -cpu cortex-a72 -smp 4,cores=4,threads=1,sockets=1 -M virt -bios D:\arm_kylin\QEMU_EFI.fd -net nic -net tap,ifname=tap0,script=no -device nec-usb-xhci -device usb-kbd -device usb-mouse -device VGA -drive if=none,id=cdrom,media=cdrom -device virtio-scsi-device -device scsi-cd,drive=cdrom -drive if=none,file=D:\arm_kylin\Kylin.img,id=hd0 -device virtio-blk-device,drive=hd0
arm,启动! pwd:[自己设置]
.\qemu-system-aarch64.exe -m 8192 -cpu cortex-a72 -smp 4,cores=4,threads=1,sockets=1 -M virt -bios D:\arm_kylin\QEMU_EFI.fd -net nic,model=virtio -net user -device nec-usb-xhci -device usb-kbd -device usb-mouse -device VGA -drive if=none,id=cdrom,media=cdrom -device virtio-scsi-device -device scsi-cd,drive=cdrom -drive if=none,file=D:\arm_kylin\Kylin.img,id=hd0 -device virtio-blk-device,drive=hd0