Zunächst müssen Sie natürlich eine Voreinstellungsdatei erstellen und dort ablegen, wo Sie sie benutzen wollen. Die Erstellung der Datei wird später in diesem Kapitel behandelt. Sie am richtigen Ort zu platzieren, ist recht unkompliziert, wenn Sie die Voreinstellung per Netzwerk oder USB-Stick nutzen möchten. Falls Sie aber die Datei in einem Installations-Image integrieren möchten, müssen Sie das ISO-Image remastern (neu erstellen). Und schließlich: wie Sie die Voreinstellungsdatei in die initrd integrieren können, ist nicht Thema dieses Dokuments; konsultieren Sie die Entwicklerdokumentation des debian-installer
.
Eine Beispiel-Voreinstellungsdatei, die Sie als Basis für Ihre Datei verwenden können, ist unter https://www.debian.org/releases/bookworm/example-preseed.txt verfügbar. Sie basiert auf den Konfigurationsfragmenten, die in diesem Kapitel enthalten sind.
Falls Sie Voreinstellung per initrd benutzen, müssen Sie lediglich sicherstellen, dass die Datei als preseed.cfg
im Root-Verzeichnis der initrd existiert. Der Installer wird automatisch überprüfen, ob solch eine Datei existiert und sie laden.
Für alle anderen Voreinstellungsmethoden müssen Sie dem Installer beim Start mitteilen, welche Datei er nutzen soll. Dies wird normalerweise mit einem Boot-Parameter gemacht, den Sie dem Kernel beim Start angeben, entweder manuell zum Boot-Zeitpunkt oder indem Sie die Konfigurationsdatei des Bootloaders editieren (fügen Sie z.B. in syslinux.cfg
den Parameter an das Ende der „append“-Zeile für den Kernel an).
Wenn Sie die Voreinstellungsdatei in der Bootloader-Konfiguration festlegen, möchten Sie vielleicht diese Konfiguration so verändern, dass Sie nicht mehr die Enter-Taste drücken müssen, um den Installer zu booten. In syslinux.cfg
müssen Sie dazu den Timeout auf 1
setzen.
Um sicherzustellen, dass der Installer die richtige Voreinstellungsdatei bekommt, können Sie optional eine Prüfsumme für die Datei angeben. Dies muss derzeit eine md5sum-Prüfsumme sein, und wenn sie angegeben ist, muss sie auch passen, ansonsten wird der Installer sich weigern, die Datei zu benutzen.
Boot-Parameter, die Sie angeben müssen - wenn Sie per Netzwerk booten (netboot): preseed/url=http://host/path/to/preseed.cfg preseed/url/checksum=5da499872becccfeda2c4872f9171c3d - oder preseed/url=tftp://host/path/to/preseed.cfg preseed/url/checksum=5da499872becccfeda2c4872f9171c3d - wenn Sie von einem angepassten (remastered) Installations-Image booten: preseed/file=/cdrom/preseed.cfg preseed/file/checksum=5da499872becccfeda2c4872f9171c3d - wenn Sie von einem USB-Medium installieren (legen Sie die Voreinstellungsdatei im Toplevel-(Haupt)-Verzeichnis des USB-Sticks ab): preseed/file=/hd-media/preseed.cfg preseed/file/checksum=5da499872becccfeda2c4872f9171c3d
Beachten Sie, dass preseed/url
auch einfach mit url
abgekürzt werden kann, preseed/file
mit file
und preseed/file/checksum
mit preseed-md5
, wenn diese Argumente als Boot-Parameter an den Kernel übergeben werden.
Falls eine Voreinstellungsdatei für einige Schritte nicht verwendet werden kann, kann die Installation trotzdem voll automatisiert werden, da Sie auch Voreinstellungswerte per Kommandozeile an den Kernel übergeben können.
Boot-Parameter können auch verwendet werden, wenn zwar Voreinstellung generell nicht verwendet, aber eine Antwort für eine spezielle Frage vorgegeben werden soll. Einige Beispiele, wofür das sinnvoll sein kann, sind an anderer Stelle in diesem Handbuch dokumentiert.
Um einen Wert festzulegen, der innerhalb des debian-installer
s verwendet werden soll, geben Sie einfach
für jede Voreinstellungsvariable, die in den Beispielen dieses Kapitels aufgelistet ist, am Boot-Prompt an. Falls ein Wert verwendet werden soll, um Pakete für das Zielsystem zu konfigurieren, müssen Sie den Eigentümer (owner[18]) der Variable voranstellen wie hier: Pfad/zur/Variable
=Wert
. Geben Sie den Eigentümer nicht an, wird der Wert der Variable nicht in die debconf-Datenbank des Zielsystems kopiert und bleibt deshalb bei der Konfiguration des entsprechenden Pakets ungenutzt. Eigentümer
:Pfad/zur/Variable
=Wert
Eine Frage auf diese Art voreinzustellen führt normalerweise dazu, dass die Frage überhaupt nicht gestellt wird. Um lediglich eine andere Vorauswahl (Standardantwort) einzustellen, aber die Frage trotzdem stellen zu lassen, verwenden Sie als Operator „?=“ statt „=“. Siehe auch Abschnitt B.5.2, „Voreinstellung nutzen, um Standardantworten auf Fragen zu ändern“.
Hinweis: einige Variablen, die oft am Boot-Prompt verwendet werden, haben einen kurzen Alias (Abkürzung). Wenn ein Alias vorhanden ist, wird er in den Beispielen in diesem Kapitel auch verwendet (statt der langen Fassung). Die preseed/url
-Variable zum Beispiel hat den Alias url
. Ein anderes Beispiel ist der Alias tasks
, der in tasksel:tasksel/first
übersetzt wird.
Ein „---“ in den Boot-Optionen hat eine spezielle Bedeutung. Alle Kernelparameter, die hinter dem letzten „---“ stehen, werden in die Bootloader-Konfiguration des installierten Systems kopiert (wenn der Installer des Bootloaders dies unterstützt). Der Installer wird automatisch alle Optionen (z.B. Voreinstellungsoptionen) ausfiltern, die er erkennt.
Anmerkung | |
---|---|
Aktuelle Linux-Kernel (2.6.9 oder später) akzeptieren ein Maximum von 32 Kommandozeilenoptionen und 32 Umgebungsoptionen, inklusive einiger Optionen, die standardmäßig für den Installer hinzugefügt werden. Wird diese Zahl überschritten, wird der Kernel eine Panic melden (abstürzen). (Bei älteren Kernels lagen diese Zahlen niedriger.) |
Einige der Standardoptionen, wie vga=normal
, können bei den meisten Installationen getrost entfernt werden, was es erlaubt, mehr Optionen für Voreinstellungen zu verwenden.
Anmerkung | |
---|---|
Es könnte teilweise unmöglich sein, Boot-Parameter mit Werten zu verwenden, die Leerzeichen enthalten, sogar wenn Sie sie mit Anführungszeichen einfassen. |
Es gibt etliche Features des Debian Installers, die es erlauben, mit ziemlich einfachen Kommandozeilen am Boot-Prompt zu komplexen angepassten automatisierten Installationen zu kommen.
Dies wird über die Auswahl Automated install
im Boot-Menü aktiviert, für einige Architekturen oder Boot-Methoden auch auto
genannt. In diesem Kapitel ist auto
daher kein Parameter, sondern bedeutet die Auswahl des genannten Boot-Menü-Eintrags und das Hinzufügen der folgenden Boot-Parameter am Boot-Prompt.
Um dies zu demonstrieren, hier einige Beispiele, die Sie am Boot-Prompt verwenden können:
auto url=autoserver
Bedingung hierfür ist, dass ein DHCP-Server existiert, der den Rechner an den Punkt bringt, wo autoserver
per DNS aufgelöst werden kann, eventuell indem die lokale Domäne hinzugefügt wird, falls sie per DHCP mitgeliefert wird. Wenn das auf einer Site passiert, auf der die Domäne example.com
lautet und es existiert ein gesundes DHCP-Setup, führt das dazu, dass die Voreinstellungsdatei von http://autoserver.example.com/d-i/bookworm/./preseed.cfg
empfangen wird.
Der letzte Teil der URL (d-i/bookworm/./preseed.cfg
) stammt von auto-install/defaultroot
. Standardmässig ist dabei das Verzeichnis bookworm
enthalten, damit zukünftige Versionen einen eigenen Codenamen festlegen können, um den Leuten eine kontrollierte Migration zu ermöglichen. Der Teil /./
des Pfades wird genutzt, um das Root-Verzeichnis relativ zu den späteren Pfaden, die verankert werden können, zu bezeichnen. Hierdurch können Dateien durch eine komplette URL angegeben werden (mit Pfaden, die mit / beginnen und entsprechend verankert sind oder sogar mit Pfaden relativ zu dem Verzeichnis, in dem die letzte Voreinstellungsdatei gefunden wurde). Dies kann genutzt werden, um Skripte zu entwerfen, die in höherem Maße portierbar sind, so dass eine komplette Hierachie von Skripten an einen neuen Ort verschoben werden kann, ohne sie total zu zerstören (z.B. Skripte auf einen USB-Stick verschieben, während sie auf einem Webserver entwickelt wurden). Ein Beispiel: die Voreinstellungsdatei setzt preseed/run
auf /scripts/late_command.sh
, dann wird die Datei von http://autoserver.example.com/d-i/bookworm/./scripts/late_command.sh
heruntergeladen.
Falls keine lokale DHCP- oder DNS-Infrastruktur existiert oder falls Sie nicht den Standardpfad zu der Datei preseed.cfg
nutzen möchten, können Sie trotzdem eine explizite URL angeben, und wenn Sie dabei nicht das Element /./
im Pfad benutzen, wird sie passend am Anfang des Pfades verankert (z.B. das dritte /
in der URL). Hier ein Beispiel, das nur minimale Unterstützung von der lokalen Netzwerkinfrastruktur erfordert:
auto url=http://192.168.1.2/path/to/mypreseed.file
Das funktioniert so:
falls in der URL das Protokoll fehlt, wird http angenommen,
falls der Teil des Rechnernamens keinen Punkt enthält, wird die Domäne, die vom DHCP abgeleitet wird, angehängt und
falls nach dem Rechnernamen kein /
folgt, wird der Standardpfad hinzugefügt.
Zusätzlich zur Angabe der URL können Sie auch Einstellungen angeben, die nicht direkt das Verhalten des debian-installer
selbst beeinflussen, sondern an Skripte weitergeleitet werden, die mit preseed/run
in der geladenen Voreinstellungsdatei festgelegt sind. Derzeit ist das einzige solche Beispiel auto-install/classes
, was den Alias classes
hat. Dies kann entsprechend so genutzt werden:
auto url=example.com
classes=class_A;class_B
Die Klassen können zum Beispiel den Systemtyp, der installiert werden soll, festlegen oder die Lokalisierung, die Sie nutzen möchten.
Natürlich ist es möglich, dieses Konzept zu erweitern und dabei ist es sinnig, den auto-install-Namensraum dafür zu nutzen. Sie könnten z.B. etwas wie auto-install/style
verwenden, was dann in Ihren Skripten genutzt wird. Falls Sie meinen, dass so etwas benötigt wird, erwähnen Sie es doch auf der Mailingliste <debian-boot@lists.debian.org>
, so dass wir Namenskonflikte vermeiden und vielleicht einen Alias dafür hinzufügen können.
Die Auswahl auto
im Boot-Menü ist noch nicht auf allen Architekturen definiert. Der gleiche Effekt kann jedoch auch erreicht werden, indem die beiden Parameter auto=true priority=critical
zur Kernel-Kommandozeile hinzugefügt werden. Der Kernel-Parameter auto
ist ein Alias für auto-install/enable
und wenn er auf true
gesetzt ist, werden die Fragen über Gebietsschema und Tastatur so weit zurückgestellt, bis eine Chance besteht, sie per Voreinstellung zu setzen. priority
ist ein Alias für debconf/priority
, und wenn er auf critical
gesetzt wird, unterdrückt das alle Fragen mit einer niedrigeren Priorität.
Zusätzliche Optionen, die eventuell interessant sein könnten für eine automatisierte Installation mittels DHCP: interface=auto netcfg/dhcp_timeout=60
. Das sorgt dafür, dass die erste funktionsfähige Netzwerkkarte genutzt wird und dass etwas mehr Zeit für die Antwort auf eine DHCP-Anfrage gegeben wird.
Tipp | |
---|---|
Ein ausführliches Beispiel, wie Sie dieses Framework nutzen können, inklusive Beispielskripte und -klassen finden Sie auf der Webseite des Entwicklers. Die dort verfügbaren Beispiele zeigen auch viele andere tolle Effekte, die durch kreative Nutzung von Voreinstellung erreicht werden können. |
Die folgenden Aliase könnten nützlich sein, wenn Sie Voreinstellung (im Auto-Modus) benutzen. Beachten Sie, dass dies einfach nur kurze Alias für Fragen-Namen sind und dass Sie immer auch einen Wert angeben müssen, zum Beispiel auto=true
oder interface=eth0
.
priority | debconf/priority |
fb | debian-installer/framebuffer |
auto | auto-install/enable |
classes | auto-install/classes |
file | preseed/file |
url | preseed/url |
theme | debian-installer/theme |
language | debian-installer/language |
country | debian-installer/country |
locale | debian-installer/locale |
keymap | keyboard-configuration/xkb-keymap |
modules | anna/choose_modules |
firmware | hw-detect/firmware-lookup |
interface | netcfg/choose_interface |
domain | netcfg/get_domain |
hostname | netcfg/get_hostname |
protocol | mirror/protocol |
suite | mirror/suite |
recommends | base-installer/install-recommends |
tasks | tasksel:tasksel/first |
desktop | tasksel:tasksel/desktop |
preseed-md5 | preseed/file/checksum |
Hier einige Beispiele, wie Zeilen am Boot-Prompt aussehen könnten (Sie müssen sie natürlich an Ihre Bedürfnisse anpassen).
# Um Französisch als Sprache zu setzen und Frankreich als Land: /install.amd/vmlinuz vga=788 initrd=/install.amd/gtk/initrd.gz language=fr country=FR --- quiet # Um Englisch als Sprache zu setzen und Deutschland als Land, sowie ein # deutsches Tastaturlayout zu verwenden: /install.amd/vmlinuz vga=788 initrd=/install.amd/gtk/initrd.gz language=en country=DE locale=en_US.UTF-8 keymap=de --- quiet # Um die MATE-Desktop-Umgebung zu installieren: /install.amd/vmlinuz vga=788 initrd=/install.amd/gtk/initrd.gz desktop=mate-desktop --- quiet # Um die Programmgruppe web-server zu installieren: /install.amd/vmlinuz initrd=/install.amd/initrd.gz tasksel:tasksel/first=web-server ---
Es ist auch möglich, DHCP zu benutzen, um eine Voreinstellungsdatei anzugeben, die vom Netzwerk heruntergeladen werden soll. DHCP erlaubt es, einen Dateinamen anzugeben. Normalerweise ist dies eine Datei für das Booten per Netzwerk; wenn sie jedoch als URL angegeben wird, wird das Installationsmedium (dies muss Voreinstellung per Netzwerk unterstützen) die Datei von der URL herunterladen und als Voreinstellungsdatei benutzen. Hier ein Beispiel, wie Sie die dhcpd.conf für den ISC-DHCP-Server Version 3 (aus dem Debian-Paket isc-dhcp-server) einstellen müssen:
if substring (option vendor-class-identifier, 0, 3) = "d-i" { filename "http://host/preseed.cfg"; }
Beachten Sie, dass das obige Beispiel die Angabe des Dateinamens auf DHCP-Clients beschränkt, die sich selbst als „d-i“ identifizieren; es wird also keine regulären DHCP-Clients beeinflussen, sondern nur Rechner, auf denen der Installer läuft. Sie können den Text auch in einen Absatz der Datei einfügen, der nur für einen bestimmten Rechner gilt, um zu vermeiden, dass ALLE Installationen im Netzwerk voreingestellt werden.
Eine gute Sache für die Voreinstellung per DHCP ist es, nur Werte vorzugeben, die netzwerkspezifisch sind, wie der zu nutzende Debian-Spiegel-Server. Auf diese Weise wird bei allen Installationen im Netzwerk automatisch ein passender Spiegel-Server gewählt, aber der Rest der Installation kann interaktiv vonstatten gehen. Eine voll automatisierte Debian-Installation per DHCP-Voreinstellung sollte nur mit Vorsicht durchgeführt werden.
[18] Der Eigentümer (owner) einer debconf-Variable (oder eines Templates) ist normalerweise der Name des Pakets, das die entsprechende debconf-Vorlage enthält. Bei Variablen, die im Installer selbst verwendet werden, ist der Eigentümer „d-i“. Vorlagen und Variablen können auch mehr als einen Eigentümer haben, was dabei hilfreich sein kann, herauszufinden, ob sie aus der debconf-Datenbank entfernt werden können, wenn das Paket komplett vom System entfernt wird.