802.11a/b/g 用 Linux ドライバ。 ThinkPad X31 で内蔵無線 LAN インタフェースを使うのに使用する。
MADWIFI の件もあって、2.4 系にしてあった kernel であるが、Wireless Notebook Laser Mouse 6000 も使えるようにしたいし、2.6 へ遅ればせながら移行するか。
まずは Debian のパッケージ linux-image-2.6.15-1-686 で試す。 いつの間にか kernel-image ではなくて linux-image になっていたりと、おいていかれている感じ。 危ない危ない。
ThinkPad X31 2672-PHJ | |
サスペンド | できない |
X | ATI ドライバ OK |
サウンド | OK |
MADWIFI | 接続できるものの大きなファイルの転送は駄目 |
cpufreqd | OK |
NG。
kernel で APM と ACPI の両方が有効になっているからのようだ。 ACPI を切る必要あり。
OK。
X.Org X server 6.9.0 で ATI ドライバがうまく動かず VESA ドライバの使用を余儀なくされていたのだが、kernel 2.6 では何も問題なく動いた。
NG。
無線 LAN で使っている MADWIFI も既にパッケージがあるのか。 いい世の中になったものだ。
しかも最近は module-assistant で kernel モジュールをパッケージングできるようになっているなんて。
module-assistant prepare module-assistant auto-install madwifi modprobe -a ath_pci
接続はできるものの、一昨年試してみた時と同様 kernel 2.6 だと、大きなファイルの転送が途中で止まってしまう。
あと一歩。
OK。
modprobe speedstep_centrino /etc/init.d/cpufreqd start
やはり、kernel をビルドする必要があるか。
……気がついたら make menuconfig で設定中の画面を前に眠り込んでしまっていた。 明日にもちこし。
ThinkPad X31 用に 2.6.15 の Debian kernel パッケージ構築を行う。 インストールしてある Debian 標準の 2.6.15 のパッケージの設定 /boot/config-2.6.15-1-686 をベースに設定を行いビルド。
#apt-get build-dep linux-image-2.6.15-1-686 #exit $mkdir -p /usr/local/src/linux $cd /usr/local/src/linux $tar jxvf /usr/src/linux-source-2.6.15.tar.bz2 $cd linux-source-2.6.15 $cp /boot/config-2.6.15-1-686 .config $make menuconfig $make-kpkg clean $fakeroot make-kpkg --revision=sebastian.1.0 kernel_image $cd .. $su #dpkg -i linux-image-2.6.15_sebastian.1.0_i386.deb
ブート後 Kernel panic。
標準の設定では IDE 関係がモジュールになっているのを見落していた。もう一度設定を修正してビルドしなおして起動。 Linux を使い始めたころ ext2 をモジュールにして失敗したことがあり、ファイルシステム関連は忘れずチェックするようにしているのだが、IDE 関連はノーチェックだった。
module-assistant prepare module-assistant auto-install madwifi
Linux kernel 2.6.15 で MADWIFI がうまく動かないようなので、NdisWrapper を試してみることにした。 NdisWrapper は、Linux で Windows の NDIS (Network Driver Interface Specification) 無線 LAN ドライバを使えるようにするラッパーモジュールである。
モジュールをインストール:
#apt-get install ndiwrapper-source #module-assistant prepare #module-assistant auto-install ndiswrapper #apt-get install ndiswrapper-source
lspci でコントローラを確認:
#lspci 0000:02:02.0 Ethernet controller: Atheros Communications, Inc. AR5212 802.11abg NIC (rev 01) #lspci -n 0000:02:02.0 0200: 168c:1014 (rev 01)
Lenovo からドライバをダウンロード:
Windows 上で展開してできた WINXP_2K ディレクトリを Linux 上にコピー。
ndiwrapper コマンドでドライバをインストールする:
#cd /path/to/WINXP_2K #ndiwrapper -i NET5211.INF #ndiswrapper -l Installed ndis drivers: net5211 driver present, hardware present #modprobe -a ndiswrapper
wlan0 でインタフェースが作成される。 MADWIFI と同じ無線 LAN 設定で、つながった。
通信も成功。
しかし、やはり大きなファイルの転送が途中で止まってしまう。
うーん、もしかしたらドライバ以外の問題なのだろうか。
Linux kernel を 2.6.15 にして以来、無線 LAN で大きなファイルの転送がすぐに止まてしまうようになったので、ドライバをいろいろ変えてみるなど試行錯誤中。
大きなファイルの転送ができないと必要なファイルのダウンロードもままならないので、昨日の夜有線で接続して作業を行うことにした。
……あれ?
有線でも駄目じゃん。大きなファイル転送できないじゃん。
ThinkPad X31 の内蔵 NIC の方は会社だとうまく動いているし、どうやら自宅内の LAN、あるいは ADSL 接続あたりに問題があるようだ。
確認してみると無線 LAN アクセスポイント経由での PC 間のファイルのやりとりは問題なし。 早く気がつくべきだった。
とすると次の可能性はルータ(RTW65b)か。
Linux kernel 2.4.27 だとうまく通信できているので、そのあたりから調査。 Web を見てみると 2.6.8 から net.ipv4.tcp_default_win_scale がデフォルトで 0 でなくなった事で同様の障害が発生し話題になったようだ。
自分が以前 2.6 系に乗り換えようとしたのもちょうど 2.6.8 だったので、その時に駄目だったのも実はこれが原因だった可能性がある。
echo 0 > /proc/sys/net/ipv4/tcp_default_win_scale
でこの設定が変えられるのだが、2.6.13 以降このオプション自体が無くなっている。
tcp_window_scaling はまだ存在するので、
echo 0 > /proc/sys/net/ipv4/tcp_window_scaling
してみる。
……直った。
MADWIFI も NdisWrapper もシロだったようだ。
そろそろルータ買い換え時なのかなぁ。 YAMAHA で気にいってはいるんだけれど。
朝から ThinkPad X31 の HDD 新しく入れ替えて Debian GNU/Linux sid のインストールを開始。
今日は sarge のネットワークインストール CD イメージからブートしてインストール。 今回はブートドライブにできる「ThinkPad USB ポータブルCD-ROMドライブ」があり、またこのイメージで起動して e1000 が認識できるので楽勝である。
(第1回目は USB FDD + PC カード NIC でインストール、第2回目 は HDD 上のインストーラから GRUB からの起動によるインストールだった)
ヤバイ状態の旧 HDD を USB 外付け HDD ケースに詰めて
を新しい HDD にコピー。
次に環境の復旧。 以下備忘録。
以前作った Linux kernel 2.6.15 deb パッケージをインストールした後 module-assistant で madwifi をインストールするも、ビルドした GCC のバージョンが違ってロードできず。 kernel は GCC 4.0 の時にビルドしたもので、madwifi は現在のバージョンである GCC 4.1 によるビルドであることが問題。
まずは前にビルドした 2.6.15 のソースディレクトリでカーネルパッケージを GCC 4.1 で作りなおしてインストールし、あらためて module-assistant。
module-assistant prepare module-assistant auto-install madwifi
で /etc/network/interfaces を書き戻す。
ここずっと使っていた qmail をこの機会にやめることにした。 Postfix へ。
全体の設定はインストーラに従って設定。
個人設定は、
~/.qmail に
| preline /usr/bin/procmail
として procmail を使っていたので、~/.forward を作って同様に procmail に流すようにする。
"|IFS='' && exec /usr/bin/procmail -f- || exit 75 #naney"
~/.procmailrc は以前のまま。ClamAV と bsfilter でふるいにかけた後、Maildir へ。
以前入れた時は deb が古かったので /usr/local に自前でインストールした。 まずはこれを古い HDD から戻して動作確認後 deb のものに切り替え。
.mew.el の中も
(load "/usr/share/doc/bsfilter/examples/mua/mew4/mew.el")
に変更。
/etc/samba/smb.conf を書き戻す。smbpasswd でパスワード再設定。
とりあえずインストール時の設定で xorg.conf を作る。
Load "freetype"
をコメントアウトして、
Load "xtt"
に変更。
sid は現在 3.5.3 と 3.5.4 混在状態になっているため、依存関係の問題で簡単にはインストールできずてこずった。 kdebase-data と kdelibs-data の 3.5.3 を http://snapshot.debian.net/ からとってきて hold して 3.5.3 系 KDE として各種パッケージをインストール。
skype-beta-1.3.0.30-1_i386.deb をインストール。
一般ユーザ naney の crontab ファイルを再登録。
足りないと気がついた時点で順次インストール。
/etc/auto.master、/etc/auto.misc を書き戻して /etc/init.d/autofs restart。
deb パッケージを公式サイトからダウンロードし、/etc/mt-daapd.conf を書き戻して /etc/init.d/mt-daapd restart
FON ソーシャルルータが届くのを前に、現在の無線 LAN の設定も確認・見直しをしておくことにした。
MADWIFI を最初に使い始めたころはまだ WPA 関連がまだ安定していなかった(と思っていた)ので WEP で運用していたのだが、今はもう問題ないようである。 ということで設定変更。
apt-get install wpasupplicant
既にインストール済みだった
WLA2-G54 の管理画面に Web ブラウザからアクセスして、「無線LANセキュリティ設定」からデータの暗号化 で AES を選び、WPA-PSK に事前共有キーを入力して設定ボタンを押す。
ここで一旦接続が切れる。
現在は ifupdown から直接 WPA 設定をできるようになっているので、/etc/network/interfaces を変更する。
ath0 のエントリを以下のように修正:
iface ath0 inet dhcp wpa-driver madwifi wpa-ap-scan 1 wpa-scan-ssid 1 wpa-ssid <アクセスポイントの ESSID> wpa-psk <事前共有キー>
これで ifup しなおすことで無事接続。
ThinkPad X31 に入れている Debian GNU/Linux sid の Linux kernel を随分アップデートしていなかった(2.6.17 を使用中)。 今日 aufs を入れついでに、一緒に最新(2.6.23)をビルドすることにした。 Debian kernel パッケージ構築は去年の8月以来。
今回は linux-patch-aufs を入れておいて、aufs 用のパッチを当てる。
#apt-get build-dep linux-image-2.6.23-1-686 #apt-get install linux-source-2.6.23 linux-patch-aufs #exit $mkdir -p /usr/local/src/linux $cd /usr/local/src/linux $tar jxvf /usr/src/linux-source-2.6.23.tar.bz2 $cd linux-source-2.6.23 $make menuconfig $make-kpkg clean $fakeroot make-kpkg --added-patches put_filp,lhash,splice,ksize,sysfs_get_dentry --revision=sebastian.1.0 kernel_image $cd .. $su #dpkg -i linux-image-2.6.23_sebastian.1.0_i386.deb
パッチが一部 2.6.22 用で 2.6.23 には当たらなかったが、よしとしておく。 ここで再起動。次に MADWIFI と aufs をインストール。
module-assistant prepare module-assistant auto-install madwifi module-assistant auto-install aufs
いつも入れている shfs も同様に入れようと思ったがこちらはコンパイルエラー。 頻繁に使うわけではないので、とりあえずほっておくことにする。
コンパイルが面倒なのでそろそろ Debian 公式のを使おうかと思ったが、試してみたところ
ということ NG。 やはり自前でビルドしなければならないことを再確認。
ThinkPad X31 に入れている Debian GNU/Linux sid でしばらく Linux kernel 2.6.23 を使っていたが、TrueCrypt 6.1a を入れたら「2.6.23 以下じゃヤバいよ」と表示されたので 2.6.26 にアップデートすることにした。 Debian 標準イメージを入れてみたが、やはり今まで通りサスペンドできないので、今回もビルドしなおし。
#apt-get build-dep linux-image-2.6.26-1-686 #apt-get install linux-source-2.6.26 aufs-source madwifi-source #exit $mkdir -p /usr/local/src/linux $cd /usr/local/src/linux $tar jxvf /usr/src/linux-source-2.6.26.tar.bz2 $cd linux-source-2.6.26 $cp /boot/config-2.6.26-1-686 .config $make menuconfig $make-kpkg clean $fakeroot make-kpkg --initrd --revision=sebastian.1.0 kernel_image $cd .. $su #dpkg -i linux-image-2.6.26_sebastian.1.0_i386.deb
最初は 2.6.23 の時のソースツリーで make menuconfig したのと見比べながら素から設定したのだが起動中 hda のハードウェアの認識(?)で止まってしまった。 なのでとりあえず起動する .config は Debian 標準イメージのものをベースにすることにした。 変更は ACPI を外して APM を追加した程度。
Debian 標準イメージは IDE も ext3 もモジュールになっていて initrd 使わないと起動できないので今回から --initrd を指定してビルドすることにした(一度忘れてビルドして起動したら何度かアチャーしたことのある kernel panic になった)。
再起動。起動後 cpufreqd が動かなかったが、modprobe speedstep-centrino したら今までどおり cpufreqd が立ち上がって省電力化できた。
次に MADWIFI をインストール。こちらも問題なく接続。
#module-assistant prepare #module-assistant auto-install madwifi
aufs は前回の方法で udba=inotify できるモジュールを作成。
TrueCrypt もテストして警告を出さなくなっていることを確認。 火曜日ぐらいから、ちんたら何度かビルドしないしながら昨日ここまで辿りついた。 めでたしめでたし。
しかし Debian 標準イメージの .config 級の設定だとビルドに1回2時間前後だったかかかるようになった(nice 下だけれど)。 トライアンドエラーしはじめるとかなり時間がかかるな。
ここ最近 ThinkPad X31 の Debian GNU/Linux sid が調子が悪い。 いろいろ調査・トライしてみている途中の状態をメモ。
アプリケーションや X の不具合などと重なって unstable 全開だ。
Linux kernel については各種パッケージの更新に追いつけなくなっているようなので、アップデートをかける必要がありそう。
Debian GNU/Linux の標準イメージを使ってみたが、ThinkPad X31 では例によって ACPI では蓋の開閉でサスペンドしない。 APM を使うようにした Debian kernel パッケージ構築が必要。 しかし今年の2月に 2.6.26 をビルドした時(記事)から、いろいろ変更があったようで一筋縄ではいかなかった。 以下は最終的な手順(たぶん)。
#apt-get build-dep linux-image-2.6.30-2-686 #apt-get install linux-source-2.6.30 aufs-source #exit $mkdir -p /usr/local/src/linux $cd /usr/local/src/linux $tar jxvf /usr/src/linux-source-2.6.30.tar.bz2 $tar zxvf /usr/src/aufs.tar.bz $emacs modules modules/aufs/Makefile $cd linux-source-2.6.30 $cp /boot/config-2.6.30-2-686 .config $make menuconfig $make-kpkg clean MODULE_LOC=/usr/local/src/linux/modules fakeroot make-kpkg --initrd --revision=sebastian.1.0 kernel_image modules_image $fakeroot make-kpkg --initrd --revision=sebastian.1.0 kernel_image $cd .. $su #dpkg -i linux-image-2.6.30_sebastian.1.0_i386.deb aufs-modules-2.6.30_0+20090302-3+sebastian.1.0_i386.deb #update-initramfs -c -k 2.6.30 #update-grub
MADWIFI はもはやコンパイルが通らなくなっていた。 試してみたところ ath5k で通信できるようになっているではないか。modprobe ath5k すると wlan0 が使えるようになった(MADWIFI の時は ath0)。
initrd 関係は結構はまった。 最初いつも通りビルドして dpkg した後再起動したのだが、"Unable to mount root fs on unknown-block(0, 0)" が出て先にすすまない。 IDE まわりや ext2、ext3 まわりを M から y にしても駄目。 何度か試しているうちに、 linux-image を dpkg --install した際に実行される update-grub のメッセージで自分で作った Linux kernel だけ initrd 関係の処理がされないことに気が付いた。 自前で update-initramfs したらようやく 2.6.30 が起動するようになった。
2.6.30 にすることで起動時の udev の警告は解消された。 しかしながらサスペンドはまだ駄目。 復帰時にフリーズする。 やはりパワー関係の処理があやしい。今は AC アダプタを外しても KPowersave は気付かない。
もう少しおっかける必要がありそう。
対応できるまではサスペンドできず。毎回起動したりシャットダウンしたりするの面倒くさーい。
Naney (なにい) です。株式会社MIXIで SNS 事業の部長をしています。
※本サイトの内容は個人的見解であり所属組織とは関係ありません。