2013年2月27日水曜日

ThinkPad 560 で BasicLinux を使う

以前ハードディスクを取り出して debian sarge をインストールしていた ThinkPad 560 ですが、その後 進展がありませんでした。システムのインストールでハードディスクを取り出して、他のマシンへ取り付けて作業を行っていたこともあり、この取り外しの作業にうんざりしていました。そこで何かよい方法がないものかと考えていました。

以前からフロッピーディスクで起動させる BG-Rescue Linux を使うことを考えていましたが、これを上手く使いこなすことができませんでした。バージョン 2.0.0 で USB に大々的に対応したのはよいのですが、ThinkPad 560 には USB 端子がありません。そればかりか pcmcia に非対応になってしまってまったく使いものになりませんでした。ずっと古いバージョンの 1.0.0 を使って有線 LAN 経由でデータの受け渡しをしながらシステムのインストールが出来ないものかと考えていました。

この BG-Rescue Linux でいろいろと検索しているとあの懐かしい Keroppy Linux などのことを思いだしましたが、何故かダウンロードサイトへデータがなく動作の検証もすることもできなくなっていました。

そんな中、発見したのが BasicLinux 3.5 です。BG-Rescue Linux と似ていて、二枚のフロッピーディスクで起動をします。BG-Rescue Linux のカーネルが 2.4 系列という古いものですが、BasicLinux はもっと古い 2.2.26 です。古い ThinkPad を操作するのに相応しい古さです(笑)。そこでシステムのインストールなどで使い物になるのか検証してみました。
BasicLinux 公式ウェブサイト
 http://distro.ibiblio.org/baslinux/

一番の心配ごとは pcmcia に対応して有線 LAN で通信ができるかどうかです。その部分を重点的に検証してみました。


まず BasicLinux 3.5 を二枚のフロッピーディスクへインストールします。BasicLinux の公式ウェブサイトからフロッピーバージョンのものをダウンロードします。解凍して得られたイメージデータのうち、DISK1.IMG を dd コマンドを使ってフロッピーディスクへイメージコピーします。そして DISK2.TGZ を通常の FAT フォーマットしたフロッピーディスクへ単純にコピーしてインストール終了です。

BasicLinux の DISK1 を ThinkPad 560 のフロッピードライブへ挿入して電源を投入します。何の問い合わせもなくどんどん起動してゆきます。そして DISK2 を挿入するように求められますので、そこで DISK1 と DISK2 を入れ替えてリターンキーを押して起動を継続します。最終的に下記のような画面で起動を完了します。


CUI モードでも十分に操作できますが、X も用意されていることから X を起動させて GUI で操作することとしました。起動方法は今ではすっかり忘れ去れてしまった感じとなってしまった startx です。すぐに起動オプションの問い合わせがあります。ThinkPad 560 で大切なことは 800x640x15 で起動しても異常な状態となるため、640x480 (default VGA) を選択して起動する必要があります。他にも設定方法があるのかもしれませんが、標準の選択肢のなかから選べるのはこの一つだけです。他の ThinkPad では 800x640x15 でちゃんと X が起動できるため、この ThinkPad 560 の固有の問題のようです。


pcmcia の有線 LAN を使用するためには pcmcia 関連のモジュールを別途読み込む必要がありました。標準ではサポートされていません。
端末上から次の順番で三つのモジュールを insmod コマンドで読み込みました。

/<#> insmod pcmcia_core
/<#> insmod i82365
/<#> insmod ds

補足:/<#> は BasicLinux のプロンプト表示です。

モジュールがちゃんと読み込めたか lsmod コマンドで確認してみましょう。

これで pcmcia が使用できるはずです。次にカードマネージャーを起動させます。

/<#> cardmgr

すると PC スロットへ挿入済みの NE2000 互換の有線 LAN アダプタを認識して使用可能な状態にしてくれます。BasicLinux では NE2000 互換の有線 LAN アダプタしか対応していないようです。

次にネットワークの設定を DHCP 機能を使って設定します。ルーターなどがあれば自動的に設定データを受け取ってネットワークの設定を行ってくれます。使用するコマンドは dhclient ではなく、簡易型の udhcpc コマンドです。

/<#> udhcpc

設定されたホストアドレスや DNS アドレスなどが表示されるはずです。ここで ping コマンドで通信が開通しているか確認をしてみましょう。

ここまでのことが BG-Rescue Linux で出来なかったところです。私の予想では BG-Rescue Linux は CardBus を装備したノートパソコン以降に対応しているのではないかと思っています。

さて有線 LAN で通信が開通したところでデータの受け渡しを実際に行ってみました。

しかし ftp などメジャーなものが使えません。ftpput という簡易型の ftp クライアントがあるくらいでした。トンネル動作も出来ないようで dd コマンドと組み合わせてハードディスクのイメージデータを転送するなどといった技が使えないようです。その他には wget があるぐらいです。

丹念にコマンドを各ディレクトリ(/bin , /sbin , /usr/bin , /usr/sbin など)を探してゆくと nc (netcat) を発見しました。nc は超単純なデータ転送コマンドですがとても強力なものです。これで ThinkPad 560 のハードディスクのイメージデータをサーバーへ転送実験をしてみることとしました。

コマンドは単純なため、操作するのにちょっとしたコツも必要です。まずイメージデータを受け取るサーバー側でも nc コマンドで待ち受けます。以下のように仮想端末上でコマンド実行して、ThinkPad 560 側からデータが送りつけられてくるのを待ちます。

$ nc -l -p 7000 > thinkpad560-hdd.img

(コマンド解説)nc を待ち受けモードとして、ポート番号は7000番にするものです。そしてパイプを使って thinkpad560-hdd.img というファイル名でデータを保管するという内容です。

サーバー側のマシンの準備が終了したら ThinkPad 560 から nc を使ってハードディスクのイメージデータを発信します。

/<#> dd if=/dev/hda | nc 192.168.24.2 7000

(コマンド解説)dd コマンドでハードディスク(/dev/hda)の全体のデータをイメージデータとして吸いだします。それをパイプを使って nc へ受け渡します。nc 側ではサーバーマシンの IP アドレス(192.168.24.2)へポート7000番で送り出す内容となっています。

このコマンドを実行すると有線 LAN を経由してサーバーマシンへ ThinkPad 560 のハードディスクのイメージデータが転送されて、thinkpad560-hdd.img のファイルとして保存されます。

10 BASE-T の有線 LAN アダプタを使っていることもあって一時間以上もの時間を必要としましたが無事データの転送が終了しました。この転送が完全なものであるか検証するために md5sum コマンドを使用しました。

サーバーマシン側
$ md5sum thinkpad560-hdd.img

ThinkPad 560 側
/<#> md5sum /dev/hda

この両者の計算値(ハッシュ)が同一であれば両者のデータが同一であると証明されます。違っていた場合には転送過程で何らかの障害があったものと想像できます。原因を追求して再度転送をしなおす必要があります。

これでデータの転送に時間が掛かってしまいますが、ThinkPad 560 の分解をしないでシステムのインストールの道が開けました。ThinkPad 365X でも BasicLinux 3.5 を使用して同様のデータ転送が出来ることを確認していますので、意外と多くの古いパソコンでこの技が使用出来ると思います。古いノートパソコンではハードディスクの交換が容易ではないものが多いため、BasicLinux を使った nc 転送の技は汎用性が高いものと思っています。

最後に参考として検証したハードディスクのイメージデータを再度 ThinkPad 560 へ書き戻すコマンド例を提示しておきます。

まず最初に ThinkPad 560 側をリッスンモードで立ち上げておきます。

/<#> nc -l -p 7000 | dd of=/dev/hda

ThinkPad 560 の準備が終了したらサーバーマシンから nc を使ってデータを送り返します。

$ nc 192.168.24.3 7000 < thinkpad560-hdd.img

ThinkPad 560 の IP アドレスが 192.168.24.3 であった時の事例です。ifconfig コマンドで ThinkPad 560 へ設定されている IP アドレスを確認してください。

0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。