From f728cf7a0ffcfb91d215c187f0ef42dbd74069ec Mon Sep 17 00:00:00 2001 From: Lukas Date: Sun, 12 Dec 2021 18:27:19 +0100 Subject: [PATCH] create new vm models --- post/create-system-vms.sh | 38 ++++++++++ post/create-user-vms.sh | 147 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 185 insertions(+) create mode 100644 post/create-system-vms.sh create mode 100644 post/create-user-vms.sh diff --git a/post/create-system-vms.sh b/post/create-system-vms.sh new file mode 100644 index 0000000..8453328 --- /dev/null +++ b/post/create-system-vms.sh @@ -0,0 +1,38 @@ +#!/bin/bash + +# This script can be run as a root user. + +# Create then shutdown a diskless virtual machine with qemu-system, without any emulated display, using virt-install. +# It is designed for vfio-pci (pci-passthrough) in mind, and will work any guest systems that has drivers for the passthroughed GPU as well as paravirtualized drivers (Windows, or Linux). +# The ISO that contains paravirtualized drivers for Windows is attached to this virtual machine. The user has to manually add the Windows ISO. + +virt-install \ + --connect qemu:///system \ + --metadata description="Works with any GPUs that is binded to vfio-pci. A GPU needs to be manually attached to the VM. As it uses QEMU system, passthrough will work" \ + --os-variant detect=off \ + --virt-type kvm \ + --arch x86_64 \ + --machine q35 \ + --name system-windows-vfio-pci \ + --boot uefi \ + --cpu host-model,topology.sockets=1,topology.cores=1,topology.threads=1 \ + --vcpus 1 \ + --memory 2048 \ + --video none \ + --graphics none \ + --channel unix,target.type=virtio,target.name=org.qemu.guest_agent.0 \ + --autoconsole none \ + --console pty,target.type=virtio \ + --sound none \ + --network type=default,model=virtio \ + --controller type=virtio-serial \ + --controller type=usb,model=none \ + --controller type=scsi,model=virtio-scsi \ + --input type=keyboard,bus=virtio \ + --input type=tablet,bus=virtio \ + --rng /dev/urandom,model=virtio \ + --cdrom /usr/share/virtio-win/virtio-win-0.1.171.iso \ + --disk none \ + --install no_install=yes + +virsh destroy system-windows-vfio-pci \ No newline at end of file diff --git a/post/create-user-vms.sh b/post/create-user-vms.sh new file mode 100644 index 0000000..b4d08b2 --- /dev/null +++ b/post/create-user-vms.sh @@ -0,0 +1,147 @@ +#!/bin/bash + +# This script can be run as a normal user. +# Make sure qemu-session is available as an URI in virt-manager running the following in your terminal: +# gsettings set org.virt-manager.virt-manager.connections uris "['qemu:///system', 'qemu:///session']" +# gsettings set org.virt-manager.virt-manager.connections autoconnect "['qemu:///system', 'qemu:///session']" + + +# Create then shutdown a diskless virtual machine with qemu-session, a spice display without 3D acceleration, using virt-install. +# Works with any GPUs on the host but does not provide 3D acceleration. Does expect an EFI-based Linux guest. +# No ISO is attached to this virtual machine. The user have to manually add one. + +virt-install \ + --connect qemu:///session \ + --metadata description="Works with any GPUs on the host but does not provide 3D acceleration. Does expect an EFI-based Linux guest. As it uses QEMU session, passthrough wont work out of the box" \ + --os-variant detect=off \ + --virt-type kvm \ + --arch x86_64 \ + --machine q35 \ + --name user-linux-spice \ + --boot uefi \ + --cpu host-model,topology.sockets=1,topology.cores=1,topology.threads=1 \ + --vcpus 1 \ + --memory 2048 \ + --video virtio \ + --graphics spice,listen=none \ + --channel spicevmc \ + --channel unix,target.type=virtio,target.name=org.qemu.guest_agent.0 \ + --autoconsole none \ + --console pty,target.type=virtio \ + --sound none \ + --network type=user,model=virtio \ + --controller type=virtio-serial \ + --controller type=usb,model=none \ + --controller type=scsi,model=virtio-scsi \ + --input type=keyboard,bus=virtio \ + --input type=tablet,bus=virtio \ + --rng /dev/urandom,model=virtio \ + --disk none \ + --install no_install=yes + +virsh destroy user-linux-spice + +# Create then shutdown a diskless virtual machine with qemu-session, spice and opengl enabled, using virt-install. +# Spice with OpenGL performs better than egl-headless. +# Works with AMD and Intel GPUs on the host and does expect an EFI-based Linux guest. +# No ISO is attached to this virtual machine. The user have to manually add one. + +virt-install \ + --connect qemu:///session \ + --metadata description="Spice with OpenGL enabled performs better than egl-headless with OpenGL enabled. Works with AMD and Intel GPUs on the host and does expect an EFI-based Linux guest. As it uses QEMU session, passthrough wont work out of the box" \ + --os-variant detect=off \ + --virt-type kvm \ + --arch x86_64 \ + --machine q35 \ + --name user-linux-spice-gl \ + --boot uefi \ + --cpu host-model,topology.sockets=1,topology.cores=1,topology.threads=1 \ + --vcpus 1 \ + --memory 2048 \ + --video virtio \ + --graphics spice,gl.enable=yes,listen=none \ + --channel spicevmc \ + --channel unix,target.type=virtio,target.name=org.qemu.guest_agent.0 \ + --autoconsole none \ + --console pty,target.type=virtio \ + --sound none \ + --network type=user,model=virtio \ + --controller type=virtio-serial \ + --controller type=usb,model=none \ + --controller type=scsi,model=virtio-scsi \ + --input type=keyboard,bus=virtio \ + --input type=tablet,bus=virtio \ + --rng /dev/urandom,model=virtio \ + --disk none \ + --install no_install=yes + +virsh destroy user-linux-spice-gl + +# Create then shutdown a diskless virtual machine with qemu-sesssion, egl-headless and opengl enabled, using virt-install. +# Works with all GPUs on the host including Nvidia's and does expect an EFI-based Linux guest. +# No ISO is attached to this virtual machine. The user have to manually add one. + +virt-install \ + --connect qemu:///session \ + --metadata description="Works with all GPUs on the host including Nvidia and does expect an EFI-based Linux guest. As it uses QEMU session, passthrough wont work out of the box" \ + --os-variant detect=off \ + --virt-type kvm \ + --arch x86_64 \ + --machine q35 \ + --name user-linux-egl-headless-gl \ + --boot uefi \ + --cpu host-model,topology.sockets=1,topology.cores=1,topology.threads=1 \ + --vcpus 1 \ + --memory 2048 \ + --video virtio \ + --graphics spice,listen=none \ + --graphics egl-headless,gl.enable=yes \ + --channel spicevmc \ + --channel unix,target.type=virtio,target.name=org.qemu.guest_agent.0 \ + --autoconsole none \ + --console pty,target.type=virtio \ + --sound none \ + --network type=user,model=virtio \ + --controller type=virtio-serial \ + --controller type=usb,model=none \ + --controller type=scsi,model=virtio-scsi \ + --input type=keyboard,bus=virtio \ + --input type=tablet,bus=virtio \ + --rng /dev/urandom,model=virtio \ + --disk none \ + --install no_install=yes + +virsh destroy user-linux-egl-headless-gl + +# Create then shutdown a diskless virtual machine with qemu-sesssion, SDL and OpenGL enabled, using virt-install. +# Should work with all GPUs on the host including Nvidia's and does expect an EFI-based Linux guest. +# No ISO is attached to this virtual machine. The user have to manually add one. + +virt-install \ + --connect qemu:///session \ + --metadata description="SDL with OpenGL enabled performs better than egl-headless or Spice with OpenGL enabled. Should work with most GPUs. As it uses QEMU session, passthrough wont work out of the box" \ + --os-variant detect=off \ + --virt-type kvm \ + --arch x86_64 \ + --machine q35 \ + --name linux-sdl-gl \ + --boot uefi \ + --cpu host-model,topology.sockets=1,topology.cores=1,topology.threads=1 \ + --vcpus 1 \ + --memory 2048 \ + --video virtio \ + --graphics sdl \ + --autoconsole none \ + --console pty,target.type=virtio \ + --sound none \ + --network type=user,model=virtio \ + --controller type=virtio-serial \ + --controller type=usb,model=none \ + --controller type=scsi,model=virtio-scsi \ + --input type=keyboard,bus=virtio \ + --input type=tablet,bus=virtio \ + --rng /dev/urandom,model=virtio \ + --disk none \ + --install no_install=yes + +virsh destroy user-linux-sdl-gl \ No newline at end of file