Hallo! Ich arbeite derzeit an einem Nicht-LFS-System von Grund auf mit Busybox als Star. Jetzt sagt mein Login:
(none) login:
Daher ist mein Hostname kaputt. hostname
bringt mir (none)
auch.
Der Leitfaden, dem ich folgte, sagte mir, ich solle den Hostnamen an /etc/HOSTNAME
übergeben . Ich habe es auch mit /etc/hostname
versucht . Egal was ich tue, hostname
gibt (none)
zurück – es sei denn, ich führe hostname <thename>
aus oder hostname -F /etc/hostname
. Nun möchte ich natürlich nicht, dass dies jedes Mal geschieht, wenn jemand die Distribution neu installiert – was ist also die wirkliche Standarddatei, wenn nicht /etc/hostname
?
Vielen Dank im Voraus!
Akzeptierte Antwort:
Der hostname
Befehle in gängigen Toolsets, einschließlich BusyBox, greifen nicht auf Dateien zurück, wenn sie den Hostnamen abfragen.
Sie berichten lediglich, was der Kernel ihnen als Hostnamen von einem Systemaufruf zurückgibt, den der Kernel mit einer Zeichenkette wie „ (none)“, änderbar durch Neukonfiguration und Neuerstellung des Kernels.
(In der Systemd-Terminologie ist dies der dynamische Hostname , auch bekannt als vorübergehender Hostname; derjenige, der eigentlich von Linux gemeldet wird, der Kernel.)
Es gibt keinen „Standarddatei“.
Normalerweise gibt es einen Single-Shot-Dienst, der ziemlich früh beim Systemstart ausgeführt wird, der diese verschiedenen Dateien durchsucht, den Hostnamen herauszieht und den Kernel-Hostnamen damit initialisiert.
(In der Systemd-Terminologie ist diese Konfigurationszeichenfolge der statische Hostname .)
Zum Beispiel:
- In meinem Toolset gebe ich einen „frühen“
hostname
an Dienst, der denset-dynamic-hostname
des Toolsets ausführt Befehl nach dem Mounten des lokalen Dateisystems und vor Benutzeranmeldediensten. Die Arbeit ist unterteilt in Dinge, die (nur) erledigt werden, wenn man eine Konfigurationsänderung vornimmt, und Dinge, die bei (jedem) System-Bootstrap erledigt werden:- Der externe Konfigurationsimportmechanismus liest
/etc/hostname
und/etc/HOSTNAME
, neben anderen Quellen (da verschiedene Betriebssysteme dies auf unterschiedliche Weise konfigurieren), und erstellt eine amalgamierterc.conf
. - Der externe Konfigurationsimportmechanismus verwendet die zusammengeführte
rc.conf
um denhostname
dieses Dienstes zu konfigurieren Umgebungsvariable. - Wenn der Dienst läuft,
set-dynamic-hostname
muss sich nicht um alle Möglichkeiten der Konfigurationsquelle kümmern und nimmt einfach die Umgebungsvariable aus der für den Dienst konfigurierten Umgebung und legt daraus den dynamischen Hostnamen fest.
- Der externe Konfigurationsimportmechanismus liest
- In systemd ist dies eine Initialisierungsaktion, die im Code von
systemd
fest verdrahtet ist selbst, das ausgeführt wird, bevor das Service-Management überhaupt gestartet wird. Dassystemd
Programm selbst geht und liest/etc/hostname
(und auch/proc/cmdline
, aber nicht/etc/HOSTNAME
noch/etc/default/hostname
noch/etc/sysconfig/network
) und übergibt das an den Kernel. - In Void Linux gibt es ein Start-Shell-Skript, das den statischen Hostnamen aus (nur)
/etc/hostname
liest , mit einem Fallback auf die Shell-Variable, die ausrc.conf
gelesen wird , und legt den dynamischen Hostnamen anhand seines Werts fest.
Wenn Sie ein System „von Grund auf neu“ erstellen, müssen Sie einen Dienst erstellen, der das Gleiche tut.
Die BusyBox- und ToyBox-Tools zum Festlegen des Hostnamens aus einer Datei sind hostname -F "${filename}"
, also müssen Sie einen Dienst erstellen, der diesen Befehl für /etc/hostname
ausführt oder eine solche Datei.
BusyBox wird mit dem Dienstverwaltungs-Toolset von Runit geliefert, und ein einfacher Runit-Dienst wäre etwas in der Art von:
#!/bin/sh -e exec 2>&1 exec hostname -F /etc/hostname
Weiterführende Literatur
- Lennart Pöttering et al. (2016).
hostnamectl
. systemd Handbuchseiten. Freedesktop.org. - Jonathan de Boyne Pollard (2017). „
set-dynamic-hostname
“. Handbuch für Benutzerbefehle . Nosh-Toolset. Software. - Jonathan de Boyne Pollard (2017). „
rc.conf
Verschmelzung". Nosh-Leitfaden . Software. - Jonathan de Boyne Pollard (2015). „Fremde Formate“. Nosh-Leitfaden . Software.
- Rob Landley.
hostname
. Toybox-Befehlsliste . landley.net. - https://unix.stackexchange.com/a/12832/5132