macbook-setup/build-iso.sh

93 lines
3.1 KiB
Bash
Raw Normal View History

#!/bin/bash
# build-iso.sh — Ubuntu 24.04 Autoinstall ISO für Ventoy bauen
# Ausführen auf einem Ubuntu/Debian-System mit Internetzugang
# Ergebnis: ubuntu-macbook-autoinstall.iso (~4-5 GB)
set -e
UBUNTU_ISO_URL="https://releases.ubuntu.com/24.04/ubuntu-24.04-live-server-amd64.iso"
UBUNTU_ISO="ubuntu-24.04-live-server-amd64.iso"
OUTPUT_ISO="ubuntu-macbook-autoinstall.iso"
WORKDIR="/tmp/iso-build"
RED='\033[0;31m'; GREEN='\033[0;32m'; YELLOW='\033[1;33m'; NC='\033[0m'
ok() { echo -e "${GREEN}$*${NC}"; }
warn() { echo -e "${YELLOW}$*${NC}"; }
echo "════════════════════════════════════════════"
echo " macbook-setup ISO Builder"
echo "════════════════════════════════════════════"
# Abhängigkeiten
echo -e "\n=== Abhängigkeiten prüfen ==="
sudo apt install -y xorriso squashfs-tools genisoimage
ok "Werkzeuge verfügbar"
# Ubuntu ISO herunterladen (falls nicht vorhanden)
if [[ ! -f "$UBUNTU_ISO" ]]; then
echo -e "\n=== Ubuntu 24.04 ISO herunterladen ==="
wget --show-progress -O "$UBUNTU_ISO" "$UBUNTU_ISO_URL"
ok "ISO heruntergeladen"
else
ok "ISO bereits vorhanden: $UBUNTU_ISO"
fi
# Arbeitsverzeichnis vorbereiten
echo -e "\n=== ISO entpacken ==="
rm -rf "$WORKDIR"
mkdir -p "$WORKDIR/source"
sudo mount -o loop "$UBUNTU_ISO" /mnt
cp -rT /mnt "$WORKDIR/source"
sudo umount /mnt
chmod -R u+w "$WORKDIR/source"
ok "ISO entpackt nach $WORKDIR/source"
# autoinstall-Dateien einfügen
echo -e "\n=== Autoinstall-Dateien einbetten ==="
mkdir -p "$WORKDIR/source/autoinstall"
cp user-data "$WORKDIR/source/autoinstall/"
cp meta-data "$WORKDIR/source/autoinstall/"
ok "user-data und meta-data eingefügt"
# GRUB-Konfiguration: autoinstall-Parameter hinzufügen
echo -e "\n=== GRUB konfigurieren ==="
GRUB_CFG="$WORKDIR/source/boot/grub/grub.cfg"
# Autoinstall-Eintrag am Anfang einfügen
cat > /tmp/grub-autoinstall.cfg <<'EOF'
set default=0
set timeout=10
menuentry "Ubuntu MacBook AutoInstall" {
set gfxpayload=keep
linux /casper/vmlinuz quiet autoinstall ds=nocloud\;s=/cdrom/autoinstall/ ---
initrd /casper/initrd
}
EOF
cat /tmp/grub-autoinstall.cfg "$GRUB_CFG" > /tmp/grub-merged.cfg
mv /tmp/grub-merged.cfg "$GRUB_CFG"
ok "GRUB konfiguriert (autoinstall als Standard)"
# ISO neu bauen
echo -e "\n=== ISO bauen ==="
xorriso -as mkisofs \
-r -V "Ubuntu-24.04-MacBook" \
-J -joliet-long \
-b boot/grub/i386-pc/eltorito.img \
-c boot.catalog \
-no-emul-boot -boot-load-size 4 -boot-info-table \
--efi-boot boot/grub/efi.img \
-efi-boot-part --efi-startup-part --protective-msdos-label \
"$WORKDIR/source" \
-o "$OUTPUT_ISO"
ok "ISO erstellt: $OUTPUT_ISO"
echo ""
echo "Größe: $(du -sh "$OUTPUT_ISO" | cut -f1)"
echo ""
warn "Nächster Schritt: ISO auf Ventoy-Stick kopieren"
echo " cp $OUTPUT_ISO /media/\$USER/Ventoy/"
echo ""
warn "Vor der Installation: user-data anpassen!"
echo " - Passwort-Hash: mkpasswd -m sha-512 DEINPASSWORT"
echo " - Modell: 'setup.sh -- 13' oder 'setup.sh -- 16' in user-data"