ラベル カーネルアップデート の投稿を表示しています。 すべての投稿を表示
ラベル カーネルアップデート の投稿を表示しています。 すべての投稿を表示

2010年3月12日金曜日

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

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

注意:
カーネルが2.6.31-21にアップデートされたときに確認したところ、dkmsの設定をやっていると起動時のログに
pt1-drv:disagrees about version of symbol module_layout
というメッセージがでて、PT2が認識されない状態になった。
とりあえずdkmsで適用しないようにしたらちゃんと認識されるようになったから、ドライバの再インストールは手動でやった方がトラブルはなさそうだ。

dkmsを使わなくするには下記のコマンドを実行する。
#sudo dkms add -m pt1 -v d89f0da0a7e4 -all


最新のドライバをダウンロードする。
http://hg.honeyplanet.jp/pt1/archive/tip.tar.bz2

ダウンロードしたファイルを解凍する。
今回は「pt1-d89f0da0a7e4」のディレクトリで解凍された。

「pt1-d89f0da0a7e4/driver/」を/usr/src/pt1-d89f0da0a7e4/にコピーする。

#cp -R pt1-d89f0da0a7e4/driver/ /usr/src/pt1-d89f0da0a7e4/

/usr/src/pt1-d89f0da0a7e4/にdkms.confファイルを作成する。
dkms.confの中身は以下の通り。

PACKAGE_NAME="pt1"
PACKAGE_VERSION="d89f0da0a7e4"
MAKE[0]="make KVER=${kernelver}"
CLEAN[0]="make clean"
BUILT_MODULE_NAME[0]="pt1_drv"
DEST_MODULE_LOCATION[0]="/kernel/drivers/video"
AUTOINSTALL="YES"

PACKAGE_VERSIONにはディレクトリの「-」以降の文字を指定する。今回の場合は「d89f0da0a7e4」となる。

ソースファイルの配置が終わったらdkmsに追加する。

#dkms add -m pt1 -v d89f0da0a7e4
#dkms build -m pt1 -v d89f0da0a7e4
#dkms install -m pt1 -v d89f0da0a7e4


以上で設定終わり。

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ドライバが自動適用される。