rtl8192cuのドライバをdkmsで自動インストール

前回の記事だけではカーネルの更新があったときにドライバを手動で再コンパイルする必要がある。
そこで、ドライバはdkmsにコンパイルとインストールを任せてしまいたい。

まずRTL819xCU_USB_linux_ v3.3.2_3192.zipをダウンロードしてきて、一度install.shでインストールした。
/usr/src/rtl8192cu-3.3.2_3192.20120103 というディレクトリを作成し、driver/rtl8188C_8192C_8192D_usb_linux_v3.3.2_3192.20120103.tar.gz の中身をそこに展開した。
さらに/usr/src/rtl8192cu-3.3.2_3192.20120103/dkms.confを作成し、

PACKAGE_NAME="rtl8192cu"
PACKAGE_VERSION="3.3.2_3192.20120103"
CLEAN="make clean"
BUILT_MODULE_LOCATION[0]="./"
BUILT_MODULE_NAME[0]="8192cu"
MAKE[0]="cd ${dkms_tree}/rtl8192cu/3.3.2_3192.20120103/build; make KVER=${kernelver} modules"
DEST_MODULE_LOCATION[0]="/kernel/drivers/net/wireless/"
AUTOINSTALL="yes"

と記述した。DEST_MODULE_LOCATIONはinstall.shによるインストール先に合わせてある。

make_drvを読むとMakefileを書き換えているようなのだが、install.shを実行したあとのMakefileとtarボールに入っていたMakefileを比較しても差はなかった。本来はinstall.sh後のMakefileを/usr/src/rtl8192cu-3.3.2_3192.20120103にコピーしたほうが良いと思う。

その後、次のコマンドを実行してdkmsに追加、インストールした。

$ sudo dkms add -m rtl8192cu -v 3.3.2_3192.20120103
$ sudo dkms build -m rtl8192cu -v 3.3.2_3192.20120103
$ sudo dkms install -m rtl8192cu -v 3.3.2_3192.20120103

以上で /lib/modules/$(uname -r)/kernel/drivers/net/wireless/8192cu.ko にカーネルを更新するたびにドライバがインストールされる、はず。