RHEL 7.2でsystemd
起動し、ホストのホスト名を確認します。/etc/hostname
使用できない場合(例:削除された場合)、/etc/machine-info
使用できない場合、カーネルがその情報(例:sysctl
's kernel.hostname
)を構成していない場合、systemd
ホストに「一時」ホスト名が割り当てられます。問題は、これをどこで決定すべきかです。
ホスト名はもともとこのように指定されていました。その後、ホスト(仮想マシン)を複製し、名前へのすべての参照を消去しました。しかし、起動プロセスの初期にはそのように設定されます。
起動すると、rescuemode
非常に最初にホスト名が設定されていることがわかります。
[ 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...
コマンドプロンプトでは、「一時」ホスト名に設定されます。
# hostnamectl status
Transient hostname: badhostname.mydomain.com
...
おそらくそうではありませんsystemd
。使用時にもこの問題が発生しましたが、init=/bin/bash
systemdはinitrdイメージ内で実行されていました。
- それはグラブや他のものに設定されていません。
- 起動時にネットワークが無効になるため、DHCPによって設定されません。
ファイルシステムはどこにもありません。
# 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>
どういうわけかカーネルやsystemdが以前のホスト名を決定し、それを一時的に使用していますが、どうするのかわかりません! 。find ... -exec grep
他には何の結果もなく一つをしました/var/log/dmesg
。私は言いますが、systemdは私のホストを盗聴しています!
編集2:私がそれを取得できない唯一のケースは、提供された回復initramfsで起動する場合です。明らかに作成されたinitramfsには汚い秘密が含まれています!
答え1
ドン・クリスティの洞察力と除去の過程で、犯人はinitramfsのイメージであるという結論を得ました。どういうわけかdracut
イメージをビルドするときに、ホスト名(!?!)のキャッシュされたバージョンを含めることにします。
initrd/initram fs 再構築を扱います。ここしかし、簡単に言うと(親愛なる読者の皆さんにアクセス権がない可能性があるため)、次のようにしてください。
dracut -f -v