GNU/Linux >> Linux Esercitazione >  >> Linux

Linux:qual è il file predefinito per `hostname`?

Ehi! Attualmente sto lavorando da zero su un sistema non lfs con busybox come protagonista. Ora, il mio login dice:

(none) login:

Quindi, il mio hostname è rotto. hostname mi porta (none) anche.

La guida che stavo seguendo mi diceva di lanciare il nome host su /etc/HOSTNAME . Ho anche provato /etc/hostname . Non importa quello che faccio, hostname restituisce (none) – a meno che non eseguo hostname <thename> o hostname -F /etc/hostname . Ora, ovviamente, non voglio che ciò avvenga ogni volta che qualcuno ha appena installato la distribuzione, quindi qual è il vero file predefinito, se non /etc/hostname ?

Grazie in anticipo!

Risposta accettata:

Il hostname i comandi nei set di strumenti comuni, incluso BusyBox, non tornano ai file quando si interroga il nome host.
Riportano esclusivamente ciò che il kernel restituisce loro come nome host da una chiamata di sistema, che il kernel inizializza su una stringa come " (none)”, modificabile riconfigurando e ricostruendo il kernel.
(Nella terminologia di sistema questo è il nome host dinamico , alias nome host transitorio; quello che è effettivamente riportato da Linux, il kernel.)
Non c'è non c'è "file predefinito".

Di solito c'è un servizio single-shot che viene eseguito all'avvio del sistema, abbastanza presto, che cerca in questi vari file, estrae il nome host e inizializza il nome host del kernel con esso.
(Nella terminologia di sistema questa stringa di configurazione è il nome host statico .)
Ad esempio:

  • Nel mio set di strumenti fornisco un hostname "precoce". servizio che esegue il set-dynamic-hostname del set di strumenti comando dopo il montaggio del filesystem locale e prima dei servizi di accesso utente. Il lavoro è diviso in cose che vengono eseguite (solo) quando si apporta una modifica alla configurazione e cose che vengono eseguite in (ogni) bootstrap di sistema:
    • Il meccanismo di importazione della configurazione esterna legge /etc/hostname e /etc/HOSTNAME , tra le altre fonti (poiché diversi sistemi operativi lo configurano in modi diversi), e crea un insieme rc.conf .
    • Il meccanismo di importazione della configurazione esterna utilizza l'unito rc.conf per configurare il hostname di questo servizio variabile di ambiente.
    • Quando il servizio è in esecuzione, set-dynamic-hostname non ha bisogno di preoccuparsi di tutte le possibilità di origine della configurazione e prende semplicemente la variabile di ambiente, dall'ambiente configurato per il servizio, e imposta da esso il nome host dinamico.
  • In systemd questa è un'azione di inizializzazione cablata nel codice di systemd stesso, che viene eseguito prima ancora che la gestione del servizio venga avviata. Il systemd il programma stesso va e legge /etc/hostname (e anche /proc/cmdline , ma non /etc/HOSTNAME /etc/default/hostname /etc/sysconfig/network ) e lo passa al kernel.
  • In Void Linux esiste uno script di shell di avvio che legge il nome host statico da (solo) /etc/hostname , con un fallback alla variabile shell letta da rc.conf e imposta il nome host dinamico dal suo valore.
Correlati:cheat sheet di Linux+

Se stai costruendo un sistema "da zero", dovrai creare un servizio che faccia l'equivalente.
Gli strumenti BusyBox e ToyBox per impostare il nome host da un file sono hostname -F "${filename}" , quindi dovrai creare un servizio che esegua quel comando su /etc/hostname o uno di questi file.

BusyBox viene fornito con il set di strumenti di gestione dei servizi di runit e un semplice servizio runit sarebbe qualcosa sulla falsariga di:

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

Ulteriori letture

  • Lennart Poettering et al. (2016). hostnamectl . pagine di manuale di sistema. Freedesktop.org.
  • Jonathan de Boyne Pollard (2017). “set-dynamic-hostname “. Manuale comandi utente . set di strumenti nosh. Software.
  • Jonathan de Boyne Pollard (2017). “rc.conf fusione". Guida al gusto . Software.
  • Jonathan de Boyne Pollard (2015). “formati esterni”. Guida al gusto . Software.
  • Rob Landley. hostname . Elenco comandi di Toybox . landley.net.
  • https://unix.stackexchange.com/a/12832/5132

Linux
  1. Un'introduzione al file Linux /etc/fstab

  2. In che modo Linux gestisce più separatori di percorsi consecutivi (/home////nomeutente///file)?

  3. Linux:cos'è uno spazio dei nomi Uts?

  4. Esempio di file /etc/services in Linux

  5. Linux:cambia il nome host nella CLI

Comprendere il file /etc/shadow

Il modo giusto per modificare i file /etc/passwd e /etc/group in Linux

Che cos'è il file /etc/passwd in Linux?

Come modificare il nome host su Debian Linux

Comprendere il file /etc/fstab in Linux

Comprendere i file /proc/mounts, /etc/mtab e /proc/partitions