Linuxカーネルを理解すると
実行形式は、 、、およびの
linux_binfmt
3 つのメソッドを本質的に提供するタイプ のオブジェクトによって記述されます。load_binary
load_shlib
core_dump
と
Linux では、ユーザーは独自のカスタム実行形式を登録できます。新しい形式を登録するには、ユーザーは
/proc/sys/fs/binfmt_misc
次の形式の文字列を binfmt_misc 特殊ファイルシステム (通常は にマウント)の登録ファイルに書き込みます。:name:type:offset:string:mask:interpreter:flags
カーネルは、実行可能ファイルがカスタム形式であると判断すると、適切なインタープリター プログラムを開始します。インタプリタ プログラムはユーザー モードで実行され、そのパラメータとして実行可能ファイルのパス名を受け取り、計算を続行します。例として、Java プログラムを含む実行可能ファイルは、 などの Java 仮想マシンによって処理され
/usr/lib/java/bin/java
ます。
これについては言及していませんが、登録されたカスタム実行可能形式も type のオブジェクトによって記述されていますlinux_binfmt
か?
load_binary
はいの場合、カスタム実行可能形式を登録するために、、、load_shlib
およびcore_dump
メソッドを明示的に提供する必要はありません。3 つのメソッドは、登録から暗黙的に作成されますか?
メソッドなし load_binary
で、対応するインタープリターを介して、登録された実行可能形式の実行可能ファイルを実行するためにカーネルが呼び出すメソッドは何ですか?