2010年3月12日金曜日

dkmsでカーネルアップデート時にCrystal HDのドライバを自動適用する

カーネルアップデートのときに自動でCrystalHDのドライバを適用できるようにdkmsに設定する。

Packages in “PPA for XBMC SVN BUILDING” : PPA for XBMC SVN BUILDING : “XBMC SVN BUILDING” teamからダウンロードできるドライバのMakefileだとカーネルモジュールのディレクトリを直接指定しているので、dkmsで自動適用できないんじゃないかと思っていたのだが、グーグルで検索したところdkms用CrystalHDドライバのファイルがあった。

RPM Search Mandriva 2009 dkms-crystalhd-0-0.20100120.1mdv2009.1.i586.rpm
downloadからRPMパッケージをダウンロードして書庫マネージャで解凍する。

XBMCのCrystalHDドライバとRPMパッケージのCrystalHDドライバのdiff結果は下記の通り。


# diff -r ./driver/ ./usr/src/crystalhd-0-0.20100120.1mdv2009.1/driver/
./driver/linuxだけに発見: .crystalhd.ko.cmd
./driver/linuxだけに発見: .crystalhd.mod.o.cmd
./driver/linuxだけに発見: .crystalhd.o.cmd
./driver/linuxだけに発見: .crystalhd_cmds.o.cmd
./driver/linuxだけに発見: .crystalhd_hw.o.cmd
./driver/linuxだけに発見: .crystalhd_lnx.o.cmd
./driver/linuxだけに発見: .crystalhd_misc.o.cmd
./driver/linuxだけに発見: .gitignore
./driver/linuxだけに発見: .tmp_versions
./driver/linuxだけに発見: 20-crystalhd.rules
diff -r ./driver/linux/Makefile ./usr/src/crystalhd-0-0.20100120.1mdv2009.1/driver/linux/Makefile
5,6c5
< CRYSTALHD_ROOT = /root/crystalhd-0.1.orig/driver/linux
< KDIR = /lib/modules/2.6.31-20-generic/build
---
> KDIR = @KERN_DIR@
9c8
< INCLUDES = -I$(KDIR)/include -I$(CRYSTALHD_ROOT)/../../include -I$(CRYSTALHD_ROOT)/../../include/link
---
> INCLUDES = -I$(KDIR)/include -I$(src)/../../include -I$(src)/../../include/link
./driver/linuxだけに発見: Makefile.in
./driver/linuxだけに発見: Module.markers
./driver/linuxだけに発見: Module.symvers
./driver/linuxだけに発見: autom4te.cache
./driver/linuxだけに発見: bcm_70012_dev.sh
./driver/linuxだけに発見: bcm_70012_run.sh
./driver/linuxだけに発見: config.log
./driver/linuxだけに発見: config.status
./driver/linuxだけに発見: configure
./driver/linuxだけに発見: configure.ac
./driver/linuxだけに発見: crystalhd.ko
./driver/linuxだけに発見: crystalhd.mod.c
./driver/linuxだけに発見: crystalhd.mod.o
./driver/linuxだけに発見: crystalhd.o
./driver/linuxだけに発見: crystalhd_cmds.o
./driver/linuxだけに発見: crystalhd_hw.o
./driver/linuxだけに発見: crystalhd_lnx.o
./driver/linuxだけに発見: crystalhd_misc.o
./driver/linuxだけに発見: modules.order

# diff -r ./include/./usr/src/crystalhd-0-0.20100120.1mdv2009.1/include/
diff -r ./include/bc_dts_types.h ./usr/src/crystalhd-0-0.20100120.1mdv2009.1/include/bc_dts_types.h
86,87d85
< #define TEXT
<
/home/daisuke/src/usr/src/crystalhd-0-0.20100120.1mdv2009.1/include/だけに発見: bc_dts_types.h.0001


コンパイル済みのオブジェクトファイル以外の違いはdriverディレクトリのMakefileのカーネルモジュールディレクトリ指定部分とinclude指定部分、includeディレクトリのbc_dts_types.h、bc_dts_types.h.0001くらい。

RPMパッケージをそのまま使っても問題なさそうなのでcrystalhd-0-0.20100120.1mdv2009.1を/usr/src/にコピーする。


# cp -R crystalhd-0-0.20100120.1mdv2009.1/ /usr/src/


dkmsにcrystalhdを追加する。

#dkms add -m crystalhd -v 0-0.20100120.1mdv2009.1
#dkms build -m crystalhd -v 0-0.20100120.1mdv2009.1
#dkms install -m crystalhd -v 0-0.20100120.1mdv2009.1


以上でカーネルアップデートがあってもCrystalHDドライバが自動適用される。

0 件のコメント: