GNU/Linux >> Tutoriales Linux >  >> Linux

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

El hostname Los comandos en los conjuntos de herramientas comunes, incluido BusyBox, no recurren a los archivos cuando consultan el nombre de host. Solo informan 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 nombre de host estático .)Por ejemplo:

  • En mi conjunto de herramientas, proporciono un hostname "temprano" servicio que ejecuta el set-dynamic-hostname del conjunto de herramientas 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 dice /etc/hostname y /etc/HOSTNAME , entre otras fuentes (ya que diferentes sistemas operativos configuran esto de diferentes maneras), y hace 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 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 propio programa 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.

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). hostnamectl . 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 fusión". Guía de nosh . 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

Entonces, ¿está construyendo este sistema desde cero y pregunta dónde está configurado el nombre de host?

La respuesta simple es que no lo es. El nombre de host actual se almacena dentro del kernel y, como la mayoría de las cosas del kernel, no lee ningún archivo de forma predeterminada.

Algo en el inicio de su sistema debe leer un archivo de configuración (de su elección) y establecer el nombre de host del kernel. Esto debe suceder cada inicio.


Puedes cambiarlo desde make menuconfig al construir el kernel.


Linux
  1. Pruebas de integración continua para el kernel de Linux

  2. ¿Para qué sirven los inodos?

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

  4. ¿Cuál es el propósito del archivo .bashrc en Linux?

  5. ¿Cuáles son los directorios de inclusión predeterminados de GCC?

¿Cuál es la forma correcta de usar inotify?

¿Cuál es la contraseña raíz predeterminada para MySQL 5.7?

¿Cuál es el equivalente al comando de archivo de Linux para Windows?

¿Cómo encontrar el administrador de archivos predeterminado?

¿Cuál es el orden predeterminado de clasificación de Linux?

¿Para qué sirve i915.modeset=1?