Fix UEFI snapshot support and ensure sudo privileges

This commit is contained in:
2026-02-05 14:23:44 +01:00
parent 4eff9d7e22
commit e5f46324e4
2 changed files with 16 additions and 5 deletions

View File

@@ -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 = subprocess.Popen(["chroot", mount_root, "chpasswd"], stdin=subprocess.PIPE, text=True)
p.communicate(input=f"{user_info['username']}:{user_info['password']}") 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 # Set hostname
with open(os.path.join(mount_root, "etc/hostname"), "w") as f: with open(os.path.join(mount_root, "etc/hostname"), "w") as f:
f.write(user_info["hostname"] + "\n") f.write(user_info["hostname"] + "\n")

View File

@@ -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}" DISK_PATH="${2:-/home/n0va/.local/share/iridium-installer-vm/test-disk.qcow2}"
OVMF_CODE="/usr/share/edk2/x64/OVMF_CODE.4m.fd" OVMF_CODE="/usr/share/edk2/x64/OVMF_CODE.4m.fd"
OVMF_VARS_TEMPLATE="/usr/share/edk2/x64/OVMF_VARS.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_LOCAL" ]; then
if [ -f "$OVMF_VARS_TEMPLATE" ]; 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 else
echo "Warning: OVMF VARS template not found at $OVMF_VARS_TEMPLATE" 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
fi fi
@@ -21,13 +24,14 @@ echo "ISO: $ISO_PATH"
echo "Disk: $DISK_PATH" echo "Disk: $DISK_PATH"
# QEMU Command with UEFI (OVMF) enabled # QEMU Command with UEFI (OVMF) enabled
# We use format=qcow2 for pflash1 to allow snapshots (savevm)
qemu-system-x86_64 \ qemu-system-x86_64 \
-enable-kvm \ -enable-kvm \
-m 4G \ -m 4G \
-smp 2 \ -smp 2 \
-cpu host \ -cpu host \
-drive if=pflash,format=raw,readonly=on,file="$OVMF_CODE" \ -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 \ -drive file="$DISK_PATH",format=qcow2,if=virtio \
-cdrom "$ISO_PATH" \ -cdrom "$ISO_PATH" \
-boot once=d \ -boot once=d \