私は現在「How Linux Works」という本を読んでいますが、第5章ではLinuxパラメータについて説明します。好奇心からブート時にインストールされたカーネルにどのパラメータが渡されるかを見始め、次の事実を発見しました。
BOOT_IMAGE=/boot/vmlinuz-3.16.0-4-amd64
私はこのパラメータの説明を見つけるためにオンラインで検索しましたが、成功しませんでした。誰かが私がより多くの情報を見つけたり、BOOT_IMAGE
これが何であるかを説明したりする正しい方向を教えてもらえますか? 1つの注意点は、リモートDebianサーバーを実行していることです。おそらく、Xenはサービス自体が仮想化されていることを知っています。これがXenとXenがインスタンスを起動する方法に関連していますか?
修正する:vmlinuz-3.16.0-4-amd64
それで、調査中にそれがカーネルイメージであることがわかりました。私もman bootparam
それを読んで、次のように言いました。
ほとんどのソートはlinux / init / main.cで行われます。まず、カーネルは、パラメータが特別なパラメータ「root =」、「nfsroot =」、「nfsaddrs =」、「ro」、「rw」、「debug」、または「init」のいずれかであることを確認します。これらの特殊パラメータの意味については後述します。
上記のセッター関数で許可されていない「foo = bar」形式のすべての項目は、設定する環境変数として解釈されます。 (無駄ですか?)例は、「TERM = vt100」をブートパラメータとして使用することです。
カーネルから取得できず、環境変数として解釈されなかった残りの引数は通常、initプログラムであるプロセス1に渡されます。 initプロセスに渡される最も一般的なパラメータは「single」という単語です。これにより、init にすべての一般的なデーモンを起動するのではなく、シングルユーザーモードでコンピュータを起動するように指示します。システムにインストールされているinitバージョンのマニュアルページを確認して、どのパラメータが許可されているかを確認してください。
実行すると、systemctl show-environment
次の内容が表示されます。
[root@localhost ~]# systemctl show-environment
BOOT_IMAGE=/boot/vmlinuz-3.16.0-4-amd64
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
LANG=en_US.UTF-8
したがって、起動したLinuxイメージの場所をパラメータとして渡すようです。残りの唯一の質問は、どのプロセスがこの環境変数を使用し、その理由は何ですか?
答え1
~によるとhttp://homepage.smc.edu/morgan_david/cs40/lilo-readme.txt:
LILO always passes the string BOOT_IMAGE=<name> to the kernel, where
<name> is the name by which the kernel is identified (e.g. the label). This
variable can be used in /etc/rc to select a different behaviour, depending
on the kernel.
したがって、これはラベル(または他のブートローダのカーネルファイル名)に基づいてブートスクリプトの動作を選択的に区別する方法です(または一部のシステムでは残ります)。init
この変数はスクリプトに渡すことができます。