ThinkPad X40にVine Linuxをインストールする話

適当な配置と大きさのキーボード、適当な重さ、適当なバッテリの持ち。 ThinkPad X40は、特別に尖った部分はないが、 使っててまあ悪くないと思う程度に良いマシンです。

このX40にLinuxも入れて、そこそこ使えるようなったので、 その方法を備忘録的に記録しておこうというのが、 このページの目的です。

持ち物

前振り

まず、私が12月末に買ったX40は、HDDの容量が20GBしかない上に、 4-5GBほどリカバリ用の領域に取られているため、 残りの15GB程ではWindowsXPとLinuxのデュアルブートには厳しいものがあった。

そこで、IBMのショッピングサイトで 「40Gミニディスク・パック(09N4283)」(35千円ほど)を買い、 これと交換することにした。 また、同時にIBMの BIOSドライバーサービスセンターより リカバリーCD(6千円)を購入し、再インストールに備えた。

まずは、Windowsのリカバリ

まず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ソフトウェア導入支援」というソフトで、 アップデートする。ここの辺りは、楽でいいなと思う。

Linuxのインストール

とりあえず、慣れているVineLinuxの2.6r4をインストールした。

インストールそのものは、 リカバリのときと同じ「これdo台」でCD-ROMブートし、 さくさく進む。 とりあえず、先ほどの拡張パーティションを切り直し、 12G程を「/」(ext3)とし、1Gをswapにして、 残りは後で考えることにする。 インストールするパッケージは適当。 といっても、開発キットやカーネルソースは必要になるので、 必ず入れておきましょう。 Xの設定も、インストーラが提示したものそのまま。 liloもMBRに入れて問題なし(D2Dを使わないから)。 PCカードスロットも問題なし。 USBもOK。

再起動すると、Linuxが立ち上がる。 私はインストール時に、Windowsのブートの方を忘れていたため、 ここでlilo.confに書き加え、liloを実行して、 デュアルブートできるようにした。

各種デバイスの認識・調整

VineLinuxは最新を追い続けるものではないため、 そのままでは利用できないデバイスがいくつか出てくる。 そのための調整などをここに書いておく。

  1. 内蔵Giga-Ether
  2. 内蔵無線LAN
  3. サスペンド
  4. バッテリメータ
  5. モデム
  6. 外部ディスプレイ
  7. SDカードスロットが使えない:Vine-4.2では普通に使えた。

とりあえず、ネットワークを認識しないと何にもできないので、 PCMCIAの無線LANカードを差し、apt-get updateとapt-get upgradeする。

内蔵Giga-Ether

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に対応しているので、 上記のような作業は必要ない。

内蔵無線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だけでなく、 外部ディスプレイでもみることができるようになる。

SDカードスロットが使えない。

googleで探してみたのだが、 USBを介してつながるものはあるのだが、 X40のコントローラに関する情報を見つけることはできなかった。

Vine-4.2では普通に使えた。

より便利にするために

ThinkPad Button

「tpb」とてきとうなキーワードを組み合わせて検索をかけると出てくるはず。 やってないからわからない。

APMでハイバネーション

人によっては、有用なこともあるかも知れないが、 私の場合徒労であった。

方法は、少し面倒である。

まず、ハイバネーションの領域を用意する。 この領域には少なくとも、以下の条件が必要となる。

  1. プライマリパーティションであること。
  2. パーティションIDが「A0」であること。
  3. メインメモリ+ビデオメモリ+αの量があること。 (私の場合、とりあえず1200MBほど用意した)
  4. なんか(BIOSメーカphoenixの)専用の形式であること。

私は、Linuxのfdiskでパーティションをきりなおし、 パーティションIDもそこで変更した。

つぎに、IBMのダウンロードサイトから、ThinkPad X31用の 「ハイバネーション ユーティリティ ディスケット II (スタンドアロン ブート)」 を取ってきて、FDを作成する。 そして、作成したFDでブートし、指示にしたがって、 ハイバネーション領域の再セットアップを行う。

あとは、「acpi=off apm=on」で立ち上げたAPMのLinuxで、 Fn-F12を押せばよい。 簡単に試した感じでは、動作に不具合が生じることはなかった。

問題は、ハイバネーションとそこからの復帰に時間が掛ることである。

私のX40のメインメモリは768MBである。 これを、ハイバネーションしようとすると、約1分15秒程度かかる。 逆に、復帰にも約1分20秒程度かかってしまう。 これなら、普通にシャットダウンした方が速いし、 普通に起動してもそんなに時間が長くなるわけではない。 ならば、ディスクを使用する分、無駄というものである。

もちろん、現在行っている仕事をそのまま、 継続できるというのは魅力かも知れない。 しかし、少々の中断ならサスペンドすればよいし、 長時間中断するのなら、ちゃんと保存しておくべきだろう。 すこし考えられるシチュエーションとしては、 仕事途中でのバッテリの交換ぐらいだが、 相当稀なケースと思っている。

256MB程度のメモリの人ならよいかも知れないが、 私の場合時間がかかりすぎて使えないというのが結論である。

不明

赤外線は全く試していない。

SSD化(2009年2月)

導入

photofastと言うところから、 1.8型で日立型のコネクタのSSD(64GB)が出たので、 載せ変えてみた。少し苦労があるので、それを書いてみる。

感想

起動速度は速くなった。 長いこと使ってきて垢が溜っていた可能性もあるとは言え、 Windowsのログイン画面がでるまでの時間が半分以下(20秒程度?)になった。 Linux側も少し早くなったが、Windowsほどではなかった。

その他