From e5f46324e4fda46afb3d1a234431b5f636cf03ba Mon Sep 17 00:00:00 2001 From: N0VA Date: Thu, 5 Feb 2026 14:23:44 +0100 Subject: [PATCH] Fix UEFI snapshot support and ensure sudo privileges --- iridium_installer/backend/os_install.py | 7 +++++++ run_vm_uefi.sh | 14 +++++++++----- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/iridium_installer/backend/os_install.py b/iridium_installer/backend/os_install.py index cc5e36b..0a57841 100644 --- a/iridium_installer/backend/os_install.py +++ b/iridium_installer/backend/os_install.py @@ -190,6 +190,13 @@ UUID={efi_uuid} /boot vfat defaults 0 2 p = subprocess.Popen(["chroot", mount_root, "chpasswd"], stdin=subprocess.PIPE, text=True) p.communicate(input=f"{user_info['username']}:{user_info['password']}") + # Ensure wheel group has sudo privileges + sudoers_dir = os.path.join(mount_root, "etc/sudoers.d") + os.makedirs(sudoers_dir, exist_ok=True) + with open(os.path.join(sudoers_dir, "wheel"), "w") as f: + f.write("%wheel ALL=(ALL) ALL\n") + os.chmod(os.path.join(sudoers_dir, "wheel"), 0o440) + # Set hostname with open(os.path.join(mount_root, "etc/hostname"), "w") as f: f.write(user_info["hostname"] + "\n") diff --git a/run_vm_uefi.sh b/run_vm_uefi.sh index 6f3b8ac..8548982 100755 --- a/run_vm_uefi.sh +++ b/run_vm_uefi.sh @@ -5,14 +5,17 @@ ISO_PATH="${1:-/home/n0va/Downloads/Fedora-Workstation-Live-43-1.6.x86_64.iso}" DISK_PATH="${2:-/home/n0va/.local/share/iridium-installer-vm/test-disk.qcow2}" OVMF_CODE="/usr/share/edk2/x64/OVMF_CODE.4m.fd" OVMF_VARS_TEMPLATE="/usr/share/edk2/x64/OVMF_VARS.4m.fd" -OVMF_VARS_LOCAL="/tmp/iridium_vm_vars.fd" +OVMF_VARS_LOCAL="/tmp/iridium_vm_vars.qcow2" -# Ensure OVMF vars exist +# Ensure OVMF vars exist in qcow2 format for snapshot support if [ ! -f "$OVMF_VARS_LOCAL" ]; then if [ -f "$OVMF_VARS_TEMPLATE" ]; then - cp "$OVMF_VARS_TEMPLATE" "$OVMF_VARS_LOCAL" + echo "Creating UEFI vars file from template..." + qemu-img convert -f raw -O qcow2 "$OVMF_VARS_TEMPLATE" "$OVMF_VARS_LOCAL" else echo "Warning: OVMF VARS template not found at $OVMF_VARS_TEMPLATE" + # Fallback to creating an empty qcow2 if template is missing (not ideal but avoids crash) + qemu-img create -f qcow2 "$OVMF_VARS_LOCAL" 528K fi fi @@ -21,13 +24,14 @@ echo "ISO: $ISO_PATH" echo "Disk: $DISK_PATH" # QEMU Command with UEFI (OVMF) enabled +# We use format=qcow2 for pflash1 to allow snapshots (savevm) qemu-system-x86_64 \ -enable-kvm \ -m 4G \ -smp 2 \ -cpu host \ -drive if=pflash,format=raw,readonly=on,file="$OVMF_CODE" \ - -drive if=pflash,format=raw,file="$OVMF_VARS_LOCAL" \ + -drive if=pflash,format=qcow2,file="$OVMF_VARS_LOCAL" \ -drive file="$DISK_PATH",format=qcow2,if=virtio \ -cdrom "$ISO_PATH" \ -boot once=d \ @@ -37,4 +41,4 @@ qemu-system-x86_64 \ -display gtk,gl=on \ -monitor unix:$HOME/.local/share/iridium-installer-vm/monitor.sock,server,nowait \ -name "Iridium Installer Test VM (UEFI)" \ -# -loadvm clean-state \ No newline at end of file +# -loadvm clean-state