GNU/Linux >> Tutoriales Linux >  >> Linux

Linux:¿cuál es el archivo predeterminado para `hostname`?

¡Hola! Actualmente estoy trabajando en un sistema que no es lfs desde cero con busybox como estrella. Ahora, mi inicio de sesión dice:

(none) login:

Por lo tanto, mi nombre de host está roto. hostname me trae (none) también.

La guía que estaba siguiendo me dijo que lanzara el nombre de host a /etc/HOSTNAME . También probé /etc/hostname . No importa lo que haga, hostname devuelve (none) – a menos que ejecute hostname <thename> o hostname -F /etc/hostname . Ahora, obviamente, no quiero que esto se haga cada vez que alguien instaló la distribución recientemente, entonces, ¿cuál es el archivo predeterminado real, si no es /etc/hostname? ?

¡Gracias de antemano!

Respuesta aceptada:

El hostname Los comandos en los conjuntos de herramientas comunes, incluido BusyBox, no recurren a los archivos cuando se consulta el nombre de host.
Informan únicamente lo que el kernel les devuelve como el nombre de host de una llamada al sistema, que el kernel inicializa en una cadena como " (ninguno)”, modificable reconfigurando y reconstruyendo el núcleo.
(En la terminología de systemd, este es el nombre de host dinámico , también conocido como nombre de host transitorio; el que realmente informa Linux, el kernel.)
No hay "archivo predeterminado".

Por lo general, hay un servicio de disparo único que se ejecuta al inicio del sistema, bastante temprano, que busca en estos diversos archivos, extrae el nombre de host e inicializa el nombre de host del kernel con él.
(En la terminología de systemd, esta cadena de configuración es el nombre de host estático .)
Por ejemplo:

  • En mi conjunto de herramientas, proporciono un hostname "temprano" servicio que ejecuta el conjunto de herramientas set-dynamic-hostname Comando después de los montajes del sistema de archivos local y antes de los servicios de inicio de sesión del usuario. El trabajo se divide en cosas que se hacen (solo) cuando uno hace un cambio de configuración, y cosas que se hacen en (cada) arranque del sistema:
    • El mecanismo de importación de configuración externa lee /etc/hostname y /etc/HOSTNAME , entre otras fuentes (ya que diferentes sistemas operativos configuran esto de diferentes maneras), y crea un rc.conf amalgamado .
    • El mecanismo de importación de configuración externa utiliza el rc.conf combinado para configurar el hostname de este servicio variable de entorno.
    • Cuando se ejecuta el servicio, set-dynamic-hostname no necesita preocuparse por todas las posibilidades de la fuente de configuración y simplemente toma la variable de entorno, del entorno configurado para el servicio, y establece el nombre de host dinámico a partir de él.
  • En systemd, esta es una acción de inicialización que está integrada en el código de systemd en sí mismo, que se ejecuta incluso antes de que se inicie la gestión del servicio. El systemd el programa mismo va y lee /etc/hostname (y también /proc/cmdline , pero no /etc/HOSTNAME ni /etc/default/hostname ni /etc/sysconfig/network ) y lo pasa al kernel.
  • En Void Linux hay un script de shell de inicio que lee el nombre de host estático desde (solo) /etc/hostname , con un respaldo a la variable de shell leída desde rc.conf y establece el nombre de host dinámico a partir de su valor.
Relacionado:Hoja de referencia de Linux+

Si está creando un sistema "desde cero", tendrá que crear un servicio que haga el equivalente.
Las herramientas BusyBox y ToyBox para configurar el nombre de host desde un archivo son hostname -F "${filename}" , por lo que tendrá que crear un servicio que ejecute ese comando contra /etc/hostname o algún archivo similar.

BusyBox viene con el conjunto de herramientas de administración de servicios de runit, y un servicio runit simple sería algo así como:

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

Lecturas adicionales

  • Lennart Poettering et al. (2016). hostname . páginas del manual systemd. Freedesktop.org.
  • Jonathan de Boyne Pollard (2017). “set-dynamic-hostname “. Manual de comandos de usuario . conjunto de herramientas nosh. Software.
  • Jonathan de Boyne Pollard (2017). “rc.conf amalgamación". Guía de comida . Software.
  • Jonathan de Boyne Pollard (2015). “formatos externos“. Guía de comida . Software.
  • Rob Landley. hostname . Lista de comandos de Toybox . landley.net.
  • https://unix.stackexchange.com/a/12832/5132

Linux
  1. Una introducción al archivo Linux /etc/fstab

  2. Linux:¿cómo configurar la afinidad de CPU predeterminada para todos los demonios en Systemd?

  3. Linux:cambie el nombre de host en la CLI

  4. ¿Cuál es el archivo predeterminado para `hostname`?

  5. Cómo configurar /etc/issues para mostrar la dirección IP de eth0

Comprender el archivo /etc/shadow

La forma correcta de editar archivos /etc/passwd y /etc/group en Linux

¿Qué es el archivo /etc/passwd en Linux?

Cómo cambiar el nombre de host en Debian Linux

Comprender el archivo /etc/fstab en Linux

Comprender los archivos /proc/mounts, /etc/mtab y /proc/partitions