2003/05/03

X30 Turbolinux 8.0 Workstation の内蔵無線LANを有効にする

最近開発現場では、(本職の話です。)オープンソースの有効活用という声をよく耳にするようになりました。主にサーバーOSやデータベースに対する話で、パソコン を買えばもれなく付いてくるのがXPなわけですからクライアントマシンでむりやり(?)Linuxを使おうと言うことでもないようです。
政府関連の開発では特に話題の出るオープンソース、「これ以上M社やO社を儲けさせてどうする。」といったところでしょうか。
結構早くからUNIX System Vを導入しその昔の「東京大停電」でUNIXのファイルシステムの脆さに痛い目をみた経験がありずっと避けてきたUNIX系での開発ですがどうも このところ避けて通ることができなくなってきました。

サーバーというのはそうしょっちゅう向かい合っているものでもないので自分自身の慣れのため自宅のA31pと持ち歩き用のX30にLinux WorkstationをWindowsとデュアルブートで導入し極力Linuxを使い通す生活(?)をまじめました。

避けていたとはいえUNIX SystemVやSolarisに関して多少なりと開発経験があり何も知らないというわけではないのですがあくまでコマンドベース での話。X Windowは、まったく経験のない世界です。USBやPCMCIA、無線LAN、DVD-RやRWなどというディバイスもまったくわからないことだらけです。

長い前置きですみません。
Linuxに関しては、インターネット上の情報も濃いしパワーユーザーの方々にとっては当たり前のことだったりするかもしれませんが慣れないOSとの格闘?の記録、書き留めておかないともう二度と同じ設定ができない ようなものなので私的マニュアルとして、またThinkPadで遅まきながら?Linuxでも使ってみようかと思っておられる方のためLinux系の話題もすこしHPに残しておくことにしました。

RedHat8.0とTurbolinux8.0をX30に入れて両方を1週間ずつ使ってみてX30にはTurbolinuxを入れて使うことにしました。理由は、電源管理。標準インストールでRed Hatにはバッテリー管理がなく、Turbolinuxではバッテリー残量を示すメータがタスクトレーに表示されたからです。RedHat8.0でもカーネルにacpi-0611、swsusp(acpi-0611対応版)とその他のパッチを当てれば可能らしいのですが ・・・・。因みにRedHat9.0ではしっかり電源管理してくれます。

さて本当の本題ですが・・・・。A^^)
X30内蔵無線LANをどうやって有効にしたら良いかわからずとりあえずサクッと認識してくれた富士通の無線LANカード(HyperLink)を土曜のLinux Cafe、自宅、会社で不自由なく使っていました。でも無線LANモデルにHyperLink差し込んでいると自分の技術レベルを疑われるのではとの恐怖観念が・・・・・。(^^ゞ 
そんなわけで以下は、X30の内蔵無線LANとの格闘の成果?です。

 

X30の内蔵無線LANは、prism2_pciというモジュールを組み込むことで使用可能になります。Turbolinux8には、OS導入時にorinoco_pcioronoco_pci等、例のオリノコ社製用ドライバーがインストールされています。
/lib/modules/2.4.18-9/kernel/drivers/net/wireles
にオブジェクト(orinoco_pci.oorinoco_cs.o)の存在がそれを示します。

(root 権限のログインを前提に進めます。)

たとえば、一時期秋葉原に大量に出回った富士通の無線LANカードであればXのなかからターミナルを開いて

# /sbin/modprobe orinoco_cs 

を実行してモジュールを組み込み、

# /sbin/lsmod を実行してorinoco_csが組み込まれていることを確認します。

# /sbin/ifconfig -a を実行して、NICの名がeth1で登録されているか確認します。
 

起動時にモジュールが組み込まれるようにするなら/etc/modules.confに下記のように書き加えればOKです。

alias eth1 orinoco_cs

メインメニューからTurbolinux、ネットワークコンフィグを実行してeth1の設定します。
(eth0は、有線LANで割り当て済みのはずです。)

/etc/sysconfig/network-scripts/ifcfg-wlan0を直接編集し

DEVICE=eth1

IPADDR=XXX.XXX.XXX.XXX
NETMASK=XXX.XXX.XXX.XXX
NETWORK=XXX.XXX.XXX.XXX
BROADCAST=XXX.XXX.XXX.XXX
ONBOOT=yes
    => 起動時に有効にしないならno です。

を書き込む手もあります。

市販のPCMCIA無線LANカードの多くはOrinocoのドライバーでOKなので上記の設定で使用できるようになります。

 

 



 

 



さてPrism内蔵無線用のドライバーのコンパイル方法です。

今回は、最新のドライバーを入手するためAbsolutevalue Systems (The linux-wlan(tm) Company) http://www.linux-wlan.org/ からダウンロードします。


 

最新は、ftp://ftp.linux-wlan.org/pub/linux-wlan-ng/  linux-wlan-ng-0.2.1-pre3.tar.gz
でしたがこれをmake all するとエラーとなるため pre2 を利用しました。

これを /usr/scr/linux-2.4.18/pcmcia-cs-3.1.34に解凍します。(どこでもよいのですが)


 

tar コマンドで解凍する手もありますが折角優秀なXのGUIがあるのですからデスクトップのホームからファイルマネージャー=>アーカイバ使いましょう。


 

そして、右記の要領でコンパイルします。

 

[root@localhost linux-wlan-ng-0.2.1-pre3]# make config
 

-------------- Linux WLAN Configuration Script -------------

The default responses are correct for most users.

Build Prism2.x PCMCIA Card Services (_cs) driver? (y/n) [y]:

Build Prism2 PLX9052 based PCI (_plx) adapter driver? (y/n) [n]:

Build Prism2.5 native PCI (_pci) driver? (y/n) [n]: y

Build Prism2.5 USB (_usb) driver? (y/n) [n]: y

Linux source directory [/usr/src/linux]: /usr/src/linux-2.4.18

The kernel source tree is version 2.4.18-9.

./Configure: [: -lt: unary operator expected

./Configure: [: -gt: unary operator expected

The current kernel build date is Thu Dec 12 13:07:53 2002.

pcmcia-cs source dir [/usr/src/pcmcia-cs-3.1.34]: /usr/src/linux-2.4.18/pcmcia-cs-3.1.34

Alternate target install root directory on host []:

PCMCIA script directory [/etc/pcmcia]:

Module install directory [/lib/modules/2.4.18-9]:

It looks like you have a System V init file setup.

Prefix for build host compiler? (rarely needed) []:

Build for debugging (see doc/config.debug) (y/n) [n]:

Configuration successful.

[root@localhost linux-wlan-ng-0.2.1-pre3]#

 

 

後は、

#make all
#make install

で完了です。

 

次にモジュールの組み込みを実行します。

#modprobe prism2_pci
#modprobe p80211

モジュールの確認は、
#lsmod

wlan0でNICが登録されているかも確認します。
#ifconfig -a
 

ちょっと考えどころですが無線LANを起動時に有効にさせるかそれとも利用時に手動で有効にするかです。
もし、起動時に有効にするなら/etc/rc.d/rc.localに右の文を追加します。

modprobe prism2_pci
wlanctl-ng wlan0 lnxreq_autojoin ssid=your essid authtype=opensystem
ifup wlan0

X30は、モバイルマシンですから常にアクセスポイントにぶら下がるとは限りません。その場合は、下記のようなシェルを作成します。

#!/bin/bash
/sbin/modprobe prism2_pci
/sbin/modprobe p80211
/sbin/wlanctl-ng wlan0 lnxreq_ifstate ifstate=enable
/sbin/wlanctl-ng wlan0 lnxreq_autojoin ssid=your ssid authtype=opensystem
/sbin/dhclient wlan0

例えばこれをwlan1.shとか名前のFileとして保存。
#chmod 777 wlan1.sh
で実行ファイルにしてください。


 

/etc/sysconfig/network-scripts/ifcfg-wlan0
を右記のように作成、編集します。

#vi /etc/sysconfig/network-scripts/ifcfg-wlan0

DEVICE=wlan0
BOOTPROTO=dhcp
ONBOOT=no

:wq! で保存します。

後、/etc/modules.confに右記を任意の行に追記しましょう。



 

#vi /etc/modules.conf

alias wlan0 prism2_pci

起動方法に関しては、シェル実行ではなく Xのメインメニュー=>Turbolinux=>ネットワークコンフィグを実行して起動させるか、コマンドでturbonetcfgを実行する方法もあります。


 

どういう環境でそうなるのかはわかりませんが、OSの環境によって上記の方法だけですんなり認識しないことがあります。その場合は事前に下記の方法(擬似コンパイル?)をすると良いケースがありました。

 



(1)カーネルのソースコードが存在することを前提とします。



(2)pcmcia-csのソースコードを入手します。



(3)Prizm社の内蔵無線LANドライバーを入手します。



確認方法:
# uname -a
これで現在のバージョンをチェックできます。

# ls -l /usr/src
このコマンドで上記と同じバージョンのソースコードが存在するか調べます。


Turbolinux8.0の Workstation製品版を購入、開発環境でInstallされた場合は、ソースコードも導入されているはずです。WebからDLする場合は、
http://sourceforge.net/project/showfiles.php?group_id=2405
上記URLからDLできます。

現在導入されているpcmcia-csと同じバージョンのソースを入手してください。
 

/usr/src/linux-2.4.18/configs下のkernel-2.4.18-9-i586.configを一つ上位のディレクトリーである/usr/scr/linuz-2.4.18にコピーし .configへリネームします。これで擬似的に自分でカーネルを構成したかのような環境を作ります。
 

root@localhost root]# cd /usr/src/linux-2.4.18/configs

[root@localhost configs]# ls
kernel-2.4.18-9-i586.config kernel-2.4.18-9smp-i586.config
kernel-2.4.18-9BOOT-i586.config kernel-2.4.18-9smp64G-i586.config

[root@localhost configs]# cp kernel-2.4.18-9-i586.config ../

[root@localhost configs]# cd ../

[root@localhost linux-2.4.18]# mv kernel-2.4.18-9-i586.config .config


 

次にpcmcia-csのコンパイルですがここも擬似的なものでよいと思います。今度は、

/usr/src/linux-2.4.18/pcmcia-cs-3.1.34下でmake config を実行します。


 

#cd /usr/src/linux-2.4.18/pcmcia-cs-3.1.34
#make config

です。


 

[root@localhost pcmcia-cs-3.1.34]# make config

-------- Linux PCMCIA Configuration Script --------

The default responses for each question are correct for most users.

Consult the PCMCIA-HOWTO for additional info about each option.

Linux kernel source directory [/usr/src/linux]: /usr/src/linux-2.4.18

The kernel source tree is version 2.4.18-9.

The current kernel build date is Thu Dec 12 13:07:53 2002.

Build 'trusting' versions of card utilities (y/n) [n]:

Include 32-bit (CardBus) card support (y/n) [y]:

Include PnP BIOS resource checking (y/n) [n]:

The PCMCIA drivers need to be compiled to match the kernel they

will be used with, or some or all of the modules may fail to load.

If you are not sure what to do, please consult the PCMCIA-HOWTO.

How would you like to set kernel-specific options?

1 - Read from the currently running kernel
2 - Read from the Linux source tree

Enter option (1-2) [1]:

Module install directory [/lib/modules/2.4.18-9]:

Kernel configuration options:

Kernel-tree PCMCIA support is enabled.
Symmetric multiprocessing support is disabled.
PCI BIOS support is enabled.
Power management (APM) support is enabled.
SCSI support is enabled.
IEEE 1394 (FireWire) support is disabled.
Networking support is enabled.
Radio network interface support is enabled.
Token Ring device support is enabled.
Fast switching is disabled.
Frame Diverter is disabled.
Module version checking is enabled.
Kernel debugging support is disabled.
Preemptive kernel patch is disabled.
/proc filesystem support is enabled.

Maximum physical memory: 1GB

It doesn't look like you are using 'lilo'.
It looks like you have a System V init file setup.


X Window System include files found.
Forms library not installed.
If you wish to build the 'cardinfo' control panel, you need the Forms library and the X Window System include files. See the HOWTO for details.

Configuration successful.

Your kernel is configured with PCMCIA driver support. Therefore,'make all' will compile the PCMCIA utilities but not the drivers.

戻ります