Bas*_*lde 5 bash scripts virtualization qemu kvm-virtualization
我使用以下脚本(在网上找到)在我的 ubuntu 电脑上制作了一个 Windows 虚拟机。
#!/bin/bash
configfile=/etc/vfio-pci1.cfg
vfiobind() {
dev="$1"
vendor=$(cat /sys/bus/pci/devices/$dev/vendor)
device=$(cat /sys/bus/pci/devices/$dev/device)
if [ -e /sys/bus/pci/devices/$dev/driver ]; then
echo $dev > /sys/bus/pci/devices/$dev/driver/unbind
fi
echo $vendor $device > /sys/bus/pci/drivers/vfio-pci/new_id
}
modprobe vfio-pci
cat $configfile | while read line;do
echo $line | grep ^# >/dev/null 2>&1 && continue
vfiobind $line
done
sudo qemu-system-x86_64 -enable-kvm -M q35 -m 6144 -cpu host \
-smp 4,sockets=1,cores=4,threads=4 \
-bios /usr/share/qemu/bios.bin -vga none \
-device ioh3420,bus=pcie.0,addr=1c.0,multifunction=on,port=1,chassis=1,id=root.1 \
-device vfio-pci,host=02:00.0,bus=root.1,addr=00.0,multifunction=on,x-vga=on \
-device vfio-pci,host=02:00.1,bus=root.1,addr=00.1 \
-device virtio-scsi-pci,id=scs \
-drive file=/home/bas/windows7.img,id=disk,format=raw -device scsi-hd,bus=virtio.0,drive=disk \
-drive file=/home/bas/Downloads/Windows7Pro.iso,id=isocd -device ide-cd,bus=virtio.1,drive=isocd \
-hda /dev/sdd
-boot menu=on
exit 0
Run Code Online (Sandbox Code Playgroud)
vfio-pci1.cfg 文件仅包含视频卡和 USB 设备(键盘和鼠标)的 pci 地址。该脚本将我的一张显卡传递到虚拟机。我将同时运行其中 2 个虚拟机,这样我就可以在同一台计算机上与朋友一起玩游戏,因此无法选择双启动。
如果您启动虚拟机,它将使用实际的视频卡进行显示。
虚拟机启动并运行良好,我只想向其添加物理驱动器,以便我可以将仅包含游戏(无系统磁盘)的卷共享给虚拟机,但我不知道如何执行此操作。
根据文档: http://wiki.qemu.org/download/qemu-doc.html#host_005fdrives
你应该能够做到
-hda /dev/sdX
但是,由于这是 Windows,您基本上只需将硬盘驱动器从计算机中取出并将其插入另一台计算机即可。所以它会去寻找新的硬件等。在此过程中您可能会严重弄乱您的 Windows 磁盘。这可能不是一个好主意...我建议您创建 Windows 磁盘的快照并使用它。
您还应该对其他块设备使用bus=virtio,速度要快得多。