読者です 読者をやめる 読者になる 読者になる

ソフトウェアエンジニア現役続行

雑多なことを綴ります

ndiswrapper-1.56 と kernel-2.6.35

Linux

ndiswrapperはカーネルが上がるたびに自分で再コンパイルして、カーネルモジュールをインストールしなくてはなりません。

fedora14が出たので、13から上げてみました。kernelのバージョンは2.6.35です。構造体のメンバーが変わったようで、コンパイルでエラーになりました。現時点でndiswrapperの最新バージョンは1.56です。


$ make
wrapndis.c: In function ‘set_multicast_list’:
wrapndis.c:953: error: ‘struct net_device’ has no member named ‘mc_count’
wrapndis.c:956: error: ‘struct net_device’ has no member named ‘mc_count’
wrapndis.c:960: error: ‘struct net_device’ has no member named ‘mc_count’
wrapndis.c:960: warning: type defaults to ‘int’ in declaration of ‘_min2’
wrapndis.c:960: error: ‘struct net_device’ has no member named ‘mc_count’
wrapndis.c:967: error: ‘struct net_device’ has no member named ‘mc_list’
wrapndis.c:968: error: dereferencing pointer to incomplete type
wrapndis.c:969: error: dereferencing pointer to incomplete type
wrapndis.c:971: error: dereferencing pointer to incomplete type

インターネットで調べたところ、既知の問題らしく、すでにパッチは発行されていました。
SourceForge.net: ndiswrapper: Detail: 3034422 - 2.6.35 compatible
Attached Fileのところからパッチをダウンロードできます。

ダウンロードしたら、次のようにしてパッチを適用すれば、コンパイルが通るようになります。


$ patch -p0 < 2.6.35.patch

デバイスドライバは、カーネルのバージョンが上がるたびに追随しなくてはならないので大変ですね。シャープ社がIS01のAndroid OSのバージョンアップを諦めたのも分かる気がします。利用者としてはとても困りものですが。。。

KDDIが「IS01」のOSアップデート打ち切り決定、「実現は不可能」という結論に - GIGAZINE