Linuxカーネルのセキュリティモジュール(特にセキュリティ/IMA)を修正したいと思います。 (このモジュールはカーネルでコンパイルする必要があります)
このモジュールでは、共有ライブラリ(.soファイル)の関数を使用する必要があります。
しかし、どのようにコンパイルするのかわかりません。
共有ライブラリファイルをLinuxカーネルに入れる方法はありますか?
方法がない場合は、理由を教えてもらえますか?
答え1
実際にはできません(共有ライブラリをカーネルまたは一部のカーネルモジュールにリンクします)。カーネルは概念的に別々のプログラムです(したがって、malloc
共有fprintf
ライブラリで最もよく使用されるような低レベルの標準C機能についての知識はありません)。カーネルモジュール(*.ko
ファイル)は、特別なカーネルコードによって特別に構築されロードされます。
また、ユーザー空間コード(ライブラリを含む)は次のものに基づいています。システムコール(に記載システムコール(2))、カーネルコードでは使用できません(カーネルは次のようなためです)。供給システムコールプロセス走るユーザーモード特定のマシンによって)。
ユーザー空間ヘルパープログラムがカーネル(カーネルモジュールなど)と通信することを検討できます。ウェブリンク(7)。おそらく一度見てくださいシステム。
あなたはおそらくもっと読む必要がありますオペレーティングシステムそして読んでください高度なLinuxプログラミングユーザードメインの側面を理解します。
しかし、経験上、システムに追加するカーネルコードの量を制限する必要があります(そしてユーザースペースで作業することを好む)。