試験運用中なLinux備忘録・旧記事

はてなダイアリーで公開していた2007年5月-2015年3月の記事を保存しています。

ディストリのカーネルとそのモジュールを用いつつ、特定のカーネルモジュールのみを置き換える(前半)

PSX-CV02上のPlayStation 2コントローラの振動機能をGNU/Linux上で用いるための試行錯誤(Linux 2.6.31.5時点・第1回)」「PSX-CV02上のPlayStation 2コントローラの振動機能をGNU/Linux上で用いるための試行錯誤(Linux 2.6.31.5時点・第2回)」ではPLANEX USBゲームパッドコンバータ(PS/PS2対応・2ポート) PSX-CV02上のPlayStation 2コントローラの振動機能を用いるために

  • hid
  • hid-pl

という2つのカーネルモジュールを再ビルドし、カーネル自体も一通りのソースをビルドしてカスタムカーネルを作成することになったが、本来はGentooでもない限りはできるだけディストリのカーネルをその設定のままで使うことがトラブル防止の観点から好ましく*1、このような一部のモジュールの置き換えだけであればソース全体の再ビルドには無駄も多い。
そこで、ディストリのカーネルソースパッケージを用いて一部のモジュールだけを置き換えるビルドの仕方をすることにした。
この方法は、ディストリのパッケージとして提供されるカーネルとほとんどのビルド済みモジュールがそのまま利用できるという点でも優れている。
Gentooについては、カーネルは自分でビルド設定を作ってビルドし、モジュールも個別にパッケージとしてビルドして入れていく形のため、本記事の対象からは外れる。

準備

ディストリのカーネルソースが無ければパッケージ(「kernel-source-*」「linux-source」などの名前)としてインストールし、その後、カーネルソースの修正したい箇所を編集/上書き保存しておく。

ビルド

ビルド時にmakeのターゲット名として最終的に出力されるカーネルモジュール(.koファイル)の場所をソースツリーの最上位ディレクトリからの相対パスで指定する。
今回はdrivers/hid/以下に生成されるhid.kohid-pl.koのみを置き換えるということが分かっているため、その2つのパスをターゲットとして指定する。
この他、カーネルの開発パッケージ(後半で扱う)に含まれるディレクトリを用いるための指定も必要で、これを行わないとうまくモジュールが動作しないことがある。

(「ディストリのカーネルとそのモジュールを用いつつ、特定のカーネルモジュールのみを置き換える(後半)」に続く)

関連記事:

使用したバージョン:

  • Linux 2.6.33.5-desktop-2mnb

*1:変にカーネルのビルド設定をいじると、他の人には再現しにくい厄介なトラブルの原因となる可能性があり、設定がディストリのカーネルと同じでもディストリによっては不具合に遭遇することがある