qemu-kvm使用笔记

2023-10-06

准备工作

忽略MSRS,参见: Certain Windows games/applications crashing/causing a bluescreen - ArchLinux Wiki

运行:

sudo modprobe kvm; echo 1 | sudo tee /sys/module/kvm/parameters/ignore_msrs

同时在/etc/modprobe.d/kvm.conf中加入:

options kvm ignore_msrs=1

权限配置:

sudo usermod -aG kvm $(whoami)
sudo usermod -aG libvirt $(whoami)
sudo usermod -aG input $(whoami)

创建虚拟机

首先创建磁盘镜像:

qemu-img create -f qcow2 os.qcow2 256G

然后准备好安装盘镜像,例如Windows 10或者Ubuntu。这里假设安装盘是install.iso。然后创建启动脚本start.sh:

#!/bin/bash

chipset="type=q35,kernel_irqchip=on,mem-merge=on"
vcpu="host"
hyper="kvm,thread=multi"
CPU_SOCKETS="1"
CPU_CORES="2"
CPU_THREADS="2"
MEM=4096

qemu-system-x86_64 \
    -enable-kvm \
    -m "${MEM}" \
    -cpu Penryn,kvm=on,vendor=GenuineIntel,+invtsc,vmware-cpuid-freq=on,+ssse3,+sse4.2,+popcnt,+avx,+aes,+xsave,+xsaveopt,check \
    -machine ${chipset} \
    -cpu ${vcpu} \
    -device ich9-ahci,id=sata \
    -smp "$CPU_THREADS",cores="$CPU_CORES",sockets="$CPU_SOCKETS" \
    -drive id=HDD,if=none,file="./os.qcow2",format=qcow2 \
    -device ide-hd,bus=sata.3,drive=HDD \
    -netdev user,id=net0,hostfwd=tcp::8022-:22 \
    -device e1000-82545em,netdev=net0,id=net0,mac=52:54:00:c9:18:27 \ # 软NAT方式联网,22端口映射到host的8022
    -usb  \
    -device usb-tablet \ # 支持鼠标无缝切换
    -device qemu-xhci,id=xhci \ # 支持全速USB设备
    -vga virtio \
    -vnc :0 \ # VNC监听5900端口
    -cdrom ./install.iso \ # 启动盘
    #-usb -device usb-host,hostbus=1,hostaddr=4 \

完成安装之后就可以把cdrom那一行注释掉。

连接USB外接设备

用lsusb查询端口的总线号和设备号,然后用最后一行连进虚拟机,此时需要用sudo权限运行。

音频的配置我没有成功,不过用USB外接声卡然后连通USB是可以的。



Email: i (at) mistivia (dot) com