ThinkPad 600 現役復帰

環境移行は結構大変...


前口上

 ThinkPad 570 を修理に出すことになり、一つの問題が発生しました。それは、メインマシンであるために、日常の作業環境を別の PC に移行する必要がある、ということです。現時点でも、ThinkPad 600 、ThinkPad 560E 、 ThinkPad760EL と、いくつかのバックアップ ThinkPad がありますが、この中のどれを代替機とするか、が問題となりました。

 この中であれば ThinkPad 600 がすぐに決まるのでは?そう考えるのは早計です。というのも、わが ThinkPad 600 は、内蔵バッテリがすっかり経たっており、AC 通電でないと使えない状態にあり、さらに悪いことに、本体の DC プラグが抜けやすくなってしまっているため、ちょっとしたはずみに、電源切れが多発し、データ喪失につながる状態であり、安易に選択できない状態になっていました。

 ThinkPad 560 系や ThinkPad 760EL といった Pentium 系 PC では、その Power から、日常使用している Windows 2000 は少々荷が重い感触があります。かといって、不安定な Windows 9x 系は、通常使用はできないため、これらも困ります。

 いろいろと検討したのですが、やはり ThinkPad 600 を代替機として使用するしか、選択肢はありませんでした。そこで、今回上京したついでに、秋葉原でバッテリを購入することにしました。実はこれまでもバッテリを探してはいたのですが、その値段(\19,800)にためらっていました。このため、Yahoo オークションや eBay なども見てはいたのですが、中古でも充電可能なものは \10,000 を超え、安いものは充電不可のジャンク品と、なかなか良い出物にであえませんでした。IBM のオプション一斉大売り出しでも、ThinkPad 570 用バッテリは \10,000を切る価格(\9,800)なのに、ThinkPad 600 用はリストにさえありませんでした。

 とはいえ、安全に使用できないのはどうにもなりません。2台めは1年も持ちませんでしたが、保証書をなくしてしまったため、保証対象にもなりませんでした。この反省を踏まえ、今回はきちんと保管しておき、万が一の時には対応できるようにしておくことも忘れてはいけませんね。

環境の引き継ぎ

 さて、ThinkPad 570 の環境を ThinkPad 600 へ移行することにはなりましたが、実は問題がありました。それは、OS の問題です。ThinkPad 570 は Windows 2000 & Windows 95 の Dual Boot 環境にしていましたが、ThinkPad 600 は HOLON Linux 3.0 (kernel 2.4.5 & kernel 2.4.17 Dual Selectablel) 環境である、ということです。このため、ThinkPad 570 への環境を ThinkPad 600 へ移行するとなると、Triple Boot 環境の構築となります。かつて、Triple Boot 環境を構築中に LILO(LInux LOader)の存在を忘れてしまい、うっかり起動不能に陥らせてしまったことがあっただけに、なかなか怖いものがあります。

 そこで今回は次の点にポイントをおき、移行作業を行いました。

   1.Linux 環境はいじらない
   2.基本的に LILO + OS Loader で TripleBoot をコントロールする。

 Windows 2000 の OS Loader をメインに使わないのは、OS Loader から Linux を起動させるように設定するのが面倒だ、というごく単純な理由からです。OS Loader から Linux を起動させる方法は二つあり、一つは LILO をファイル化して OS Loader から呼び出させる方式で、もう一つは DOS をいったん起動させて Loadlin で Linux を起動させる方式です。前者は、Linux のツールを使うことで作成できるのですが、私の不勉強でやり方がわからない(^_^;; こと、後者は kernel を更新するたびに、DOS へkernel ファイルを渡す必要があるため、Dual kernel の場合は、DOS 側でも kernel 管理する必要がること、で、いずれにしても面倒です(爆)。

 LILO は2段階の起動ステップを踏みます。一つは、PC 起動時の IPL としての LILO で、もう一つは Boot Loader としての LILO です。PC の起動時は、OS などを読み込む前であるため、HDD 上に記録されているファイルシステムは理解せず、決まったエリアを強制的に読み込ませることで、起動をはじめる様になっています。この決まっているエリアを IPL と呼ばれる部分で、HDD の先頭から物理的に決まっています。なお、IPL については、基本的にはファイルシステムの外側にあるため、簡単には見ることができません(もっとも、簡単に見えるところにあると、うっかり削除してしまう危険性などがあり、それはそれで問題ですが)。

 IPL として読み込まれた LILO は非常に単純で、自分の中に記録されている番地から kernel ファイルを読み込みます。IPL の領域は非常に狭いため、ファイルシステムを理解するようなコードはおけません。このため、再度物理的な場所を直接アクセスするようになっています。ちょっと前の MS-DOS でも、IO.SYS と MSDOS.SYS の位置は決まっており、この場所を動かしてしまうと、起動できなくなりました。現在の Windows 95OSR2 以降は、IPL が拡張されており、第一基本区画内に存在していれば、起動できるようになっています。このような事情があるため、パーティションサイズを変更したりすることで、kernel が実在している物理的位置が変わっていると、起動不能に陥ります。この状態が深刻なのは、2段階目の LILO が読み込めなくなると、MS-DOS なども起動できなくなるため、修復が非常に困難になる、ということです。

 もう一つの問題としては、起動中の OS はコピーできない、ということです。Windows 95 以降の OS は、起動されている OS のファイルについては、アクセス制御を行っており、起動させているとファイルをコピーできない、という問題があります。これは、Windows の動作に非常に大きな影響をもつレジストリがコピーできない、ということを意味します。Windows 95 より前の OS となると MS-DOS となるわけですが、MS-DOS では NTFS ファイルシステムを理解できませんので、NTFS パーティションには手が出ないことになります。そこで、ツールを使います。今回使用したのは、Drive Image 3.0 です。最新版は 5.0 ですが、私のは二つ前のバージョンの 3.0 です。Windows ユーザーは必携のツールであると、私は考えています。さらに Partition Magic があれば完璧ですね。

 Drive Image ------------ HDD バックアップ用イメージ作成ユーティリティ

 Partition Magic --------- パーティション容量変更ユーティリティ

 Drive Image はもともとパーティションをイメージファイルに落とすことで、バックアップを行うユーティリティです。このユーティリティの機能の一つに、パーティションのコピーがあります。パーティション単位にコピーができるため、Melco の HDD などには、サブセットの DriveCopy が添付されていたりします。

 移行作業にあたっては、データを移行する旧 HDD と、移行される新 HDD の二つが必要になります。NotePC で、どうやって2台の HDD を接続するのか?と思うでしょうが、IBM はこのあたりきちんと考えてあります。ThinkPad のオプションには 2nd HDD アダプタと呼ばれる、HDD 専用の増設ツールがあります。さすがに ThinkPad 570 の本体に収納するものではなく、土台といえる Ultrabase に装着することとなります。ThinkPad 570 は ThinkPad 600 とオプションを共通化しているので、すでに購入してあった ThinkPad 600 用の 2nd HDD アダプタを利用可能となっています。

 ThinkPad 600 の HDD を 2nd HDD アダプタにセットして、Ultrabase に装着し、ThinkPad 570 を起動させます。Drive Image は MS-DOS 上で動作するアプリケーションですので、Dual Boot の Windows 95 を、MS-DOS モードで起動させる必要があります。Windows 95 では、「Starting Windows 95... 」のメッセージが表示された直後に F8 キーを押すと、「Windows 95 Starting Menu」が表示されますので、「5. Command Prompt Mode」を選択すると、MS-DOS モードで起動します。

 次に Drive Image を起動させます。インストール先の C:\DI30J に CD し、pqdi コマンドを打てば Drive Image が起動します。Drive Image は Windows ライクな操作を実装している MS-DOS アプリケーションなので、マウス操作が使えると便利です。

 パーティションのコピーは、パーティション毎はもちろんですが、連続したパーティションについては、一括まとめて行えます。今回の場合、ThinkPad 600 側には未使用の第1区画がありましたので、一括コピーはできません。そこで、第一パーティションをまずコピーして、続いて第二・第三・第四パーティションを連続コピーすることとしました。第一パーティションは1GB 以下のため、さほど時間はかかりませんでした。しかし第二・第三・第四パーティションについては、5・6・4GB とあわせて 10GB にも達するため、非常に時間がかかり、約2時間半ほどかかりました。それでも、平均転送率は 115MB/S と比較的高速に行われているため、やむを得ないと思われます。

 パーティションコピーが終わったところで、一度起動確認を行うことにしました。これは、念の為に Linux 環境を壊していないことを確認するためです。もちろん、Linux は問題なく起動し、従来環境を壊すことなく、パーティションのコピーに成功していました。後は、Windows 2000 を起動できるようにするだけです。

LILO から Windows を起動する

 Linux のブートローダーである LILO へ Windows の起動設定を行います。LILO の設定ファイルは /etc/lilo.conf となりますので、vi を使って修正を行います。追加する内容は下記の通りです。

 other=/dev/hda1 label=dos table=/dev/hda

 これで、LILO の起動メニューの中に dos が付記されます。label コマンドの設定を変更することで、Windows や MS-DOS といった形にすることも可能です。設定ファイルを更新した後に /sbin/lilo を実行して、IPL に 2段めとなる LILO の位置を書き込まないと、いつまでも設定が有効になりません。

 さて、LILO への設定もおわったところで作業終了、と思いきや、実はまだ作業が必要なのです。なぜかというと、それはパーティション構成が変わったためです。

 現在のパーティション構成
  第1パーティション -------------------- FAT パーティション(C:)
  第2パーティション -------------------- boot パーティション (/boot)
  第3パーティション -------------------- swap パーティション
  第4パーティション -------------------- ext2 パーティション(/)
  第5パーティション -------------------- NTFS パーティション(D:)
  第6パーティション -------------------- NTFS パーティション(E:)
  第7パーティション -------------------- NTFS パーティション(D:\Program files\VMware\VMs)

 Windows NT 移行、Windows の起動は OS Loader と呼ばれるブートローダーが使用されています。このブートローダーでは、MS-DOS のようなドライブ名による指定ではなく、パーティション番号による設定となっています。OS Loader の設定ファイルは boot.ini というファイルです。中身は単なるテキストファイルですが、システムファイルのため、システム属性が付いており、単純には Explorer などで見つけることはできません。

 boot.ini は 第一基本区画に存在します。システム属性を外せば、表に出てくるため、コマンドで属性を外します。
  C:\>attrib -S -H -R boot.ini
        S:システム属性
        R:読み出し専用(ReadOnly)属性
        H:隠し(Hidden)属性

 boot.ini の中身は下記の通りです。

    [Boot Loader]
    Timeout=5
    Default=multi(0)disk(0)rdisk(0)partition(2)\WINNT
    [Operating Systems]
    multi(0)disk(0)rdisk(0)partition(2)\WINNT="Microsoft Windows 2000 Professional" /fastdetect
    C:\ = "Windows 95 OSR2"

 multi(n) は BIOS 制御下の HDD を示す表記で、基本的には IDE を指します。ただし、IDE が一台以下の場合、SCSI BIOS の制御下にある SCSI HDD が対象となることもあります。n は系列を示します。multi(0) ということは、BIOS 制御の第一系列を示します。この場合、IDEの第一ポート(Primary)を示しています。

 disk(n) は HDD 番号になります。IDE であれば1ポートに2台の HDD が接続されますし、SCSI は7台ほど接続されますので、このようになるようです。disk(0) ということで、Master を示します。

 partition() は想像できますね。区画番号です。 partition(2) ということで第二区画に OS 本体があるとわかります。注意してほしいのですが、multi と disk は 0から始まるのですが、partition は 1 から始まります。

 最後にローカルパスが記述されています。まとめると、BIOS 制御の第一系列の1台目の HDD 、つまりは Primary Master の第2区画の WINNT から起動するように設定されているわけです。

 さて、今回のコピーで、Windows 2000 のシステムパーティションが第2区画から第5区画へ変更となってしまっていますので、ここを変更すれば、Windows 2000 を起動できるようになるはずです。

 boot.ini が通常のファイルと同じ扱いになるため、テキストエディタなどで変更できるようになります。そしてpartition(2) を partition(5) に変更して保存します。保存後、属性を元に戻します。
  C:\>attrib +S +H +R boot.ini

 変更後、PC を再起動して、Windows 2000 を起動できるか、確認してみたところ、きちんと Windows 2000 が起動しました。これで、Windows 95、Windows 2000、 HOLON Linux 、と Triple Boot 環境ができてしまいました。

 複数の OS を一つの PC に導入する multi Boot は、なかなか運用が難しいところがあります。他の OS のことを考えていれば良いのですが、Windows 2000 は他のWindows 系 OSまでしか考えませんし、Windows 95 に至っては、自分だけしか考えていませんので、うっかり再インストールすると、すべての OS を起動不能にしてしまう危険性さえあります。なので、とてもデリケートに扱う必要があります。なので、あまり multi Boot はお薦めできません。


Last Updated 2002/02/10. Copyright Tazoe Kazuya . All rights Reserved 2002