ndiswrapper-1.56 と kernel-2.6.35
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のバージョンアップを諦めたのも分かる気がします。利用者としてはとても困りものですが。。。