私はそれが記載されているカスタムinitramfsのセットアップに関するチュートリアルを行っていました:
欠落しているのは/ initのみで、initramfsのルートにある実行可能ファイルは、カーネルがロードされるとカーネルによって実行されます。sys-apps / busyboxには完全に機能するシェルが含まれているため、/ initバイナリを単純なシェルスクリプトとして記述することができます(アセンブラーまたはCで記述された複雑なアプリケーションをコンパイルする必要はありません)。
で始まるシェルスクリプトとしてinitの例を示します #!/bin/busybox sh
これまでのところ、initは起動されるメインプロセスであり、他のすべてのユーザー空間プロセスは最終的にinitの子であるという印象を受けていました。ただし、指定された例では、最初のプロセスは、実際にbin/busybox/ sh
は後でinitが生成されます。
これは正しい解釈ですか?たとえば、その時点で使用可能なインタープリターがあれば、Pythonスクリプトなどとしてinitを書くことができますか?
/
薄い空気の中に消えることはありません-それは上にマウントされます(通常、その内容はすべて、メモリを節約する前に削除されます)。それはまだそこに。switch_root
syscallを実行します。switchroot
これは、カーネル2.6.somethingでブートプロセスを変更してinitramfsを必要とするときにカーネル開発者が提供したものです。魔法を行うのはカーネルです。