カーネルモジュールを含むファイルが呼び出されているようです.o
。少なくとも似たようなチュートリアルを見るとそう思った。これ。しかし、私のDebian squeezeボックスにはファイル名があります.ko
。
.o
ファイルが呼び出されるかどうかは、ディストリビューション(またはそのバージョン)によって異なりますか?.ko
それともほぼ同じですか?
答え1
次の答えが見つかりました。ここ:
簡単に言えば、.koファイルはカーネルに必要ないくつかのカーネル自動生成データ構造に関連付けられたオブジェクトファイルです。
.o ファイルはモジュールのオブジェクトファイルです。つまり、cファイルをコンパイルした結果です。次に、カーネルビルドシステムは、カーネルモジュールを記述するいくつかのデータ構造(your_module_kmod.cという名前)を含む別のCファイルを自動的に生成し、このCファイルを別のオブジェクトファイルにコンパイルし、それを使用してオブジェクトファイルをビルドします。 .koファイルです。
カーネルモジュールのロードを担当するカーネルの動的リンカーは、カーネルが.koファイルに入れるkmodオブジェクトからデータ構造を見つけることを期待しています。このオブジェクトがないと、カーネルモジュールをロードできません。
答え2
これは古いハウトゥ(チュートリアル)のようです。実際には2005年に作成されました。 Linuxカーネルが2.4.xだったとき、モジュールの拡張子は.oでしたが、2.6では.koになりました。