commit be0e3e2609065c8ff0d6dc37c55f3de715beba93
parent f150b4eafd09743dcc642ac053336412199fc444
Author: awy <awy@awy.one>
Date: Thu, 10 Apr 2025 13:23:23 +0300
init agnostic
Diffstat:
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"