kvm

qemu/kvm installation script
git clone https://git.awy.one/kvm.git
Log | Files | Refs | README | LICENSE

commit be0e3e2609065c8ff0d6dc37c55f3de715beba93
parent f150b4eafd09743dcc642ac053336412199fc444
Author: awy <awy@awy.one>
Date:   Thu, 10 Apr 2025 13:23:23 +0300

init agnostic

Diffstat:
DHooks/isocpurevert.sh | 3---
DHooks/isolstart.sh | 3---
DHooks/kvm.conf | 2--
DHooks/revert.sh | 29-----------------------------
DHooks/start.sh | 28----------------------------
Mgpu_pass.sh | 113++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-----
6 files changed, 106 insertions(+), 72 deletions(-)

diff --git a/Hooks/isocpurevert.sh b/Hooks/isocpurevert.sh @@ -1,3 +0,0 @@ -systemctl set-property --runtime -- user.slice AllowedCPUs=0-11 -systemctl set-property --runtime -- system.slice AllowedCPUs=0-11 -systemctl set-property --runtime -- init.scope AllowedCPUs=0-11 diff --git a/Hooks/isolstart.sh b/Hooks/isolstart.sh @@ -1,3 +0,0 @@ -systemctl set-property --runtime -- user.slice AllowedCPUs=0,6 -systemctl set-property --runtime -- system.slice AllowedCPUs=0,6 -systemctl set-property --runtime -- init.scope AllowedCPUs=0,6 diff --git a/Hooks/kvm.conf b/Hooks/kvm.conf @@ -1,2 +0,0 @@ -VIRSH_GPU_VIDEO=pci_0000_01_00_0 -VIRSH_GPU_AUDIO=pci_0000_01_00_1 diff --git a/Hooks/revert.sh b/Hooks/revert.sh @@ -1,29 +0,0 @@ -#!/bin/bash -set -x -source "/etc/libvirt/hooks/kvm.conf" - -modprobe -r vfio_pci -modprobe -r vfio_iommu_type1 -modprobe -r vfio - -virsh nodedev-reattach $VIRSH_GPU_VIDEO -virsh nodedev-reattach $VIRSH_GPU_AUDIO - -echo 1 > /sys/class/vtconsole/vtcon0/bind -echo 0 > /sys/class/vtconsole/vtcon1/bind - -nvidia-xconfig --query-gpu-info > /dev/null 2>&1 - -echo "efi-framebuffer.0" > /sys/bus/platform/drivers/efi-framebuffer/bind - -modprobe nvidia_drm -modprobe nvidia_modeset -modprobe drm_kms_helper -modprobe nvidia -modprobe drm -modprobe nvidia_uvm - -#systemctl start sddm.service - -#echo 0000:00:14.0 > /sys/bus/pci/drivers/vfio-pci/unbind -#echo 0000:00:14.0 > /sys/bus/pci/drivers/xhci_hcd/bind diff --git a/Hooks/start.sh b/Hooks/start.sh @@ -1,28 +0,0 @@ -#!/bin/bash -set -x - -source "/etc/libvirt/hooks/kvm.conf" - -#systemctl stop sddm.service -killall Hyprland - -echo 0 > /sys/class/vtconsole/vtcon0/bind -echo 0 > /sys/class/vtconsole/vtcon1/bind -echo efi-framebuffer.0 > /sys/bus/platform/drivers/efi-framebuffer/unbind -sleep 10 -modprobe -r nvidia_drm -modprobe -r nvidia_modeset -modprobe -r drm_kms_helper -modprobe -r nvidia -modprobe -r i2c_nvidia_gpu -modprobe -r drm -modprobe -r nvidia_uvm - -virsh nodedev-detach $VIRSH_GPU_VIDEO -virsh nodedev-detach $VIRSH_GPU_AUDIO - -modprobe vfio -modprobe vfio_pci -modprobe vfio_iommu_type1 - -#./usr/share/UnbindUSB/vfio-usb.sh 0000:00:14.0 diff --git a/gpu_pass.sh b/gpu_pass.sh @@ -16,7 +16,8 @@ sudo -u "$PERMUSER" mkdir -p /home/"$PERMUSER"/.local/share/vgabios sudo -u "$PERMUSER" cp "$WRKDIR"/Hooks/patch.rom /home/"$PERMUSER"/.local/share/vgabios pacman -Sy --noconfirm -pacman -S qemu-desktop libvirt libvirt-dinit edk2-ovmf virt-manager dnsmasq wget --noconfirm +pacman -S qemu-desktop libvirt edk2-ovmf virt-manager dnsmasq wget --noconfirm + mkdir /etc/libvirt/hooks @@ -31,12 +32,110 @@ chmod +x /etc/libvirt/hooks/qemu mkdir -p /etc/libvirt/hooks/qemu.d/win10-hidden-pt/prepare/begin mkdir -p /etc/libvirt/hooks/qemu.d/win10-hidden-pt/release/end -cp "$WRKDIR"/Hooks/start.sh /etc/libvirt/hooks/qemu.d/win10-hidden-pt/prepare/begin/ -#sudo cp Hooks/isolstart.sh /etc/libvirt/hooks/qemu.d/win10/prepare/begin/ -cp "$WRKDIR"/Hooks/revert.sh /etc/libvirt/hooks/qemu.d/win10-hidden-pt/release/end/ -#sudo cp Hooks/isocpurevert.sh /etc/libvirt/hooks/qemu.d/win10/release/end/ -cp "$WRKDIR"/Hooks/kvm.conf /etc/libvirt/hooks/ +cat <<EOL >> /etc/libvirt/hooks/qemu.d/win10-hidden-pt/prepare/begin/start.sh +#!/bin/bash +set -x + +source "/etc/libvirt/hooks/kvm.conf" + +#systemctl stop sddm.service +killall Hyprland + +echo 0 > /sys/class/vtconsole/vtcon0/bind +echo 0 > /sys/class/vtconsole/vtcon1/bind +echo efi-framebuffer.0 > /sys/bus/platform/drivers/efi-framebuffer/unbind +sleep 10 +modprobe -r nvidia_drm +modprobe -r nvidia_modeset +modprobe -r drm_kms_helper +modprobe -r nvidia +modprobe -r i2c_nvidia_gpu +modprobe -r drm +modprobe -r nvidia_uvm + +virsh nodedev-detach $VIRSH_GPU_VIDEO +virsh nodedev-detach $VIRSH_GPU_AUDIO + +modprobe vfio +modprobe vfio_pci +modprobe vfio_iommu_type1 + +#./usr/share/UnbindUSB/vfio-usb.sh 0000:00:14.0 +EOL + +cat <<EOL >> /etc/libvirt/hooks/qemu.d/win10-hidden-pt/release/end/revert.sh +#!/bin/bash +set -x +source "/etc/libvirt/hooks/kvm.conf" + +modprobe -r vfio_pci +modprobe -r vfio_iommu_type1 +modprobe -r vfio + +virsh nodedev-reattach $VIRSH_GPU_VIDEO +virsh nodedev-reattach $VIRSH_GPU_AUDIO + +echo 1 > /sys/class/vtconsole/vtcon0/bind +echo 0 > /sys/class/vtconsole/vtcon1/bind + +nvidia-xconfig --query-gpu-info > /dev/null 2>&1 + +echo "efi-framebuffer.0" > /sys/bus/platform/drivers/efi-framebuffer/bind + +modprobe nvidia_drm +modprobe nvidia_modeset +modprobe drm_kms_helper +modprobe nvidia +modprobe drm +modprobe nvidia_uvm + +#systemctl start sddm.service + +#echo 0000:00:14.0 > /sys/bus/pci/drivers/vfio-pci/unbind +#echo 0000:00:14.0 > /sys/bus/pci/drivers/xhci_hcd/bind +EOL + +chmod +X /etc/libvirt/hooks/qemu.d/win10-hidden-pt/prepare/begin/start.sh +chmod +X /etc/libvirt/hooks/qemu.d/win10-hidden-pt/release/end/revert.sh + +case "$(readlink -f /sbin/init)" in + *systemd*) +cat <<EOL >> /etc/libvirt/hooks/qemu.d/win10-hidden-pt/prepare/begin/cpuisolation.sh +#!/bin/sh +systemctl set-property --runtime -- user.slice AllowedCPUs=0,6 +systemctl set-property --runtime -- system.slice AllowedCPUs=0,6 +systemctl set-property --runtime -- init.scope AllowedCPUs=0,6 +EOL +cat <<EOL >> /etc/libvirt/hooks/qemu.d/win10-hidden-pt/release/end/cpurevert.sh +#!/bin/sh +systemctl set-property --runtime -- user.slice AllowedCPUs=0-11 +systemctl set-property --runtime -- system.slice AllowedCPUs=0-11 +systemctl set-property --runtime -- init.scope AllowedCPUs=0-11 +EOL + ;; + *dinit*) + pacman --noconfirm -S libvirt-dinit +cat <<EOL >> /etc/libvirt/hooks/qemu.d/win10-hidden-pt/prepare/begin/cpuisolation.sh +#!/bin/sh +echo "+cpuset" > /sys/fs/cgroup/cgroup.subtree_control +echo "0,6" > /sys/fs/cgroup/1/cpuset.cpus +EOL +cat <<EOL >> /etc/libvirt/hooks/qemu.d/win10-hidden-pt/release/end/cpurevert.sh +#!/bin/sh +echo "0-11" > /sys/fs/cgroup/1/cpuset.cpus +echo "+cpuset" > /sys/fs/cgroup/cgroup.subtree_control +EOL + ;; +esac + +chmod +X /etc/libvirt/hooks/qemu.d/win10-hidden-pt/prepare/begin/cpuisolation.sh +chmod +X /etc/libvirt/hooks/qemu.d/win10-hidden-pt/release/end/cpurevert.sh + + +cat <<EOL >> /etc/libvirt/hooks/kvm.conf +VIRSH_GPU_VIDEO=pci_0000_01_00_0 +VIRSH_GPU_AUDIO=pci_0000_01_00_1 +EOL # usermod -aG libvirt,kvm,input,audio,video "$PERMUSER" -# libvirt group for virt-manager as user and input for evdev devices usermod -aG libvirt,input "$PERMUSER"