ブログネタ
Linux Tips に参加中!
SourceForge.net: ndiswrapper: Topic: v1.56 compile fails with kernel 2.3.36


準備


ndiswrapperをコンパイルするための環境を用意しましょう。

yum groupinstall 開発ツール

カーネルがPAEな人は、

yum install kernel-PAE-devel


エラー状態


ndiswrapper-1.56がコンパイルエラーになります。
私が試した環境はFedora 14ですが、
おそらくUbuntu 10.10でも同様のエラーが生じるはずです。
ndiswrapper-1.56は、こちらからダウンロードできます。
Firefoxでリンク先を開いた場合、ファイルの解凍ができるので
そのまま[ダウンロード]に展開します。

cd ダウンロード/ndiswrapper-1.56
make

エラーメッセージは以下のように出力されます。

make -C driver
make[1]: ディレクトリ `/home/kenken/ダウンロード/ndiswrapper-1.56/driver' に入ります
make -C /usr/src/kernels/2.6.35.10-74.fc14.i686 M=/home/kenken/ダウンロード/ndiswrapper-1.56/driver
make[2]: ディレクトリ `/usr/src/kernels/2.6.35.10-74.fc14.i686' に入ります
LD /home/kenken/ダウンロード/ndiswrapper-1.56/driver/built-in.o
MKEXPORT /home/kenken/ダウンロード/ndiswrapper-1.56/driver/crt_exports.h
MKEXPORT /home/kenken/ダウンロード/ndiswrapper-1.56/driver/hal_exports.h
MKEXPORT /home/kenken/ダウンロード/ndiswrapper-1.56/driver/ndis_exports.h
MKEXPORT /home/kenken/ダウンロード/ndiswrapper-1.56/driver/ntoskernel_exports.h
MKEXPORT /home/kenken/ダウンロード/ndiswrapper-1.56/driver/ntoskernel_io_exports.h
MKEXPORT /home/kenken/ダウンロード/ndiswrapper-1.56/driver/rtl_exports.h
MKEXPORT /home/kenken/ダウンロード/ndiswrapper-1.56/driver/usb_exports.h
CC [M] /home/kenken/ダウンロード/ndiswrapper-1.56/driver/crt.o
CC [M] /home/kenken/ダウンロード/ndiswrapper-1.56/driver/hal.o
CC [M] /home/kenken/ダウンロード/ndiswrapper-1.56/driver/iw_ndis.o
CC [M] /home/kenken/ダウンロード/ndiswrapper-1.56/driver/loader.o
CC [M] /home/kenken/ダウンロード/ndiswrapper-1.56/driver/ndis.o
CC [M] /home/kenken/ダウンロード/ndiswrapper-1.56/driver/ntoskernel.o
CC [M] /home/kenken/ダウンロード/ndiswrapper-1.56/driver/ntoskernel_io.o
CC [M] /home/kenken/ダウンロード/ndiswrapper-1.56/driver/pe_linker.o
CC [M] /home/kenken/ダウンロード/ndiswrapper-1.56/driver/pnp.o
CC [M] /home/kenken/ダウンロード/ndiswrapper-1.56/driver/proc.o
CC [M] /home/kenken/ダウンロード/ndiswrapper-1.56/driver/rtl.o
CC [M] /home/kenken/ダウンロード/ndiswrapper-1.56/driver/wrapmem.o
CC [M] /home/kenken/ダウンロード/ndiswrapper-1.56/driver/wrapndis.o
/home/kenken/ダウンロード/ndiswrapper-1.56/driver/wrapndis.c: In function ‘set_multicast_list’:
/home/kenken/ダウンロード/ndiswrapper-1.56/driver/wrapndis.c:953:13: error: ‘struct net_device’ has no member named ‘mc_count’
/home/kenken/ダウンロード/ndiswrapper-1.56/driver/wrapndis.c:956:20: error: ‘struct net_device’ has no member named ‘mc_count’
/home/kenken/ダウンロード/ndiswrapper-1.56/driver/wrapndis.c:960:86: error: ‘struct net_device’ has no member named ‘mc_count’
/home/kenken/ダウンロード/ndiswrapper-1.56/driver/wrapndis.c:960:98: 警告: type defaults to ‘int’ in declaration of ‘_min2’
/home/kenken/ダウンロード/ndiswrapper-1.56/driver/wrapndis.c:960:114: error: ‘struct net_device’ has no member named ‘mc_count’
/home/kenken/ダウンロード/ndiswrapper-1.56/driver/wrapndis.c:967:19: error: ‘struct net_device’ has no member named ‘mc_list’
/home/kenken/ダウンロード/ndiswrapper-1.56/driver/wrapndis.c:968:50: error: 不完全型のポインタへの間接参照
/home/kenken/ダウンロード/ndiswrapper-1.56/driver/wrapndis.c:969:14: error: 不完全型のポインタへの間接参照
/home/kenken/ダウンロード/ndiswrapper-1.56/driver/wrapndis.c:971:40: error: 不完全型のポインタへの間接参照
make[3]: *** [/home/kenken/ダウンロード/ndiswrapper-1.56/driver/wrapndis.o] エラー 1
make[2]: *** [_module_/home/kenken/ダウンロード/ndiswrapper-1.56/driver] エラー 2
make[2]: ディレクトリ `/usr/src/kernels/2.6.35.10-74.fc14.i686' から出ます
make[1]: *** [modules] エラー 2
make[1]: ディレクトリ `/home/kenken/ダウンロード/ndiswrapper-1.56/driver' から出ます
make: *** [all] エラー 2


パッチを当てる



このコンパイルエラーを解決するためには、
ndiswrapper-suse.patchndiswrapper-1.56-2.6.35.patchをダウンロードします。
(ダウンロードディレクトリにファイルを置きます。)


cd ~/ダウンロード/ndiswrapper-1.56
patch -Np0 < ../ndiswrapper-suse.patch
patch -Np0 < ../ndiswrapper-1.56-2.6.35.patch


make!!


これでndiswrapperをmake出来るはずです。

make

でmakeしてください。

インストール


ndiswrapperをインストールするには、

su
(管理者権限のパスワードを入力)
make install
cp -R /lib/modules/misc /lib/modules/2.6.35.10-74.fc14.i686
depmod -a

とします。
カーネルのバージョンに気をつけてndiswrapperのモジュールをコピーしてください。

Windowsドライバのインストール


解凍


Windowsドライバのファイルの拡張子が.exeの場合、
lhazipで解凍できます。
(ドライバのファイルのファイル名をfile.exeと仮定します。)

解凍する前に

cd ~/ダウンロード
mkdir win-driver
cd win-driver
mv ~/ダウンロード/file.exe .

としてディレクトリを作っておきましょう。

lhaの場合、
憩いの場さんのlhaのrpmからダウンロードし、そのままパッケージマネージャーでインストールしてください。

lha -x file.exe

で解凍できます。
zipの場合は、

unzip file.exe

とすれば解凍出来ます。

インストール


ndiswrapperでWindowsドライバをインストールするには、
Windowsドライバファイルである拡張子がinfのファイルをndiswrapperにインストールさせます。
(ここで展開されたファイルは、ディレクトリが作られていない場合を想定しています。)


cd ~/ダウンロード/win-driver/
ndiswrapper -i file.inf


設定


次回リナックスが起動するときにndiswrapperを自動で読み込むように
設定します。

ndiswrapper -m


モジュールの起動


インストールしたndiswrapperモジュールを読み込みます。

modprobe ndiswrapper

これで、無線LANが有効になるはずです。

NetworkManager


GNOMEデスクトップの右上のPCのアイコンの形をしたアプレット
クリックして、無線LANアクセスポイントを選択してください。
WEPなど暗号化していれば、解除キーを入力してください。


どうでしょうか?
ndiswrapperの導入はハードルが高いと思われます。
もし、つまずかれたようでしたら気軽にコメントなどで質問してください。

Fedora11スタートアップバイブル
今回利用した無線LANカード corega WLCB-54GT