Startet in RHEL 7.2 systemd
und ermittelt den Hostnamen des Hosts. Wenn /etc/hostname
nicht verfügbar (dh entfernt) und nicht /etc/machine-info
verfügbar ist und der Kernel nicht mit diesen Informationen (dh sysctl
's kernel.hostname
) konfiguriert ist , systemd
weist er dem Host einen "vorübergehenden" Hostnamen zu. Die Frage ist: Woher bestimmt es das?
Der Host wurde ursprünglich so benannt. Ich habe dann den Host geklont (es ist eine VM) und alle Verweise auf diesen Namen gelöscht. Aber dann wird es während des Startvorgangs sehr früh so eingestellt.
Wenn ich hochfahre, rescuemode
kann ich sehen, dass der Hostname sehr früh festgelegt wird:
[ 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...
An der Eingabeaufforderung wird ein "vorübergehender" Hostname festgelegt:
# hostnamectl status
Transient hostname: badhostname.mydomain.com
...
Es kann sein, dass es nicht so ist systemd
: Ich bekomme sogar dieses Problem bei der Verwendung init=/bin/bash
, aber systemd wird im initrd-Image ausgeführt.
- Es ist nicht in Maden oder so gesetzt.
- Es wird nicht von DHCP festgelegt, da das Netzwerk beim Booten deaktiviert ist.
Es ist nirgendwo im Dateisystem:
# 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>
Irgendwie bestimmt der Kernel oder das System den alten Hostnamen und verwendet ihn als Transienten, und ich weiß nicht, wie! . Ich habe eine find ... -exec grep
ohne Ergebnisse gemacht, außer /var/log/dmesg
. Ich sage dir, systemd hat meinen Gastgeber verfolgt!
EDIT 2: Das einzige Mal, dass ich es nicht bekomme, ist, wenn ich die bereitgestellten Rettungsinitramfs boote. Anscheinend birgt das generierte Initramfs schmutzige Geheimnisse!
Antworten:
Dank der Erkenntnisse von Don Crissti und des Eliminierungsprozesses wird der Schluss gezogen, dass der Schuldige das Bild des Initramfs ist. Irgendwie
dracut
entscheidet sich das Image beim Erstellen dafür, eine zwischengespeicherte Version des Hostnamens (!?!) Einzuschließen.Die Neuerstellung von initrd / initram fs wird hier behandelt, aber kurz gesagt (da Sie, lieber Leser, möglicherweise keinen Zugriff haben)
quelle