hostname BusyBox を含む一般的なツールセットのコマンドは、ホスト名を照会するときにファイルにフォールバックしません。それらは、カーネルがシステム コールからホスト名として返すものだけを報告し、カーネルはそれを "(none)" などの文字列に初期化します。 、カーネルを再構成および再構築することによって変更可能です。(systemd 用語では、これは 動的ホスト名 です。 、別名一時ホスト名; Linux、カーネルによって実際に報告されるものです。)ありません "デフォルトファイル".
通常、システムの起動時にかなり早い段階で実行されるシングルショット サービスがあり、これらのさまざまなファイルを調べて、ホスト名を取り出し、それを使用してカーネルのホスト名を初期化します (systemd の用語では、この構成文字列は です)。静的ホスト名 .)例:
- 私のツールセットでは、「初期の」
hostnameを提供しています ツールセットのset-dynamic-hostnameを実行するサービス コマンドは、ローカル ファイルシステムのマウント後、ユーザー ログイン サービスの前に実行します。作業は、構成の変更を行ったときに (のみ) 実行されるものと、(すべての) システムのブートストラップで実行されるものに分けられます:- 外部構成のインポート メカニズムは
/etc/hostnameを読み取ります と/etc/HOSTNAME、他のソースの中でも(オペレーティングシステムが異なるとこれを異なる方法で構成するため)、融合したrc.confを作成します . - 外部構成のインポート メカニズムは、統合された
rc.confを使用します このサービスのhostnameを構成するには 環境変数。 - サービスが実行されると、
set-dynamic-hostnameすべての構成ソースの可能性を気にする必要はなく、単にサービス用に構成された環境から環境変数を取得し、そこから動的ホスト名を設定します。
- 外部構成のインポート メカニズムは
- systemd では、これは
systemdのコードに組み込まれている初期化アクションです。 サービス管理が開始される前に実行されます。systemdプログラム自体が行き、/etc/hostnameを読み取ります (そして/proc/cmdlineも 、しかしそうではない/etc/HOSTNAMEも/etc/default/hostnameも/etc/sysconfig/network) をカーネルに渡します。 - Void Linux には、(のみ)
/etc/hostnameから静的ホスト名を読み取るスタートアップ シェル スクリプトがあります。 、rc.confから読み取られたシェル変数へのフォールバック 、その値から動的ホスト名を設定します。
「ゼロから」システムを構築している場合は、同等のサービスを作成する必要があります。ファイルからホスト名を設定するための BusyBox および ToyBox ツールは hostname -F "${filename}" です。 、したがって、そのコマンドを /etc/hostname に対して実行するサービスを作成する必要があります またはそのようなファイル。
BusyBox には runit のサービス管理ツールセットが付属しており、単純な runit サービスは次のようなものになります:
#!/bin/sh -e exec 2>&1 exec hostname -F /etc/hostname
さらに読む
- レナート・ポエタリング 他(2016)。
hostnamectl. systemd のマニュアル ページ。 Freedesktop.org. - ジョナサン・デ・ボイン・ポラード (2017)。 "
set-dynamic-hostname". ユーザー コマンド マニュアル . nosh ツールセット。ソフトウェア。 - ジョナサン・デ・ボイン・ポラード (2017)。 "
rc.conf融合"。ノッシュ ガイド .ソフトウェア。 - ジョナサン・デ・ボイン・ポラード (2015)。 「外部フォーマット」。 ノッシュ ガイド .ソフトウェア。
- ロブ・ランドリー。
hostname. Toybox コマンド リスト . landley.net. - https://unix.stackexchange.com/a/12832/5132
このシステムをゼロから構築しているのに、ホスト名がどこに設定されているかを尋ねていますか?
簡単な答えは、そうではないということです。現在のホスト名はカーネル内に保存され、ほとんどのカーネルと同様に、デフォルトではファイルを読み取りません。
何か システムの起動時に、(選択した) 構成ファイルを読み取り、カーネルのホスト名を設定する必要があります。これはすべてのスタートアップで発生する必要があります。
make menuconfig から変更できます カーネルを構築するとき。