GNU/Linux >> Tutoriels Linux >  >> Linux

Quel est le fichier par défaut pour `hostname` ?

Le hostname les commandes dans les ensembles d'outils courants, y compris BusyBox, ne reviennent pas aux fichiers lors de l'interrogation du nom d'hôte. Elles signalent uniquement ce que le noyau leur renvoie comme nom d'hôte à partir d'un appel système, que le noyau initialise à une chaîne telle que "(aucun)" , modifiable en reconfigurant et en reconstruisant le noyau. (Dans la terminologie systemd, il s'agit du nom d'hôte dynamique , alias nom d'hôte transitoire; celui qui est en fait rapporté par Linux, le noyau.) Il n'y a pas "fichier par défaut".

Il existe généralement un service unique qui s'exécute au démarrage du système, assez tôt, qui recherche dans ces différents fichiers, extrait le nom d'hôte et initialise le nom d'hôte du noyau avec. (Dans la terminologie systemd, cette chaîne de configuration est le nom d'hôte statique .)Par exemple :

  • Dans mon ensemble d'outils, je fournis un hostname "précoce" service qui exécute le set-dynamic-hostname de l'ensemble d'outils commande après le montage du système de fichiers local et avant les services de connexion de l'utilisateur. Le travail est divisé en choses qui sont faites (uniquement) quand on fait un changement de configuration, et des choses qui sont faites à (chaque) démarrage du système :
    • Le mécanisme d'importation de la configuration externe lit /etc/hostname et /etc/HOSTNAME , parmi d'autres sources (puisque différents systèmes d'exploitation le configurent de différentes manières), et crée un rc.conf fusionné .
    • Le mécanisme d'importation de configuration externe utilise le rc.conf fusionné pour configurer le hostname de ce service variable d'environnement.
    • Lorsque le service s'exécute, set-dynamic-hostname n'a pas besoin de se soucier de toutes les possibilités de source de configuration et prend simplement la variable d'environnement de l'environnement configuré pour le service et définit le nom d'hôte dynamique à partir de celle-ci.
  • Dans systemd, il s'agit d'une action d'initialisation qui est câblée dans le code de systemd lui-même, qui s'exécute avant même le démarrage de la gestion des services. Le systemd le programme lui-même va et lit /etc/hostname (et aussi /proc/cmdline , mais pas /etc/HOSTNAME ni /etc/default/hostname ni /etc/sysconfig/network ) et le transmet au noyau.
  • Dans Void Linux, il existe un script shell de démarrage qui lit le nom d'hôte statique à partir (uniquement) de /etc/hostname , avec un retour à la variable shell lue à partir de rc.conf , et définit le nom d'hôte dynamique à partir de sa valeur.

Si vous construisez un système "à partir de zéro", alors vous devrez créer un service qui fait l'équivalent. Les outils BusyBox et ToyBox pour définir le nom d'hôte à partir d'un fichier sont hostname -F "${filename}" , vous devrez donc créer un service qui exécute cette commande sur /etc/hostname ou un tel fichier.

BusyBox est livré avec l'ensemble d'outils de gestion de service de runit, et un service runit simple ressemblerait à :

#!/bin/sh -e
exec 2>&1
exec hostname -F /etc/hostname

Autres lectures

  • Lennart Poettering et al. (2016). hostnamectl . pages de manuel systemd. Freedesktop.org.
  • Jonathan de Boyne Pollard (2017). "set-dynamic-hostname ". Manuel des commandes utilisateur . ensemble d'outils de bouffe. Logiciels.
  • Jonathan de Boyne Pollard (2017). "rc.conf fusion". Guide nosh . Logiciels.
  • Jonathan de Boyne Pollard (2015). "formats externes". Guide bouffe . Logiciels.
  • Rob Landley. hostname . Liste des commandes du Toybox . landley.net.
  • https://unix.stackexchange.com/a/12832/5132

Vous construisez donc ce système à partir de zéro et vous demandez où le nom d'hôte est configuré ?

La réponse simple est que non. Le nom d'hôte actuel est stocké dans le noyau et, comme la plupart des éléments du noyau, il ne lit aucun fichier par défaut.

Quelque chose au démarrage de votre système doit lire un fichier de configuration (de votre choix) et définir le nom d'hôte du noyau. Cela doit arriver à chaque démarrage.


Vous pouvez le changer de make menuconfig lors de la construction du noyau.


Linux
  1. Tests d'intégration continue pour le noyau Linux

  2. A quoi servent les inodes ?

  3. Linux - Quel est le fichier par défaut pour `hostname` ?

  4. Quels sont les répertoires d'inclusion par défaut de GCC ?

  5. Quel est le mot de passe root par défaut pour MySQL 5.7

Quelle est la bonne façon d'utiliser inotify ?

Quelle est la source actuelle du noyau Linux ?

Quel est l'équivalent de la commande Linux File pour Windows ?

À quoi sert Linux test -a command test ?

Dans un lien symbolique pointant vers '127.0.1.1:+xxxxx', à quoi sert le caractère plus ?

Quel est l'ordre par défaut du tri Linux ?