¿De dónde determina systemd el nombre de host transitorio?

¿De dónde determina systemd el nombre de host transitorio?

En RHEL 7.2, systemdse inicia y determina el nombre de host del host. Si /etc/hostnameno está disponible (es decir, se elimina), /etc/machine-infono está disponible y el kernel no está configurado con esa información (es decir, sysctl's kernel.hostname), systemdasigna un nombre de host "transitorio" al host. La pregunta es: ¿desde dónde determina esto?

El anfitrión originalmente se llamaba así. Luego cloné el host (es una máquina virtual) y borré todas las referencias a ese nombre. Pero luego, durante el proceso de arranque, muy temprano, se configura de esa manera.

Si inicio, rescuemodepuedo ver que establece el nombre de host muy temprano:

[    0.456076] systemd[1]: systemd 208 running in system mode. (+PAM +LIBWRAP +AUDIT +SELINUX +IMA +SYSVINIT +LIBCRYPTSETUP +GCRYPT +AC
L +XZ)
[    0.456664] systemd[1]: Detected virtualization 'kvm'.
[    0.456955] systemd[1]: Running in initial RAM disk.
[    0.458496] systemd[1]: Set hostname to <badhostname.example.com>.
[    0.475394] systemd[1]: Expecting device dev-mapper-vgroot\x2dlvroot.device...

En el símbolo del sistema, se establece como un nombre de host "transitorio":

# hostnamectl status
Transient hostname: badhostname.mydomain.com
...

Puede ser que no lo sea systemd: incluso tengo este problema cuando uso init=/bin/bash, pero systemd se ejecuta dentro de la imagen initrd.

  • No está ambientado en comida ni nada por el estilo.
  • DHCP no lo configura ya que la red está deshabilitada en el arranque.
  • No está en ninguna parte del sistema de archivos:

    # find / \( -path /sys -prune -o -path /proc -prune -o -path /run -prune \) -o -type f -exec grep -ilrF "${HOSTNAME}" {} +
    <some .git files>
    <history files of non-root user>
    

De alguna manera, el kernel o systemd está determinando el antiguo nombre de host y usándolo como transitorio, ¡y no sé cómo hacerlo! . Hice un find ... -exec grepsin resultados excepto /var/log/dmesg. ¡Te lo digo, systemd ha perseguido a mi anfitrión!

EDITAR 2: La única vez que no lo entiendo es si inicio en el initramfs de rescate proporcionado. ¡Aparentemente, el initramfs generado guarda secretos sucios!

Respuesta1

Gracias a las intuiciones de Don Crissti y mediante un proceso de eliminación, se concluye que la culpable es la imagen de initramfs. De alguna manera, dracutcuando crea la imagen, decide incluir una versión en caché del nombre de host (!?!).

Se cubre la reconstrucción de initrd/initram fsaquípero en resumen (dado que es posible que usted, querido lector, no tenga acceso), no

dracut -f -v

información relacionada