ディストリのカーネルとそのモジュールを用いつつ、特定のカーネルモジュールのみを置き換える(前半)
「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.koとhid-pl.koのみを置き換えるということが分かっているため、その2つのパスをターゲットとして指定する。
この他、カーネルの開発パッケージ(後半で扱う)に含まれるディレクトリを用いるための指定も必要で、これを行わないとうまくモジュールが動作しないことがある。
(「ディストリのカーネルとそのモジュールを用いつつ、特定のカーネルモジュールのみを置き換える(後半)」に続く)
関連記事:
- ccacheで再コンパイル処理を高速化
- Linuxカーネル(2.6系)のビルドの流れ
- Mandriva Linux 2010.0のカーネルの再ビルドに関するメモ(前半)
- Mandriva Linux 2010.0のカーネルの再ビルドに関するメモ(後半)
- PSX-CV02上のPlayStation 2コントローラの振動機能をGNU/Linux上で用いるための試行錯誤(Linux 2.6.31.5時点・第1回)
- PSX-CV02上のPlayStation 2コントローラの振動機能をGNU/Linux上で用いるための試行錯誤(Linux 2.6.31.5時点・第2回)
- ディストリのカーネルとそのモジュールを用いつつ、特定のカーネルモジュールのみを置き換える(後半)
使用したバージョン:
- Linux 2.6.33.5-desktop-2mnb