/proc/cmdlineのBOOT_IMAGEパラメータは何ですか?

/proc/cmdlineのBOOT_IMAGEパラメータは何ですか?

私は現在「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この変数はスクリプトに渡すことができます。

関連情報