2014年2月20日木曜日

DKMSでカーネルモジュールを自動的に作成させる

 さて、昨日記載したHUAWEIのLinuxドライバーですが、今の状態だと新しいカーネルにアップグレードした際はもう一度全部インストールしなおさないとなりません。
 自分でカーネルモジュールのmakeをし、モジュールを既定のフォルダにインストールしてもいいのですが、せっかくDKMSって便利な仕組みがあるので、これを使ったほうがいいですよね。

1.DKMSとは

 DynamicKernelModulesSupportの略で、そのまま翻訳したとおりですね。でもそれでは解説にならないので説明しますと、ソースコードで配布されているカーネルドライバを新しいカーネルのアップデートに追従して自動的に生成してくれる仕組みです。

2.HUAWEIのNDISドライバをdkms化する

基本的には https://wiki.ubuntulinux.jp/UbuntuTips/Others/DkmsHowTo こちらの説明のとおりにやっていくだけです。
 HUAWEIのLinuxドライバの場合、先のinstallスクリプトを見るとdriver/ndis_driver/ndis_src/
がそのままカーネルモジュールをmakeで行う場所になります。このフォルダの中身をそっくりdkmsで指定するフォルダに複写するわけです。
 dkmsのルールに従い、/usr/src配下にディレクトリを作成します。
 今回はパッケージ名をhw_cdc_driver、ドライバーバージョンは4.19.19.00です。
sudo mkdir /usr/src/hw_cdc_driver-4.19.19.00
cp -r driver/ndis_driver/ndis_src/* /usr/src/hw_cdc_driver-4.19.19.00

 しかし、dkmsが動作するにはもう一つ必要なものがあります。dkmsの設定ファル"dkms.conf"です。
 以下に引用で貼り付けますので、そのまま使ってみてください。dkms.confという名前で先に作成したフォルダにそのまま貼付けします。
PACKAGE_NAME="hw_cdc_driver"
PACKAGE_VERSION="4.19.19.00"
CLEAN="make clean"
BUILT_MODULE_LOCATION[0]="src/"
BUILT_MODULE_NAME[0]="hw_cdc_driver"
MAKE[0]="cd ${dkms_tree}/hw_cdc_driver/4.19.19.00/build; make KVER=${kernelver} modules"
DEST_MODULE_LOCATION[0]="/updates/dkms"
AUTOINSTALL="yes"
さて、準備が出来たところで、次からはdkmsのコマンドを入力していきます。まずはこのソースツリーをdkmsに追加します。
sudo dkms add -m hw_cdc_driver -v 4.19.19.00
成功したとメッセージがでたら、ツリーの追加が出来ました。
 次はdkmsで試しにメイクさせてみます。
sudo dkms make -m hw_cdc_driver -v 4.19.19.00
メイクが成功したら、モジュールをインストールしてみます。
sudo dkms install -m hw_cdc_driver -v 4.19.19.00
さて、これだけで後は新しいカーネルにアップデートした際に自動的に追従します。

3.特定のカーネルからモジュールを消す

以下のコマンドで出来ます。
sudo dkms uninstall -m hw_cdc_driver -v 4.19.19.00

4.DKMSから不要になったドライバを削除する

今回このモジュールが不要になった(別なPocketWifiに乗り換え)ので、削除するコマンドを調べました。
sudo dkms remove -m hw_cdc_driver

0 件のコメント:

コメントを投稿