particle-os/02-installer-bootc/scripts/create-iso.sh
2025-08-07 01:04:22 -07:00

76 lines
No EOL
2.2 KiB
Bash
Executable file

#!/bin/bash
# Script to create a bootable ISO from the installer container
set -e
echo "Creating bootable ISO from installer container..."
# Check if container image exists
if ! podman image exists debian-atomic-installer:latest; then
echo "Error: Container image debian-atomic-installer:latest not found"
echo "Please build the installer first with: just build-installer"
exit 1
fi
# Create build directory
mkdir -p build/iso
echo "Extracting container filesystem..."
# Extract the container filesystem
podman create --name temp-installer debian-atomic-installer:latest
podman export temp-installer | tar -x -C build/iso
podman rm temp-installer
echo "Setting up bootloader..."
# Create basic bootloader structure
mkdir -p build/iso/boot/grub
mkdir -p build/iso/isolinux
# Create a basic GRUB configuration
cat > build/iso/boot/grub/grub.cfg << 'EOF'
set timeout=5
set default=0
menuentry "Debian Atomic Desktop Installer" {
linux /boot/vmlinuz root=live:CDLABEL=DEBIAN_ATOMIC_INSTALLER quiet
initrd /boot/initrd.img
}
menuentry "Debian Atomic Desktop Installer (Safe Mode)" {
linux /boot/vmlinuz root=live:CDLABEL=DEBIAN_ATOMIC_INSTALLER nomodeset
initrd /boot/initrd.img
}
EOF
echo "Creating ISO..."
# Create the ISO using genisoimage or xorrisofs
if command -v xorrisofs &> /dev/null; then
xorrisofs -o build/debian-atomic-installer.iso \
-b isolinux/isolinux.bin \
-c isolinux/boot.cat \
-boot-info-table \
-no-emul-boot \
-boot-load-size 4 \
-r \
-V "DEBIAN_ATOMIC_INSTALLER" \
build/iso/
elif command -v genisoimage &> /dev/null; then
genisoimage -o build/debian-atomic-installer.iso \
-b isolinux/isolinux.bin \
-c isolinux/boot.cat \
-boot-info-table \
-no-emul-boot \
-boot-load-size 4 \
-r \
-V "DEBIAN_ATOMIC_INSTALLER" \
build/iso/
else
echo "Error: Neither xorrisofs nor genisoimage found"
echo "Please install one of them:"
echo " sudo apt install xorriso"
echo " sudo apt install genisoimage"
exit 1
fi
echo "ISO created successfully: build/debian-atomic-installer.iso"
echo "Size: $(du -h build/debian-atomic-installer.iso | cut -f1)"