私はブート中にカーネルがどのように制御権をサードパーティコードまたはディストリビューションコードに渡すのかを常に疑問に思いました。
成功した起動後に何をすべきかを知らせるカーネルに渡された特別なパラメータがあると疑って、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.");
答え2
Wikipediaには良い内容があります。記事Linux起動プロセスについて
今日は普通ファイルシステムの初期化使用される。