Debian Custom ISO für unbeaufsichtigte Wunschinstallation(en)

Auch keine Lust mehr, mit einem zu langsamen Xampp zu entwickeln oder mit Docker Compose das Rad jedes Mal neu zu erfinden, wenn man doch eine richtige Entwicklungsumgebung benötigt und nicht einen persistenten Container, der nach dem Neustart alles wieder vergessen hat?

Ich nutze am liebsten immer noch meine virtuellen Maschinen auf Oracle VM Oracle VirtualBox.

Eigene Debian-12-Install-CD für eine komplett unbeaufsichtigte Installation unter Windows mit Oracle VM erstellen

Die Erstellung einer benutzerdefinierten Debian-12-Installations-CD für eine vollständig unbeaufsichtigte Installation kann besonders nützlich sein, wenn regelmäßig neue Systeme aufgesetzt werden müssen. Für eine solche Aufgabe ist es möglich, eine Preseed-Datei zu verwenden, die alle notwendigen Installationsoptionen und Softwarepakete automatisch konfiguriert.

Da Windows und Oracle VM genutzt werden, liegt der Fokus auf Tools und Prozessen, die auf Windows basieren, um die ISO-Datei zu bearbeiten und die Installation in einer Oracle VM zu testen.

Vorteile einer unbeaufsichtigten Installation

  • Zeitersparnis: Mehrere Systeme können schnell und ohne manuelle Eingaben installiert werden.
  • Automatisierung: Standardprogramme und Konfigurationen werden bereits während der Installation eingerichtet.
  • Konsistenz: Alle Installationen folgen denselben Konfigurationen, was das Management erleichtert.

Voraussetzungen

  • Debian 12 ISO: Die originale Debian-12-ISO wird als Grundlage verwendet.
  • Preseed-Datei: Diese Datei enthält die Antworten für alle Installationsschritte.
  • Windows-ISO-Editor: Programme wie UltraISO oder IsoEdit werden verwendet, um die ISO zu modifizieren.

Schritt 1: Herunterladen der Debian-12-Installations-ISO

Die Debian-12-Netinst-ISO bietet eine minimalistische Installation, bei der die meisten Pakete aus dem Internet heruntergeladen werden.

Schritt 2: Erstellen der Preseed-Datei

Die Preseed-Datei steuert die unbeaufsichtigte Installation. Hier ein Beispiel für eine einfache Preseed-Konfiguration:

d-i debian-installer/locale string de_DE
d-i console-setup/ask_detect boolean false
d-i keyboard-configuration/xkb-keymap select de

# Partitionierung
d-i partman-auto/disk string /dev/sda
d-i partman-auto/method string regular
d-i partman/choose_partition select finish
d-i partman/confirm boolean true
d-i partman/confirm_nooverwrite boolean true

# Benutzer
d-i passwd/root-password password rootpasswort
d-i passwd/root-password-again password rootpasswort
d-i passwd/user-fullname string Benutzername
d-i passwd/username string benutzer
d-i passwd/user-password password benutzerpasswort
d-i passwd/user-password-again password benutzerpasswort

# Netzwerk
d-i netcfg/get_hostname string server
d-i netcfg/get_domain string localdomain

# Software
d-i pkgsel/include string git curl htop sudo

# GRUB
d-i grub-installer/only_debian boolean true

# Spätere Befehle ausführen und Skripte in das Root-Home kopieren
d-i preseed/late_command string \
  cp /cdrom/preseed/add_sudo_user.sh /target/root/; \
  cp /cdrom/preseed/change_hostname.sh /target/root/; \
  cp /cdrom/preseed/setup_database.sh /target/root/; \
  in-target chmod +x /root/add_sudo_user.sh; \
  in-target chmod +x /root/change_hostname.sh; \
  in-target chmod +x /root/setup_database.sh;

Hinzufügen von Skripten zum Root-Home-Verzeichnis

Es ist möglich, Batch- oder Shell-Skripte in das Verzeichnis /root/ des neu installierten Systems zu kopieren. Diese Skripte können nach Abschluss der Installation ausgeführt werden, um zusätzliche Aufgaben zu automatisieren, wie etwa das:

  • Anlegen eines neuen sudo-Benutzers,
  • Umbenennen des Hostnamens, oder
  • Einrichten einer Datenbank.

Beispiel für das Skript add_sudo_user.sh:

#!/bin/bash

# Nach dem Benutzernamen fragen (Standard: "newuser")
read -p "Geben Sie den Benutzernamen ein [newuser]: " user_name
user_name=${user_name:-newuser}

# Nach dem Passwort fragen (keine Anzeige des Passworts im Terminal)
read -s -p "Geben Sie das Passwort für den Benutzer '$user_name' ein: " user_pass
echo

# Neuen Benutzer erstellen
echo "Erstelle Benutzer '$user_name'..."
useradd -m -s /bin/bash "$user_name"

# Passwort für den Benutzer setzen
echo "$user_name:$user_pass" | chpasswd

# Benutzer zur sudo-Gruppe hinzufügen
usermod -aG sudo "$user_name"

echo "Benutzer '$user_name' wurde erstellt und hat nun sudo-Rechte."

Das Skript wird durch den late_command in der Preseed-Datei automatisch ins Root-Verzeichnis kopiert und kann dann nach der Installation ausgeführt werden.

Schritt 3: Bearbeiten der ISO-Datei mit Windows-Tools

Um die Preseed-Datei in die ISO zu integrieren, wird ein ISO-Editor auf Windows benötigt.

  • Öffnen der Debian-12-ISO mit bspw. UltraISO.
  • Die Preseed-Datei in das anzulegende Verzeichnis /preseed/ der ISO kopieren.
  • Die Boot-Konfiguration (z.B. isolinux/txt.cfg oder grub/grub.cfg) bearbeiten und den Parameter hinzufügen: append initrd=/install.amd/initrd.gz preseed/file=/cdrom/preseed.cfg auto=true priority=critical quiet
  • Die ISO-Datei speichern.

Schritt 4: Anpassen der Boot-Parameter

Um sicherzustellen, dass die Preseed-Datei während der Installation verwendet wird, müssen die Boot-Parameter der ISO angepasst werden. Dies erfolgt durch Bearbeiten der Datei isolinux/txt.cfg oder grub/grub.cfg (je nach Bootloader):

default install
label install
  menu label ^Install
  kernel /install.amd/vmlinuz
  append initrd=/install.amd/initrd.gz preseed/file=/cdrom/preseed.cfg auto=true priority=critical quiet

Hier heißt der Punkt „Automatic – DESTRUCTIVE“, da bei mir die komplette Festplatte genutzt und ohne Rückfrage überschrieben wird. Aber das kann jeder für sich selbst festlegen.

Schritt 5: ISO-Datei testen

Für eine virtuelle Testumgebung wird Oracle VM VirtualBox verwendet:

  • Download-Link: Oracle VM VirtualBox
  • Erstelle eine neue virtuelle Maschine in VirtualBox und verwende die angepasste ISO-Datei als Installationsquelle.

Schritte zur Erstellung der VM:

  1. Neue virtuelle Maschine erstellen und Debian als Gast-Betriebssystem auswählen.
  2. ISO-Datei einbinden: Die angepasste Debian-ISO als optisches Laufwerk für die VM verwenden.
  3. Automatisierte Installation testen: Die virtuelle Maschine starten und prüfen, ob die Installation ohne Eingriffe durchgeführt wird.

Schritt 6: ISO-Datei auf physischer Hardware testen

Um sicherzustellen, dass die erstellte ISO-Datei auch auf physischer Hardware funktioniert, kann die ISO-Datei auf einen USB-Stick übertragen (mit Rufus) und auf einem echten PC oder Server getestet werden. Die Installation sollte ebenfalls unbeaufsichtigt ablaufen und die in der Preseed-Datei definierten Einstellungen übernehmen.

Fazit

Mit Windows und Oracle VM VirtualBox kann eine vollständig unbeaufsichtigte Debian-12-Installation einfach eingerichtet und getestet werden. Durch die Anpassung der ISO und die Integration einer Preseed-Datei lässt sich der gesamte Installationsprozess automatisieren. Mithilfe von Tools wie UltraISO oder Rufus ist es möglich, die ISO auf Windows zu bearbeiten und für den Einsatz in virtuellen oder physischen Umgebungen vorzubereiten.

So sieht mein Home-Verzeichnis von root aus. Ich habe u.a. auch noch eine Batchdatei install_cms.sh mit der ich gleich ein komplettes CMS wie WordPress oder ein Framework wie Symfony installieren kann.

Mehr Informationen:

https://github.com/istepaniuk/debian11-preseed?tab=readme-ov-file

https://wiki.debian.org/DebianInstaller/Preseed

https://wiki.debian.org/DebianInstaller/Preseed/EditIso

https://wiki.debian.org/RepackBootableISO