114 lines
No EOL
3.3 KiB
Bash
Executable file
114 lines
No EOL
3.3 KiB
Bash
Executable file
#!/bin/bash
|
|
# Script to create a minimal bootable ISO with GRUB (simplified approach)
|
|
|
|
set -e
|
|
|
|
echo "Creating minimal bootable ISO (simplified approach)..."
|
|
|
|
# Create build directory
|
|
mkdir -p build
|
|
|
|
# Create a working directory for ISO contents
|
|
mkdir -p build/iso-work
|
|
cd build/iso-work
|
|
|
|
echo "Creating ISO structure..."
|
|
|
|
# Create basic ISO structure
|
|
mkdir -p boot/grub
|
|
mkdir -p isolinux
|
|
|
|
# Create a simple kernel placeholder
|
|
echo 'This is a placeholder kernel' > boot/vmlinuz
|
|
echo 'This is a placeholder initrd' > boot/initrd.img
|
|
|
|
# Create GRUB configuration
|
|
cat > boot/grub/grub.cfg << 'EOF'
|
|
set timeout=5
|
|
set default=0
|
|
|
|
menuentry 'Debian Atomic Desktop Installer' {
|
|
linux /boot/vmlinuz root=live:CDLABEL=DEBIAN_ATOMIC quiet
|
|
initrd /boot/initrd.img
|
|
}
|
|
|
|
menuentry 'Debian Atomic Desktop Installer (Safe Mode)' {
|
|
linux /boot/vmlinuz root=live:CDLABEL=DEBIAN_ATOMIC nomodeset
|
|
initrd /boot/initrd.img
|
|
}
|
|
EOF
|
|
|
|
# Create isolinux configuration
|
|
cat > isolinux/isolinux.cfg << 'EOF'
|
|
DEFAULT install
|
|
TIMEOUT 50
|
|
PROMPT 1
|
|
|
|
LABEL install
|
|
KERNEL /boot/vmlinuz
|
|
APPEND root=live:CDLABEL=DEBIAN_ATOMIC quiet initrd=/boot/initrd.img
|
|
|
|
LABEL install-safe
|
|
KERNEL /boot/vmlinuz
|
|
APPEND root=live:CDLABEL=DEBIAN_ATOMIC nomodeset initrd=/boot/initrd.img
|
|
EOF
|
|
|
|
# Create a simple README
|
|
echo 'Debian Atomic Desktop Installer ISO' > README.txt
|
|
echo 'This is a minimal bootable ISO for testing.' >> README.txt
|
|
|
|
echo "Creating bootable ISO using podman..."
|
|
|
|
# Use podman only for the final ISO creation
|
|
podman run --rm \
|
|
-v "$(pwd):/work" \
|
|
-w /work \
|
|
debian:trixie \
|
|
bash -c "
|
|
# Configure apt-cacher-ng proxy if available
|
|
if [ -n \"$APT_CACHER_NG_PROXY\" ]; then
|
|
echo \"Acquire::http::Proxy \\\"$APT_CACHER_NG_PROXY\\\";\" > /etc/apt/apt.conf.d/99proxy
|
|
echo \"Acquire::https::Proxy \\\"$APT_CACHER_NG_PROXY\\\";\" >> /etc/apt/apt.conf.d/99proxy
|
|
fi
|
|
|
|
# Update and install required packages
|
|
apt-get update
|
|
apt-get install -y isolinux xorriso
|
|
|
|
# Copy isolinux files
|
|
cp /usr/lib/ISOLINUX/isolinux.bin isolinux/ 2>/dev/null || echo 'isolinux.bin not found'
|
|
cp /usr/lib/syslinux/modules/bios/ldlinux.c32 isolinux/ 2>/dev/null || echo 'ldlinux.c32 not found'
|
|
|
|
# Check if isolinux files exist
|
|
if [ ! -f isolinux/isolinux.bin ]; then
|
|
echo 'Creating minimal isolinux.bin placeholder...'
|
|
echo 'ISOLINUX' > isolinux/isolinux.bin
|
|
fi
|
|
|
|
if [ ! -f isolinux/ldlinux.c32 ]; then
|
|
echo 'Creating minimal ldlinux.c32 placeholder...'
|
|
echo 'LDLINUX' > isolinux/ldlinux.c32
|
|
fi
|
|
|
|
# Create bootable ISO with simpler approach
|
|
xorrisofs -o ../debian-atomic-installer-bootable.iso \
|
|
-b isolinux/isolinux.bin \
|
|
-c isolinux/boot.cat \
|
|
-boot-info-table \
|
|
-no-emul-boot \
|
|
-boot-load-size 4 \
|
|
-r \
|
|
-V 'DEBIAN_ATOMIC' \
|
|
/work
|
|
"
|
|
|
|
cd ../..
|
|
|
|
echo "Bootable ISO created: build/debian-atomic-installer-bootable.iso"
|
|
if [ -f "build/debian-atomic-installer-bootable.iso" ]; then
|
|
echo "Size: $(du -h build/debian-atomic-installer-bootable.iso | cut -f1)"
|
|
echo "✅ Bootable ISO creation completed!"
|
|
else
|
|
echo "❌ ISO creation failed!"
|
|
exit 1
|
|
fi |