CentOS 5.5 でも、5.4 に引き続き asix.ko モジュールが壊れているようで、インタフェースとしては認識するもののパケットを受信することができません。 対策として、ASIX からリリースされている公式のドライバをインストールします。 また、CentOS の kernel-headers に付属の usbnet.h が(何故か)空ファイルなので、こちらも手動で持ってくる必要があるようです。
以下、全部コピー & ペーストすれば動きます。# ASIX AX88178 Driver - http://www.asix.com.tw/download.php?sub=driverdetail&PItemID=84 DRIVER_NAME=AX88772A_760_772_178_LINUX2.6.31_Driver_v2.5.0_Source KERNEL_VERSION=linux-2.6.18
mkdir -p /usr/local/src/ax88178 cd /usr/local/src/ax88178 wget "http://www.asix.com.tw/FrootAttach/driver/${DRIVER_NAME}.zip" unzip ${DRIVER_NAME}.zip cd ${DRIVER_NAME}
wget "http://www.jp.kernel.org/pub/linux/kernel/v2.6/${KERNEL_VERSION}.tar.bz2" tar xjfo ${KERNEL_VERSION}.tar.bz2 ${KERNEL_VERSION}/drivers/usb/net/usbnet.h mv ${KERNEL_VERSION}/drivers/usb/net/usbnet.h . rm ${KERNEL_VERSION} -rf
cp -a asix.c asix.c.orig patch << '_EOF_' --- asix.c.orig 2008-11-06 18:17:36.000000000 +0900 +++ asix.c 2009-12-16 16:18:44.000000000 +0900 @@ -40,16 +40,16 @@ #include <linux/crc32.h>
#include "asix.h" -//#include "usbnet.h" -#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,22) -#include <../drivers/usb/net/usbnet.h> -#else -# if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,25) -#include <../drivers/net/usb/usbnet.h> -#else -#include <linux/usb/usbnet.h> -#endif -#endif +#include "usbnet.h" +//#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,22) +//#include <../drivers/usb/net/usbnet.h> +//#else +//# if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,25) +//#include <../drivers/net/usb/usbnet.h> +//#else +//#include <linux/usb/usbnet.h> +//#endif +//#endif
/* ASIX AX8817X based USB 2.0 Ethernet Devices */ _EOF_
make rmmod asix make install modprobe asix カーネルをアップデートすると今回コンパイルした asix.ko は使えなくなりますので、yum で kernel パッケージを更新しても grub.conf の default を現在使用している kernel のままにする設定をしておきます。これは /etc/sysconfig/kernel ファイルの UPDATEDEFAULT パラメータを yes から no に変更するだけです。 本来であれば weak-module にしたいのですが、CentOS 自体に(壊れた) asix.ko が含まれているため、weak-update することができません。なにかうまい方法あれば教えてください。
|