2008年1月27日日曜日

Vine Linux 4.2 DNSの名前解決がうまくいかない

Vine Linux 4.2をノートパソコンで動かして、無線LAN経由でインターネット接続しています。これまで、ネームサーバとして無線LANアクセスポイント (Aterm WR7850S)のアドレス192.168.0.1をresolve.confに設定していましたが、名前解決がうまくいく場合と、いかない場合とがあり、原因不明でした。接続している某社のブロードバンド回線ですが、ネームサーバのアドレスが良くわかりません。しかし、良く考えてみると、無線LANア クセスポイントがネームサーバのアドレスを知っているはずですね。というわけで、無線LANアクセスポイントの情報を見てみると、ネームサーバのグローバ ルIPアドレスがやはりありました。これをノートパソコンのresolve.confに書いて問題解決。

2008年1月23日水曜日

Vine4.xでCG-LAPCCTXDを使う

1.はじめに

コレガのPCMCIA LANカード(CG-LAPCCTXD)はVine Linux3.xでは使えたようですが、Vine Linux4.0/4.1/4.2では使えません。Vine Linux4.0/4.1/4.2で使うためにはドライバ(カーネルモジュール)の修正が必要なようです。

2.Linux最新カーネルをダウンロードし修正を確認する

私がダウンロードした時点では、最新カーネルのバージョンは2.6.20でした。カーネルソースツリーの

drivers/net/pcmcia/pcnet_cs.c

を確認すると、1620行あたりに

PCMCIA_DEVICE_PROD_ID12("corega K.K.", "(CG-LAPCCTXD)", 0x5261440f, 0x73ec0d88),

という部分があり、最新カーネルではCG-LAPCCTXDに対応している様子がうかがえます。一方、Vine Linux4.0/4.1がベースとしているカーネル2.6.16ではこのような部分はありません。

もう1つ、これはCG-LAPCCTXDをスロットに挿入すると気づきますが、カーネル2.6.16はCG-LAPCCTXDを無線LANカードとして 誤って認識するようです。このためかカーネル2.6.20では

drivers/net/wireless/hostap/hostap_cs.c

の836行目は

/* PCMCIA_DEVICE_MANF_CARD(0xc00f, 0x0000), conflict with pcnet_cs */

という修正が入っています。

3.Vine Linux4.0/4.1/4.2のカーネルをダウンロードしドライバ(モジュール)を再構築する

必要なことは、Vine Linux4.xのカーネルのダウンロードを行い

  • drivers/net/pcmcia/pcnet_cs.c
  • drivers/net/wireless/hostap/hostap_cs.c
に対して上記のような修正を施し(単にソースファイルを新しいものに置き換える、という方法ではビルドエラーになるようです)、ドライバを再構築すること です。Vineで用いているカーネルのダウンロードと再構築方法については、オンラインマニュアルのここに 詳しい説明があります。基本的には、12.2.2節の「ソースツリーから作成する」に従って行いますが、今回は、カーネル全体の再構築は不要ですので、 makeの部分では

make modules

としておきます。あとはできあがった

  • pcnet_cs.ko
  • hostap_cs.ko
を/lib/modules/2.6.16-0vl68/kernel以下の対応するディレクトリに置くだけですが、上書きする前に、オリジナルの pcnet_cs.koファイルとhostap_cs.koファイルのバックアップコピーを念のためとっておきましょう。

4./etc/pcmcia/configファイルにエントリを追加する

最後に/etc/pcmcia/configファイルにCG-LAPCCTXDのエントリを追加し、パソコンを再起動します。追加するエントリは以下のも のです。

card "corega CG-LAPCCTXD Ethernet"
version "corega K.K.", "(CG-LAPCCTXD)", "(HardwareFirmwareVer.)", "(nothing)"
manfid 0xc00f, 0x0000
bind "pcnet_cs"

cardの行にある"名前"についてはわかりやすいものを適当につけています。versionの行とmanfidの行にある内容については

# /sbin/pccardctl ident

で得られる内容を書いています。


以上で、私が実施した方法を書きましたが、設定や環境によってはこの方法で必ずしもうまくいくとは限りません。あくまで自己責任で行ってください。