適当な配置と大きさのキーボード、適当な重さ、適当なバッテリの持ち。 ThinkPad X40は、特別に尖った部分はないが、 使っててまあ悪くないと思う程度に良いマシンです。
このX40にLinuxも入れて、そこそこ使えるようなったので、 その方法を備忘録的に記録しておこうというのが、 このページの目的です。
まず、私が12月末に買ったX40は、HDDの容量が20GBしかない上に、 4-5GBほどリカバリ用の領域に取られているため、 残りの15GB程ではWindowsXPとLinuxのデュアルブートには厳しいものがあった。
そこで、IBMのショッピングサイトで 「40Gミニディスク・パック(09N4283)」(35千円ほど)を買い、 これと交換することにした。 また、同時にIBMの BIOSドライバーサービスセンターより リカバリーCD(6千円)を購入し、再インストールに備えた。
まずWindowsのリカバリから始めることにした。 せっかくのHDD領域が減るので、D2Dは使わないことにした。
購入したリカバリーCDからBootする。 私は、「これdo台」に接続したDVD-ROMドライブを利用した。 (X40は普通のUSB-CDドライブからでもブートできるようだ。 またリカバリーCDもUSB-CDドライブに対応している。)
Linuxを入れようと思うのなら、このときリカバリのプロセスの前に、 パーティションを切っておく必要がある。さもないと、 リカバリのプロセスではパーティションについてなにも聞かれないので、 ディスク全てをWindowsに使用されてしまう。 私は、Linux CDブートの途中でCtrl-Cを押すことで、 (RAMDISKの)コマンドのみのモードに入り、 そこのfdiskコマンドでパーティションを切った。 多少警告メッセージは出たがあまり気にせず、 Windows用の基本パーティションに20G、 Linux用に拡張パーティションを残り全部とした。 (Linux用のパーティションは後でまた切り直すことにした) HDD内にリカバリ用の領域は取らないことにした。 (パーティションに割り当てていない領域は0にした)
パーティションを切った後の、リカバリは普通に進む。 ただし、時間は異様に掛かった。たぶん4時間ぐらいではないかと思う。 見ていると、パッチを一つ一つ当てている。 ディスクイメージを用意すれば良いのにと思ってしまう。
リカバリ後は、WindowsUpdateと「ThinkPadソフトウェア導入支援」というソフトで、 アップデートする。ここの辺りは、楽でいいなと思う。
とりあえず、慣れているVineLinuxの2.6r4をインストールした。
インストールそのものは、 リカバリのときと同じ「これdo台」でCD-ROMブートし、 さくさく進む。 とりあえず、先ほどの拡張パーティションを切り直し、 12G程を「/」(ext3)とし、1Gをswapにして、 残りは後で考えることにする。 インストールするパッケージは適当。 といっても、開発キットやカーネルソースは必要になるので、 必ず入れておきましょう。 Xの設定も、インストーラが提示したものそのまま。 liloもMBRに入れて問題なし(D2Dを使わないから)。 PCカードスロットも問題なし。 USBもOK。
再起動すると、Linuxが立ち上がる。 私はインストール時に、Windowsのブートの方を忘れていたため、 ここでlilo.confに書き加え、liloを実行して、 デュアルブートできるようにした。
VineLinuxは最新を追い続けるものではないため、 そのままでは利用できないデバイスがいくつか出てくる。 そのための調整などをここに書いておく。
とりあえず、ネットワークを認識しないと何にもできないので、 PCMCIAの無線LANカードを差し、apt-get updateとapt-get upgradeする。
X40のEtherはIntel製で、e1000の類である。 但し、デスクトップのものとはPCIの型番が異なる。
カーネルのソースを見てみると、 バージョン2.4.24辺りではこの型番に対応しているようであるが、 VineLinux2.6r4のカーネルは2.4.22のため認識できない。そこで、 インテルのLinux用ドライバのところから、 e1000基本ドライバをクリックし、良さそうなファイルを持ってくる。 私の場合、e1000-5.2.30.1.tar.gzが良さそうだったので、 これを持ってきた。 (ネットワークが使えないので、 ファイルを持ってくるのに工夫が要る。 私はPCMCIAの無線LANカードを差して使った。)
次にターミナル上で「rpm -tb e1000-5.2.30.1.tar.gz」として、 rpmパッケージを作成する。 すると、~/rpm/RPMS/i386/ディレクトリに、e1000-5.2.30.1-1.i386.rpmが できているので、これを「rpm -ivh e1000-5.2.30.1-1.i386.rpm」として、 インストールする。
最近のものだと、何かうまく行かないことがあるかも知れない。 そのときは、「tar zxf e1000-5.2.39.tar.gz e1000-5.2.39/e1000.spec」 として、specファイルだけ取り出した後、 tar.gzファイルを~/rpm/SOURCES/ディレクトリに、 specファイルを~/rpm/SPECS/ディレクトリに置き、 ~/rpm/SPECS/ディレクトリに移動して、 「rpm -bb e1000.spec」とすれば良い。
あとは同様に、 ~/rpm/RPMS/i386/ディレクトリに、e1000-5.2.39.1.i386.rpmが できているので、これを「rpm -ivh e1000-5.2.39.1.i386.rpm」として、 インストールする。
これで、とりあえずOKの様である。 カーネルが変わる度にコンパイルから始めなければならないが、 そんなに手間でもないだろう。
後は、リブート後Kudzuが勝手に見付けてくれる。 私は、Kudzuの設定の後でnetcfgを使って、もう一度調整した。
2005/7追記:最近のVine3.1のカーネルでは、 この内蔵の有線LANに対応しているので、 上記のような作業は必要ない。
私の買った、a/b/g対応のMiniPCI内蔵無線LANは、atheros製である。
調べると、madwifi というプロジェクトがドライバを作成しているようである。
そこで、
FAQのページ
にあるように、
cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/madwifi co madwifi
として取得したディレクトリmadwifiの中で
make
とし、 ath_hal, driver, wlanのディレクトリで
「ath_hal.o」「wlan.o」「ath_pci.o」等の9つのファイルを得る。
これらは、root権限で
make install
とすることで、/lib/modules/カーネルバージョン/net/ディレクトリの下にインストールされる。
後は、リブート後にkudzuが見付けてくれれるはず。 ただ、何故かeth1として処理しようとするので、 netcfgと言うツールを使って、eth1を削除し、 そのかわりath0を設定すれば良い。
2005/7追記: X40の中でもIntel製の無線LANを内蔵したものは、 上記の内容は全く使えない)
2006/1追記: madwifiもも変わってきており、 現在はcvsではなくsvnを使って最新版をダウンロードするようになっている。 ただ、それよりも http://snapshots.madwifi.org/から ダウンロードするのが簡単だろう。(私はとりあえず、oldの方を使っている) 「make KERNELPATH=/usr/src/linux-2.4.31」「make KERNELPATH=/usr/src/linux-2.4.31 install」の様に、以前の記述とは異なるものとなっている。
もう少し前のバージョンのVine Linuxを SonyのVAIO SR9/Kを使っているときは、 蓋を閉じるだけで、サスペンドできたのだが、 Vine2.6r4とX40だとそうは行かないようだ。
こちらで試した範囲では、 syslogにACPIの記述が間違っているとかいうエラーが出て、 X40でACPIがまともに使用できなかった。
そこで、APMを利用することにする。
具体的には、 起動時のオプションにapm=on acpi=offを付けるため、 /etc/lilo.confの適切な場所に、 「append="apm=on acpi=off"」という記述を付け加えて、 liloをもう一度実行すれば良い。
これだと、蓋を閉じるだけでサスペンド状態になる。
ただ、サスペンドするとUSB周りや、無線LAN周りが凍るので、 モジュールを再ロードする必要がある。 (自動的にやるために/etc/sysconfig/apm-scripts/apmscriptを 書き換えれば良いと思うが、まだやっていない。)
私は、普段WindowMakerを使っている。 APMならバッテリメータとしてwmapmが使えるので、これを利用する。 ACPIに関してはwmacpiがあるようだが、 Vineのパッケージの中にはないようだ。
また試してはいないのだが、 googleあたりで「slmodem」をキーワードに検索を掛けるとよい。 日本語の情報は無いみたい。
Vine3.1には、i855crtというパッケージがある。
これを「apt-get install i855crt」などとしてインストールし、 使いたいときに、 rootの権限で「i855crt on 1024x768@60 swcursor」とすれば、 現在のXの画面がLCDだけでなく、 外部ディスプレイでもみることができるようになる。
googleで探してみたのだが、 USBを介してつながるものはあるのだが、 X40のコントローラに関する情報を見つけることはできなかった。
Vine-4.2では普通に使えた。
人によっては、有用なこともあるかも知れないが、 私の場合徒労であった。
方法は、少し面倒である。
まず、ハイバネーションの領域を用意する。 この領域には少なくとも、以下の条件が必要となる。
私は、Linuxのfdiskでパーティションをきりなおし、 パーティションIDもそこで変更した。
つぎに、IBMのダウンロードサイトから、ThinkPad X31用の 「ハイバネーション ユーティリティ ディスケット II (スタンドアロン ブート)」 を取ってきて、FDを作成する。 そして、作成したFDでブートし、指示にしたがって、 ハイバネーション領域の再セットアップを行う。
あとは、「acpi=off apm=on」で立ち上げたAPMのLinuxで、 Fn-F12を押せばよい。 簡単に試した感じでは、動作に不具合が生じることはなかった。
問題は、ハイバネーションとそこからの復帰に時間が掛ることである。
私のX40のメインメモリは768MBである。 これを、ハイバネーションしようとすると、約1分15秒程度かかる。 逆に、復帰にも約1分20秒程度かかってしまう。 これなら、普通にシャットダウンした方が速いし、 普通に起動してもそんなに時間が長くなるわけではない。 ならば、ディスクを使用する分、無駄というものである。
もちろん、現在行っている仕事をそのまま、 継続できるというのは魅力かも知れない。 しかし、少々の中断ならサスペンドすればよいし、 長時間中断するのなら、ちゃんと保存しておくべきだろう。 すこし考えられるシチュエーションとしては、 仕事途中でのバッテリの交換ぐらいだが、 相当稀なケースと思っている。
256MB程度のメモリの人ならよいかも知れないが、 私の場合時間がかかりすぎて使えないというのが結論である。
赤外線は全く試していない。
photofastと言うところから、 1.8型で日立型のコネクタのSSD(64GB)が出たので、 載せ変えてみた。少し苦労があるので、それを書いてみる。
起動速度は速くなった。 長いこと使ってきて垢が溜っていた可能性もあるとは言え、 Windowsのログイン画面がでるまでの時間が半分以下(20秒程度?)になった。 Linux側も少し早くなったが、Windowsほどではなかった。