カーネルは、配布ごとの初期化の制御をどのように「放棄する」のですか?

カーネルは、配布ごとの初期化の制御をどのように「放棄する」のですか?

私はブート中にカーネルがどのように制御権をサードパーティコードまたはディストリビューションコードに渡すのかを常に疑問に思いました。

成功した起動後に何をすべきかを知らせるカーネルに渡された特別なパラメータがあると疑って、GRUBの設定ファイルを詳しく見ましたが、何も見つかりませんでした。これにより、カーネルがルートパーティションで特定のファイルを探しているようです。

誰もがこの問題について明らかにすることができれば幸いです。ディストリビューションはこれをどのように達成しますか?

ベストアンサー1

ハードコーディングされていますが、カーネルパラメータを使用してデフォルト値を上書きできますinit=...

からinit/main.c

if (execute_command) {
  run_init_process(execute_command);
  printk(KERN_WARNING "Failed to execute %s.  Attempting "
        "defaults...\n", execute_command);
}
run_init_process("/sbin/init");
run_init_process("/etc/init");
run_init_process("/bin/init");
run_init_process("/bin/sh");

panic("No init found.  Try passing init= option to kernel. "
      "See Linux Documentation/init.txt for guidance.");

おすすめ記事