diff options
Diffstat (limited to 'raveos-app-installer/data/actions/kvm.sh')
| -rwxr-xr-x | raveos-app-installer/data/actions/kvm.sh | 102 |
1 files changed, 102 insertions, 0 deletions
diff --git a/raveos-app-installer/data/actions/kvm.sh b/raveos-app-installer/data/actions/kvm.sh new file mode 100755 index 0000000..1e05fdb --- /dev/null +++ b/raveos-app-installer/data/actions/kvm.sh @@ -0,0 +1,102 @@ +#!/bin/bash +# KVM/QEMU virtualizáció telepítő script +# Környezeti változók: INSTALL_USER, INSTALL_HOME + +set -e + +USER="$INSTALL_USER" +HOME="$INSTALL_HOME" +ACTION="${1:-install}" + +remove_installed_packages() { + local installed=() + local pkg + for pkg in "$@"; do + if pacman -Qq "$pkg" >/dev/null 2>&1; then + installed+=("$pkg") + fi + done + if ((${#installed[@]})); then + pacman -Rcns --noconfirm "${installed[@]}" + fi +} + +if [[ "$ACTION" == "remove" ]]; then + echo "Removing KVM/QEMU for $USER..." + systemctl disable --now libvirtd.service 2>/dev/null || true + remove_installed_packages \ + qemu-full \ + qemu-img \ + libvirt \ + virt-install \ + virt-manager \ + virt-viewer \ + edk2-ovmf \ + dnsmasq \ + swtpm \ + guestfs-tools \ + libosinfo \ + dmidecode + echo "KVM/QEMU removal complete!" + exit 0 +fi + +echo "Installing KVM/QEMU for $USER..." + +# Csomagok telepítése +pacman -S --noconfirm --needed \ + qemu-full \ + qemu-img \ + libvirt \ + virt-install \ + virt-manager \ + virt-viewer \ + edk2-ovmf \ + dnsmasq \ + swtpm \ + guestfs-tools \ + libosinfo \ + dmidecode + +# User hozzáadása a szükséges csoportokhoz +usermod -aG kvm "$USER" +usermod -aG input "$USER" +usermod -aG libvirt "$USER" + +# Libvirt konfiguráció - user beállítása +QEMU_CONF="/etc/libvirt/qemu.conf" +if [[ -f "$QEMU_CONF" ]]; then + # User sor keresése és módosítása + if grep -q "^#user = " "$QEMU_CONF"; then + sed -i "s/^#user = .*/user = \"$USER\"/" "$QEMU_CONF" + elif grep -q "^user = " "$QEMU_CONF"; then + sed -i "s/^user = .*/user = \"$USER\"/" "$QEMU_CONF" + else + echo "user = \"$USER\"" >> "$QEMU_CONF" + fi + + # Group beállítása + if grep -q '^#group = ' "$QEMU_CONF"; then + sed -i 's/^#group = .*/group = "kvm"/' "$QEMU_CONF" + elif grep -q '^group = ' "$QEMU_CONF"; then + sed -i 's/^group = .*/group = "kvm"/' "$QEMU_CONF" + else + echo 'group = "kvm"' >> "$QEMU_CONF" + fi +fi + +# Szolgáltatások engedélyezése és indítása +systemctl enable libvirtd.socket 2>/dev/null || true +systemctl start libvirtd.socket 2>/dev/null || true +systemctl enable libvirtd.service +systemctl start libvirtd.service + +# Várjuk meg a socketet mielőtt virsh-t hívunk +timeout 30 bash -c 'until [ -S /run/libvirt/libvirt-sock ]; do sleep 1; done' 2>/dev/null || true + +# Default network autostart +virsh net-autostart default 2>/dev/null || true +virsh net-start default 2>/dev/null || true + +echo "KVM/QEMU installation complete!" +echo "Please log out and back in for group changes to take effect." |