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
から変更できます カーネルを構築するとき。