Sceneries through the lenses

その場の気分でもやっと投稿していくブログ。内容はころころ変わります…(汗。

USB Gigabit ドライバオートアップデート on CentOS

2009-04-23 21:48:46 | OSS/Programming
某所に(JA) USB-Gigabit on CentOS 5.2という記事を書いた。
これは自鯖の話で、Athlon 64ノートPCにUSB-Gigabit Ethernetを接続していたり。
CentOS 5のカーネルは 2.6.18 のため、ドライバが対応していないので、
2.6.19から取り込むという苦肉の策。
バッファロー製品のデバイス番号が異なるので、別途改造して追加。

ただ、某所の内容では手動ですべてを行う必要があるので、
下記のようなスクリプトを用意してみました。

/sp/usb-giga 以下に 2.6.19 カーネルドライバを展開。
ソースコードは改変済みの状態で、
/sp/usb-giga/install-usb-gigabit.sh
を作成。

#!/bin/bash

echo building usbnet and asix driver
PWD=`pwd`

cd /sp/usb-giga/linux-2.6.19/drivers/usb/net
make -C /lib/modules/`uname -r`/build SUBDIRS=`pwd` modules

echo copy drivers to /lib/module

cp asix.ko usbnet.ko /lib/modules/`uname -r`/kernel/drivers/usb/net/.

echo loading new drivers

modprobe -r asix
modprobe -r usbnet
modprobe asix
modprobe usbnet

cd $PWD

echo done.

ドライバのアップデートは基本的にカーネルバージョンが変わったときのみ
なので、カーネルアップデートをチェックする仕組みを次のようにしてみました。

/sp/auto_update.sh

#!/bin/bash

VERSION_FILE=/sp/version

if [ -n "$VERSION_FILE" ]; then

 echo `uname -r` > $VERSION_FILE

fi

if [ `uname -r` != `cat $VERSION_FILE` ]; then

 echo updating usb-gigabit ethernet driver...
 . /sp/usg-giga/install_usb_gigabit.sh
 echo done / updating usb-gigabit ethernet driver...

else

 echo system requires no action.

fi


Linux の起動時に上記のスクリプトを実行させるために
/etc/rc.local に追加。

# driver update
. /sp/auto_update.sh

通常なら rpm 化してしまえば簡単だと思うのだが、
既存のドライバファイルを上書きしている関係で、依存関係とか
多少面倒そうなので rpm 化しない方法にしてみたわけです。


最新の画像もっと見る

コメントを投稿