[toc]

qemu在windows11中安装并运行windows10

1. 准备工作

安装qemu并配置环境变量

2. 通过命令行启动无盘系统

  1. 安装tap网卡并与网卡桥接
  2. qemu使用无盘启动参数
1
qemu-system-x86_64 -m 8G -smp 4,sockets=2,cores=2 -netdev tap,id=net0,ifname=tap0,script=no,downscript=no -device e1000,netdev=net0 -vga virtio -boot n

3.命令行配置硬盘并安装windows系统

  1. 使用QEMU的qemu-img工具创建一个虚拟硬盘。打开命令提示符并运行以下命令:

    1
    qemu-img create -f qcow2 D:\virtual\windows10.img 30G
    • -f qcow2:指定虚拟硬盘的格式为QCOW2(支持快照和压缩)。
    • D:\virtual\windows10.img:指定虚拟硬盘的路径和文件名。
    • 30G:指定虚拟硬盘的大小(可以根据需要调整)。
  2. 启动QEMU并安装Windows 10

    使用以下命令启动QEMU并加载Windows 10 ISO进行安装:

    1
    qemu-system-x86_64 -hda D:\virtual\windows10.img -cdrom D:\Users\3\Downloads\tianyiyunpan\Micro10.iso -boot d -m 8G
    • -hda D:\virtual\windows10.img:指定刚刚创建的虚拟硬盘。
    • -cdrom D:\Users\3\Downloads\tianyiyunpan\Micro10.iso:指定Windows 10的ISO镜像文件路径。
    • -boot d:表示从光盘(ISO)启动。
    • -m 8G:分配 8GB内存给虚拟机(可以根据需要调整)。
  3. 启动Windows 10

    选择创建的虚拟硬盘(D:\virtual\windows10.img)进行安装。

    安装完成后,使用以下命令启动已安装的Windows 10:

    1
    qemu-system-x86_64 -hda D:\virtual\windows10.img -m  8G 
  4. 使用用户模式网络启动虚拟机,添加以下参数:

    1
    qemu-system-x86_64 -hda D:\virtual\windows10.img -m  8G  -net nic -net user
    • -net nic:创建一个虚拟网络接口。
    • -net user:设置用户模式网络。
  5. 使用桥接网络,虚拟机直接连接到物理网络可以使用桥接网络。确保已经创建了一个TAP设备,并使用以下命令启动虚拟机:

    1
    qemu-system-x86_64 -hda D:\virtual\windows10.img -m  8G  -netdev tap,id=net0,ifname=tap0 -device e1000,netdev=net0

4.创建并使用vhd或者vmdk格式的硬盘

创建vhd或者vmdk格式的硬盘

  1. 创建VHD格式的虚拟硬盘:

    1
    qemu-img create -f vpc D:\virtual\windows10.vhd 30G
    • -f vpc:指定虚拟硬盘格式为VHD。
    • D:\virtual\windows10.vhd:指定虚拟硬盘的路径和文件名。
    • 50G:指定虚拟硬盘的大小。
  2. 创建VMDK格式的虚拟硬盘:

    1
    qemu-img create -f vmdk D:\virtual\windows10.vmdk 30G
    • -f vmdk:指定虚拟硬盘格式为VMDK。
    • D:\virtual\windows10.vmdk:指定虚拟硬盘的路径和文件名。
    • 30G:指定虚拟硬盘的大小。

启动虚拟机使用VHD或VMDK格式的硬盘并安装Windows10

  1. 创建完虚拟硬盘后,可以使用QEMU启动虚拟机,指定相应的虚拟硬盘文件。例如,使用VHD格式的虚拟硬盘:

    1
    qemu-system-x86_64 -hda D:\virtual\windows10.vhd -cdrom D:\Users\3\Downloads\tianyiyunpan\Micro10.iso -boot d -m  8G  -smp 4,sockets=2,cores=2
  2. 使用VMDK格式的虚拟硬盘:

    1
    qemu-system-x86_64 -hda D:\virtual\windows10.vmdk -cdrom D:\Users\3\Downloads\tianyiyunpan\Micro10.iso -boot d -m  8G  -smp 4,sockets=2,cores=2
  3. 启动虚拟机的参数说明

  • -hda D:\virtual\windows10.vmdk:指定使用的虚拟硬盘文件(VMDK格式)。
  • -cdrom D:\Users\3\Downloads\tianyiyunpan\Micro10.iso:指定Windows 10的ISO镜像文件路径。
  • -boot d:表示从光盘(ISO)启动。
  • -m 8G:分配 8GB内存给虚拟机(可以根据需要调整)。
  • -smp 4:表示虚拟机将使用 4个虚拟 CPU(vCPU)。这意味着虚拟机可以并行处理 4 个线程。
  • sockets=2:表示将这 4 个虚拟 CPU 分配到 2 个 CPU 插槽(sockets)中。每个插槽可以容纳多个核心。
  • cores=2:表示每个插槽中有 2 个核心(cores)。因此,2 个插槽 × 2 个核心 = 4 个虚拟 CPU。

5.运行很卡试着配置显卡

  1. 2. 使用Virtio显卡

    Virtio显卡提供了更好的性能,适用于需要高性能图形的应用。要使用Virtio显卡,您可以使用以下命令:

    1
    qemu-system-x86_64 -hda D:\virtual\windows10.vmdk  -m  8G  -smp 4,sockets=2,cores=2 -vga virtio
    • -vga virtio:指定使用Virtio显卡。
  2. 使用标准VGA显卡
    如果您希望使用标准的VGA显卡,可以使用以下命令:

    1
    qemu-system-x86_64 -hda D:\virtual\windows10.vmdk  -m  8G  -smp 4,sockets=2,cores=2 -vga std
    • -vga std:指定使用标准VGA显卡。

6.分配最大显存

在QEMU中,显存的最大分配量取决于几个因素,包括所使用的显卡类型、主机的硬件资源以及QEMU的版本。以下是一些常见显卡类型的显存限制:

  1. Virtio显卡
    对于Virtio显卡,可以通过vgamem_mb参数设置显存。Virtio显卡的显存通常可以设置为最大256MB或更高,具体取决于QEMU的实现和主机的资源。
1
qemu-system-x86_64 -hda D:\virtual\windows10.vmdk -m 8G -smp 4,sockets=2,cores=2 -device qxl-vga,vgamem_mb=256
  1. 标准VGA显卡
    对于标准VGA显卡,QEMU并不提供直接设置显存的选项。标准VGA显卡的显存通常是固定的,通常为16MB或32MB,无法通过命令行参数进行调整。

  2. 其他因素
    主机资源:显存的分配也受到主机系统可用内存的限制。如果主机内存不足,可能无法分配较大的显存。
    QEMU版本:不同版本的QEMU可能对显存的支持和限制有所不同。确保使用最新版本的QEMU以获得最佳性能和功能。
    总结
    在QEMU中,可以为QXL和Virtio显卡分配显存,通常最大为256MB或更高。具体的最大值可能会因QEMU版本和主机资源而异。通过合理配置显存,可以优化虚拟机的图形性能。

7.启动虚拟机并使用客户端连接虚拟机桌面

使用spice协议

  1. 下载支持spice协议的客户端virt-viewer

    virt-viewer

    搜到的地址

  2. 使用命令运行qemu虚拟机,添加-spice port=5900,disable-ticketing=on

    1
    qemu-system-x86_64 -hda D:\virtual\windows10.vmdk -m 8G -smp 4,sockets=2,cores=2 -netdev tap,id=net0,ifname=tap0,script=no,downscript=no -device e1000,netdev=net0 -device qxl-vga,vgamem_mb=256 -spice port=5900,disable-ticketing=on
  3. 运行remote view并输入地址连接

1
spice://localhost:5900

使用vnc协议

  1. 下载RealVNC Viewer

  2. 运行时添加选项-vnc :0

    1
    qemu-system-x86_64 -hda D:\virtual\windows10.vmdk -m 8G -smp 4,sockets=2,cores=2 -netdev tap,id=net0,ifname=tap0,script=no,downscript=no -device e1000,netdev=net0 -device qxl-vga,vgamem_mb=256 -vnc :0
  3. 运行RealVNC Viewer并连接

    1
    2
    #地址与端口
    127.0.0.1:5900

8.boot启动选项

在 QEMU 中,-boot 参数用于指定虚拟机的启动顺序和启动设备。以下是一些常用的 -boot 参数及其含义:

-boot d:从光盘启动(CD-ROM)。
-boot c:从硬盘启动(通常是第一个硬盘)。
-boot n:从网络启动(PXE)。
-boot a:自动选择启动设备,通常是根据启动顺序选择第一个可用的设备。
-boot f:从指定的设备启动,f 后面可以跟设备字母(如 f0、f1 等),表示从特定的设备启动。
此外,-boot 参数还可以与其他选项结合使用,例如:

-boot order=dc:指定启动顺序,首先从光盘启动,然后从硬盘启动。
-boot menu=on:启用启动菜单,允许用户在启动时选择设备。

9.开启uefi引导

1
-pflash .\edk2-x86_64-code.fd

UEFI开发学习14 – 使用QEMU

10.启动whpx加速(运行windows10没成功)

  1. 运行命令查看加速方式

    1
    qemu-system-x86_64 -accel help

    结果如下所示:

    1
    2
    3
    4
    C:\Users\3>qemu-system-x86_64 -accel help
    Accelerators supported in QEMU binary:
    tcg
    whpx
  2. 在控制面板中的windows功能里打开`Windows虚拟机监控程序平台。

  3. 重启电脑。

  4. 运行qemu并添加启动参数-accel whpx,kernel-irqchip=off

    1
    qemu-system-x86_64 -m 8G -smp 4,sockets=2,cores=2 -netdev tap,id=net0,ifname=tap0,script=no,downscript=no -device e1000,netdev=net0 -vga virtio -boot n -accel whpx,kernel-irqchip=off
  5. whpx加速不支持uefi引导。

11.从U盘启动

  1. 确定驱动器的名字,此时测试环境为PhysicalDrive2。
  2. 添加参数
1
qemu-system-x86_64 -hda D:\virtual\qemu\windows10.img -m 8G -smp 4,sockets=2,cores=2 -netdev tap,id=net0,ifname=tap0,script=no,downscript=no -device e1000,netdev=net0 -vga virtio -drive file=\\.\PhysicalDrive2,format=raw -boot d

完整启动命令

1. UEFI引导启动

  1. 使用vmdk格式硬盘-hda D:\virtual\Mirco11\Mirco11.vmdk
  2. 8G运行内存-m 8G
  3. 4个cpu核心-smp 4,sockets=2,cores=2
  4. 设置桥接网络-netdev tap,id=net0,ifname=tap0,script=no,downscript=no
  5. 将网卡设为e1000-device e1000,netdev=net0
  6. 使用virtio虚拟显卡--vga virtio
  7. 开启远程桌面-spice port=5900,disable-ticketing=on
  8. uefi引导-drive file="D:\Program Files\qemu\share\edk2-x86_64-code.fd",format=raw,if=pflash
  9. 从硬盘启动-boot c
1
qemu-system-x86_64 -hda D:\virtual\Mirco11\Mirco11.vmdk -m 8G -smp 4,sockets=2,cores=2 -netdev tap,id=net0,ifname=tap0,script=no,downscript=no -device e1000,netdev=net0 -vga virtio -spice port=5900,disable-ticketing=on -drive file="D:\Program Files\qemu\share\edk2-x86_64-code.fd",format=raw,if=pflash -boot c

2.网络启动BIOS引导并开启whpx加速

1
qemu-system-x86_64 -m 8G -smp 4,sockets=2,cores=2 -netdev tap,id=net0,ifname=tap0,script=no,downscript=no -device e1000,netdev=net0 -vga virtio -boot n -accel whpx,kernel-irqchip=off

参考资料