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 von Floppy oder
USB-Stick nutzen möchten. Falls Sie aber die Datei auf einer CD oder DVD
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 ../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(n) des Kernels 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: preseed/url=http://host/path/to/preseed.cfg preseed/url/checksum=5da499872becccfeda2c4872f9171c3d - wenn Sie von einer neu erstellten (remastered) CD 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 und
preseed/file
mit file
, 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 vom debian-installer
verwendet werden soll,
geben Sie einfach
für jede Voreinstellungsvariable, die in den Beispielen dieses Abschnitts
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[28]) 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 dahinter 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.
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.
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. 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/squeeze/./preseed.cfg
empfangen wird.
Der letzte Teil der URL (d-i/squeeze/./preseed.cfg
) stammt
von auto-install/defaultroot
. Standardmässig ist dabei
das Verzeichnis squeeze
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/squeeze/./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 auch eine explizite URL angeben, und wenn Sie dabei nicht
das Element /./
im Pfad benutzen, wird sie passend zum
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 Hostnamens keinen Punkt enthält, wird die Domäne, die vom DHCP abgeleitet wird, angehängt und
falls nach dem Hostnamen 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-Namespace 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 Sie dies benötigen,
erwähnen Sie es doch auf der Mailingliste
<debian-boot@lists.debian.org>
, so dass wir Namespace-Konflikte
vermeiden können und vielleicht einen Alias dafür hinzufügen.
Das auto
-Boot-Label ist noch nicht überall
definiert. Der gleiche Effekt kann auch erreicht werden, indem die beiden
Parameter auto=true priority=critical
zur
Kernel-Kommandozeile hinzugefügt werden. Der Parameter auto
ist ein Alias für auto-install/enable
und wenn er auf
true
gesetzt ist, werden die
Fragen über Locale 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
bis zur Antwort auf eine DHCP-Anfrage gegeben wird.
Ein ausführliches Beispiel, wie Sie dies Framework nutzen, inklusive Beispielskripte und -klassen finden Sie auf der Webseite des Entwicklers. Die dort verfügbaren Beispiele zeigen auch viele andere tolle Effekte, die bei kreativer 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-Namen für Fragen-Namen sind und dass Sie immer auch einen Wert
angeben müssen, zum Beispiel auto=true
oder
interface=eth0
.
auto | auto-install/enable |
classes | auto-install/classes |
fb | debian-installer/framebuffer |
language | debian-installer/language |
country | debian-installer/country |
locale | debian-installer/locale |
priority | debconf/priority |
file | preseed/file |
url | preseed/url |
interface | netcfg/choose_interface |
hostname | netcfg/get_hostname |
domain | netcfg/get_domain |
protocol | mirror/protocol |
suite | mirror/suite |
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 (das Debian-Paket dhcp3-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-Klienten beschränkt, die sich selbst als »d-i« identifizieren; es wird also keine regulären DHCP-Klienten 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 Host 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.
[28] 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.