GNU/Linux >> Linux の 問題 >  >> Linux

`hostname` のデフォルトのファイルは何ですか?

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


Linux
  1. Linux – `hostname`のデフォルトファイルは何ですか?

  2. Linuxでの.bashrcファイルの目的は何ですか

  3. libtool の .la ファイルは何のためのものですか?

  1. 現在の Linux カーネル ソースは何ですか?

  2. 画面のデフォルトのパスワードは何ですか?

  3. デフォルトのファイルマネージャを見つける方法は?

  1. Linux test -a コマンド テストとは何ですか?

  2. 「127.0.1.1:+xxxxx」を指すシンボリックリンクで、プラス文字は何のためのものですか?

  3. i915.modeset=1 とは何ですか?