Linuxカーネルを実行するにはファイルシステムが必要ですか?

Linuxカーネルを実行するにはファイルシステムが必要ですか?

私の意見はそうです。外部世界(無許可のプロセッサモード)へのすべての有用な露出は、最初に外部世界で実行されるプロセスが必要なためです。これには、ファイルシステム、さらには一時的なRAM内のファイルシステムも必要です。

他のエンジニアは私の意見に同意しませんが、すべての(私が知らない)状況でそれを証明することはできないようです。

この質問に対する答えは、「実行」の定義によって異なりますか?

ベストアンサー1

カーネルをプログラムのように実行しないので、これはかなり奇妙な問題です。カーネルはプログラムが実行されるプラットフォームです。もちろん、設定と終了コードがありますが、カーネルだけを単独で実行することは不可能です。常にデフォルトの「init」プロセスが必要です。存在しない場合、カーネルパニックが発生します。 init がカーネルを終了しようとするとパニックが発生します。

今日、initプロセスはsystemdに似ています。特に指定しないと、カーネルは、で始まる場所のリストからプログラムを実行しようとします/sbin/init。ここで初期化パラメータを参照してください。http://man7.org/linux/man-pages/man7/bootparam.7.html緊急の場合は、を使用してLinuxを起動できますinit=/bin/bash。ただし、実行するファイルシステムで常にファイルを指定する方法に注意してください。

したがって、ファイルシステムなしでカーネルが起動すると、ファイルシステムなしではinitをロードできないため、パニックが発生します。

カーネルの初期化段階により、多少の混乱が発生する可能性があります。初期のRAMディスクはディスクのイメージからロードされ、重要なドライバとインストールスクリプトが含まれています。これはファイルシステムがロードされる前に実行されます。しかし、初期のRAMディスク自体がファイルシステムであることには疑いの余地はありません。初期RAMディスクを呼び出します/init(初期RAMディスクに保存されています)。多くのディストリビューションでは、最終呼び出しはthisです/sbin/init。繰り返しますが、これはファイルシステムがなければ不可能です。

おすすめ記事