/lib/modulesのルールは何ですか?

/lib/modulesのルールは何ですか?

カーネルヘッダと対話するプログラムを作成しています。ユーザーはヘッダーの場所へのパスを提供できますが、最初にルールに従ってユーザーのコンピューターから既存のカーネルヘッダーを検索できるようにしたいです。これは明らかにディストリビューションとツールによって異なります。技術的には、Linuxは完全にカスタマイズ可能であることを知っていますが、主流のディストリビューションにどのルールが適用されるかを理解しようとしています。

  1. /lib/modules/$versionは誰が、いつ作成しましたか?
  2. /kernelおよび/extraサブディレクトリに加えて、/lib/modulesの構造に関するガイダンスはありますか?
  3. /buildと/sourceは常に/lib/modulesの下にあるべきですか? (両方?)
  4. /buildと/sourceが時々シンボリックリンクであり、時にはそうでないことは許可されますか?
  5. タイトルとソースコードは一緒ですか?ほとんどのディストリビューションでは、カーネルヘッダファイルまたはカーネル開発パッケージを提供することがわかりました。それは何の関係ですか?

ベストアンサー1

  1. 通常make modules_install、ディストリビューションはこれらすべてのモジュールをパッケージ化します。
  2. これはDebian / Ubuntuのように見えます。depmodすべてのサブディレクトリを参照してください。/lib/modules/$version
  3. ソースからインストールされたFedora / RHEL / CentOSまたはLinuxカーネルの場合、答えは「はい」です。
  4. 通常は常にシンボリックリンクです。
  5. ほとんどない。モジュールをビルドするにはカーネル開発ヘッダーが必要で、ほとんどのディストリビューションではカーネルソースをインストールするオプションも提供していません。これはエンドユーザーにとってあまり意味がありません。

ホイールを再発明するのではなく、VirtualBox、NVIDIA、またはVMWareが提供するカーネルモジュールビルドシステムを見てください。数十のディストリビューションで完全にテストされサポートされています。

おすすめ記事