DKMSはカーネルモジュールのソースパッケージを管理するシステム。これを使うとモジュールのビルド、インストールを自動化できる。これをPT2のDVB版ドライバに適用する。
DKMSのインストール
$ sudo aptitude install dkms
ソースのダウンロード・展開
$ wget http://www.linuxtv.org/hg/v4l-dvb/archive/tip.tar.gz $ tar xvzf tip.tar.gz
ソースのディレクトリは"<パッケージ名>-<バージョン>"という名前にし、/usr/src/以下に配置する。展開された状態で"v4l-dvb-3724e93f7af5"となっているのでそのままコピーした。
/usr/src/以下にソースをコピー
$ sudo cp -r v4l-dvb-3724e93f7af5/ /usr/src/
DKMSにソースパッケージを追加するにはソースディレクトリ内に"dkms.conf"という設定ファイルを作成する必要がある。
dkms.confの作成
$ sudo vi /usr/src/v4l-dvb-3724e93f7af5/dkms.conf #パッケージの名前 PACKAGE_NAME="v4l-dvb" #パッケージのバージョン PACKAGE_VERSION="3724e93f7af5" #中間ファイルの削除コマンド CLEAN="make clean" #ビルドするコマンド MAKE="make KVER=${kernelver}" #モジュールが作成される場所(ソースディレクトリからの相対パス) BUILT_MODULE_LOCATION[0]="v4l" BUILT_MODULE_LOCATION[1]="v4l" #作成されるモジュールの名前(拡張子.koは付けない) BUILT_MODULE_NAME=[0]"dvb_core" BUILT_MODULE_NAME=[1]"earth-pt1" #元々のインストール先(/lib/modules/`uname -r`をルートとしたパス) DEST_MODULE_LOCATION[0]="/kernel/drivers/media/dvb/dvb-core/" DEST_MODULE_LOCATION[1]="/kernel/drivers/media/dvb/pt1/" #自動更新の有効化 AUTOINSTALL="YES"
必要なモジュールはearth-pt1のみなのでearth-pt1とdvb-coreのみなので上記のようにした。他のモジュールも入れる場合BUILT_MODULE_LOCATION[2],BUILT_MODULE_NAME[2],DEST_MODULE_LOCATION[2]というようにインデックスを増やして指定する。同じインデックスで組になる。
AUTOINSTALL="YES"としておくとカーネルのアップデート時に自動的にインストールされる。(設定の有無だけを見ているので"NO"としても有効になる)
DEST_MODULE_LOCATIONは元々のモジュールを見つけるためだけに使われ、モジュールはupdates/dkms/以下にインストールされる。Ubuntu10.10以降など新しいディストリビューションでは使われるらしい。
ソースパッケージの追加
$ sudo dkms add -m v4l-dvb -v 3724e93f7af5
モジュールのビルド
$ sudo dkms build -m v4l-dvb -v 3724e93f7af5
モジュールのインストール
$ sudo dkms install -m v4l-dvb -v 3724e93f7af5
インストールされたモジュールの確認
$ sudo modprobe -l |grep earth-pt1.ko updates/dkms/earth-pt1.ko
モジュールのアンインストール
$ sudo dkms uninstall -m v4l-dvb -v 3724e93f7af5
ソースパッケージの登録削除
$ sudo dkms remove -m v4l-dvb -v 3724e93f7af5 --all
自動インストールの動作を確認するには次のコマンドを使う。
$ sudo /usr/lib/dkms/dkms_autoinstaller start
追記:アンインストールの記述間違いを修正
2012/03/30追記: earth-pt1のモジュールが動作しなかったのでdvb-coreもdkms.confに追加。
2012/05/11追記: 上手く動かなかったのでdkms.confにBUILT_MODULE_LOCATION[1]を追加。(動作確認済み)
takaaki 2月 4th, 2012