preseed.cfg ignoriert die Einstellung des Hostnamens

13

Ich installiere Debian Wheezy (netinstall) in VirtualBox mit preseed.cfg.

Ich habe beide d-i netcfg/get_hostname string somehostund ausprobiert d-i netcfg/get_hostname string somehost, aber in beiden Fällen wird der Host auf "debian" gesetzt. Ich habe beide gleichzeitig ausprobiert, aber der Host ist immer noch auf "debian" eingestellt.

Auszug aus dem Debian-Handbuch über die Vorkonfigurationsdatei :

Wenn Sie einen Hostnamen erzwingen möchten, unabhängig davon, was der DHCP-Server zurückgibt oder wie der umgekehrte DNS-Eintrag für die IP lautet, deaktivieren Sie die folgende Zeile und passen Sie sie an

di netcfg / hostname string irgendwo

Ist das ein Fehler oder habe ich einfach Pech?

ToddM
quelle

Antworten:

10

Keine Lösung, sondern eine Umgehung

Auch ich hatte ein ähnliches Problem und habe es umgangen, indem ich den Hostnamen nach der Installation über die folgenden Zeilen festgelegt habe, die am Ende von my hinzugefügt wurden pressed.cfg:

d-i pressed/late_command string\
    in-target /bin/bash -c 'echo desired_name > /etc/hostname'

Das in-targetist notwendig, damit sich das /auf das Zieldateisystem bezieht (das später zu Ihrem Root-Dateisystem wird), das normalerweise /targetwährend der Installation angezeigt wird .

Joseph R.
quelle
1
Ich habe auch dies aber mit einer leichten Modifikation verwendet , so dass der Hostname automatisch von einem DNS - Lookup gesetzt: d-i pressed/late_command string in-target /bin/bash -c 'echo $(dig +short -x $(facter ipaddress)) | sed -e \'s/\.$//\' > /etc/hostname'. Dabei wird "facter" von Puppetlabs verwendet, um die IP-Adresse abzurufen. Sie können jedoch mit ip addrund etwas Ähnliches tun sed.
David Gardner
9

Wenn Sie mit PXE und Freunden im Netz booten, wird der Hostname vor dem Abrufen der Voreinstellungsdatei eingerichtet. Der Hostname sollte daher in der Kernel-Befehlszeile wie folgt festgelegt werden:

hostname=myhostname domain=mydomain

Aus der Einführung des Anhangs B (zur Voreinstellung) des Debian-Installer-Handbuchs:

Ein wichtiger Unterschied zwischen den Voreinstellungsmethoden ist der Zeitpunkt, an dem die Vorkonfigurationsdatei geladen und verarbeitet wird. Für initrd-Voreinstellungen ist dies gleich zu Beginn der Installation der Fall, noch bevor die erste Frage gestellt wird. Bei der Dateivoreinstellung erfolgt dies, nachdem die CD oder das CD-Image geladen wurde. Für die Netzwerkvoreinstellung gilt dies erst, nachdem das Netzwerk konfiguriert wurde.

Pseudozufall
quelle
4

Ich stellte fest, dass dieses Problem behoben war, als ich priority=criticaldie Argumente entfernte, die ich an den Kernel in der Befehlszeile net install (über die Verzeichniseinträge pxelinux.cfg) weitergab.

Ich nehme an, dies bedeutet, dass der Frage, die nach dem Hostnamen fragt, eine Priorität zugewiesen wurde, die niedriger als "kritisch" ist und daher mit der Standardantwort gefüllt wird.

Wenn Sie diese Änderung vornehmen, werden Sie möglicherweise feststellen, dass Sie später im Installationsprozess einige weniger wichtige Antworten auf andere Fragen vorbereiten müssen ...

Tim Small
quelle
3

Es ist eine Debian-Installer-Einschränkung. Wenn Sie Ihre vordefinierte Konfigurationsdatei aus dem Netzwerk netcfgabrufen , ist sie bereits erledigt und nicht mehr vorhanden, sodass die Werte nicht erneut abgerufen werden.

etwas offizieller kludge ist in deiner preseed.cfglinie zu verwenden:

d-i preseed/run string http://example.net/d-i/jessie/preseed.sh

und darin preseed.shdann spezifizieren:

#!/bin/sh
kill-all-dhcp; netcfg

Auf diese Weise, wenn das Netzwerk aufgebaut und preseed.cfgwird abgerufen, preseed.shwird auch holen und ausgeführt werden, so wird es neu starten , netcfgdie dann alle preseed Werte für lesen netcfg/*und konfiguriert , dass sie richtig ( /etc/hostsname, /etc/hosts, /etc/network/interfaceswenn Sie auf Einstellung statische IP - Konfiguration über preseed etc)

Matija Nalis
quelle
Sie können dies ohne eine separate Datei tun: d-i preseed/early_command string kill-all-dhcp; netcfgIn Ihrer Voreinstellungsdatei ist genug. Getestet mit Stretch in einer automatisierten Netzinstallation.
scy