USL-5P で無線 LAN を使えるようにする

[戻る]

前々から書いているように, とある実験のため USL-5P を使おうとしているのですが, そのためには無線 LAN が使えると便利です. っという訳で Buffalo の WLI-USB-KB11 を繋げるようにしたので, その手順を 記しておきます. WLI-USB-KB11 は prism 系なので, 同じ prism 系なら ( この辺で調べると分かると思います) 同様に動くでしょう. ただこんだけ苦労すると予め分かっていたなら 素直にクロスコンパイル環境を構築するべきだった思うのですが, まぁ後知恵でしょう. また, よくわかんないし面倒くさいとがんばってコンパイルしてみましたが, もしかしたらパッケージが転がっているのかもしれませんね.

必要なもの

  1. 前回構築した USB-HDD 環境 (ここにあるようシリアルコンソールを付けているとよりいいでしょう)
  2. ここにあるカーネルソース (kernel-source-2.6.14-sh_landisk.0.1_all.deb)
  3. ここにある 最新版のプロジェクトパッケージ (linux-wlan-ng-0.2.3.tar.gz)

オブジェクト作成手順

以下に思い出しつつ作った手順を記録しますが, 後で生成物を置いておきますので, 必要ない方はここは読み飛ばしてかまいません.

  1. もろもろ必要なパッケージを追加
    # apt-get update
    # apt-get upgrade
    # apt-get install dpkg-dev gcc-3.4 g++-3.4
    # apt-get bzip2
    # ln -s gcc-3.4 gcc
    # ln -s g++-3.4 g++
    
  2. カーネルソースの展開

    # cd [kernel-source-2.6.14-sh_landisk.0.1_all.deb のあるディレクトリ]
    # dpkg-dev -x kernel-source-2.6.14-sh_landisk.0.1_all.deb .
    # cd /usr/src
    # bunzip2 kernel-source-2.6.14-sh.tar.bz2
    # tar xvf kernel-source-2.6.14-sh.tar
    # rm kernel-source-2.6.14-sh.tar
    # ln -s kernel-source-2.6.14-sh linux
    
  3. カーネルソースをいじる

    # cd linux
    # cp cp arch/sh/configs/landisk_defconfig .config
    # make config
    

    Enter キーを連打して終了させます

  4. カーネルを途中まで作る

    # make
    

    と打ちます. 画面にダラダラといろいろ出てきますが, scripts まで終わったら C-c で終了させてかまいません.

  5. prism2_usb の作成 (1)

    # cd /usr/src
    # zcat [linux-wlan-ng-0.2.3.tar.gz を指定] | tar xvf -
    # cd linux-wlan-ng-0.2.3
    # make config
    

    _cs, _plx, _pci は n, _usb は y と答える. また, [Linux source directory] は /usr/src/linux を指定. 残りは Enter を入れてそのまま答える.

    余談ですが, 上記 4 をやってないと以下のようなメッセージで失敗し 悩みます.
    Linux source directory [/lib/modules/2.6.14-sh/build]: /usr/src/linux
    Linux source tree /usr/src/linux is incomplete or missing!
        The kernel header files are present, but not  the full source code.
        See the HOWTO for a list of FTP sites for current kernel sources.
    
    Configuration failed
    

  6. prism2_usb の作成 (2)

    # make
    

    と打つだけなんですが, 始め間違えて ここから, カーネルバージョンが違ってるのに気づかず 2.6.16 のソース (linux-2.6.16-sh-landisk.0.1.tgz) を拾って コンパイルしようとしましたが prism2_usb.c で失敗します.

    これは, このファイルの中に
    #if (LINUX_VERSION_CODE > KERNEL_VERSION(2,4,19))
            .owner = THIS_MODULE,
    #endif
    
    っと書かれた部分がありますから, これをごっちょり消せば大丈夫のようです. 2.6.14 では関係ないので, 実はおもいっきり余談ですが...

この後, make install すれば済むはずですが, どうも上手くいきません. /lib/modules/linux-wlan-ng 配下に p80211.ko と prism2_usb.ko が出来てますから, それを /lib/modules/2.6.14-sh/kernel/drivers/usb/net に移動させ, depmod -a を 実行する必要があるようです. また, 作るのが面倒くさいかたのため, 例によって生成物をここに置いておきます (/ (ルート) で展開した後 depmod -a を実行すれば大丈夫だと思います).

接続試験

続いてうまく動くかどうか接続試験を行います. 適当な DHCP 機能付きのアクセスポイントを用意してください. めんどうくさいので最初は暗号化は無しにしておきます.

  1. WLI-USB-KB11 を挿す
  2. 以下のコマンドを実行
    # /sbin/wlanctl-ng wlan0 lnxreq_ifstate ifstate=enable
    # /sbin/wlanctl-ng wlan0 lnxreq_autojoin ssid=[利用ステーションの ssid] authtype=opensystem
    # /sbin/dhclient wlan0
    

ifconfig で wlan0 が出てるようだったらまず大丈夫です. アクセスポイントの LAN ケーブルを外し, 無線のみにした後 ping が通るか試してみてみるといいでしょう. うまく行かない場合は この辺を参考にするといいでしょう.

自動起動

最後に起動時に自動的に無線 LAN が組み込まれるようにします. やり方は /etc/hotplug/usb/prism2_usb というファイルを作り中に 上記のコマンド群を羅列すればとりあえずできるようです. 暗号化通信とか固定 IP 設定が必要な場合はここのパラメータを適当に変えると 出来ると思います.


2006.4