GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Linux – Was ist die Standarddatei für „hostname“?

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 den set-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 amalgamierte rc.conf .
    • Der externe Konfigurationsimportmechanismus verwendet die zusammengeführte rc.conf um den hostname 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.
  • 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. Das systemd 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 aus rc.conf gelesen wird , und legt den dynamischen Hostnamen anhand seines Werts fest.
Verwandte:Linux+ Spickzettel

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

Linux
  1. Eine Einführung in die Linux-Datei /etc/fstab

  2. Linux – Was ist ein Uts-Namespace?

  3. Linux – Wie stellt man die Standard-CPU-Affinität für alle Daemons in Systemd ein?

  4. Was ist die Verbindung zwischen den Verzeichnissen /etc/init.d und /etc/rcX.d in Linux?

  5. So richten Sie /etc/issues ein, um die IP-Adresse für eth0 anzuzeigen

Verstehen der /etc/shadow-Datei

Der richtige Weg zum Bearbeiten von /etc/passwd- und /etc/group-Dateien unter Linux

Was ist die Datei /etc/passwd unter Linux?

So ändern Sie den Hostnamen unter Debian Linux

Verstehen der /etc/fstab-Datei unter Linux

Die Dateien /proc/mounts, /etc/mtab und /proc/partitions verstehen