カーネルヘッダと対話するプログラムを作成しています。ユーザーはヘッダーの場所へのパスを提供できますが、最初にルールに従ってユーザーのコンピューターから既存のカーネルヘッダーを検索できるようにしたいです。これは明らかにディストリビューションとツールによって異なります。技術的には、Linuxは完全にカスタマイズ可能であることを知っていますが、主流のディストリビューションにどのルールが適用されるかを理解しようとしています。
- /lib/modules/$versionは誰が、いつ作成しましたか?
- /kernelおよび/extraサブディレクトリに加えて、/lib/modulesの構造に関するガイダンスはありますか?
- /buildと/sourceは常に/lib/modulesの下にあるべきですか? (両方?)
- /buildと/sourceが時々シンボリックリンクであり、時にはそうでないことは許可されますか?
- タイトルとソースコードは一緒ですか?ほとんどのディストリビューションでは、カーネルヘッダファイルまたはカーネル開発パッケージを提供することがわかりました。それは何の関係ですか?
ベストアンサー1
- 通常
make modules_install
、ディストリビューションはこれらすべてのモジュールをパッケージ化します。 - これはDebian / Ubuntuのように見えます。
depmod
すべてのサブディレクトリを参照してください。/lib/modules/$version
- ソースからインストールされたFedora / RHEL / CentOSまたはLinuxカーネルの場合、答えは「はい」です。
- 通常は常にシンボリックリンクです。
- ほとんどない。モジュールをビルドするにはカーネル開発ヘッダーが必要で、ほとんどのディストリビューションではカーネルソースをインストールするオプションも提供していません。これはエンドユーザーにとってあまり意味がありません。
ホイールを再発明するのではなく、VirtualBox、NVIDIA、またはVMWareが提供するカーネルモジュールビルドシステムを見てください。数十のディストリビューションで完全にテストされサポートされています。