ウルトラベイ・USBでマルチブート


ThinkPad A31p(2653-H5J)はウルトラベイをふたつ備えたノートです。
ウルトラベイ2000はHDDやCD-ROM、FDDなどのドライブや周辺機器などを接続・収納するものです。
標準でうちのA31pの場合はDVD/CD-RWが右側(ウルトラベイ・プラス)に入っており、左は空です(ただし、FDDが付いてくるので、それを入れた状態が標準と言えるでしょうか)。
このベイはBIOS上から認識されてブート可能な状態になります。従ってFDD、CD、HDD(これは当然ですが)からIDEデバイスとしてブートすることができます。同時にその優先順位は容易に変更することができます。

前振りをしましたが、今回は2ndHDDアダプターと80GのHDD(IC25N080ATMR04-0)を追加してマルチOSを達成しようという目的です。
使用するOSはデフォルトのWindows XP Professional以外に
 ・Windows 98 Second Edition
 ・HDDにコピーしたKNOPPIXのCDイメージ
 ・KNOPPIXを使って導入するDebian(Linux)
の3つです。このうち、CDイメージのKNOPPIXは例外的なのでブートは専用のフロッピーかKNOPPIXのCDで行うつもりです。
また、XPは何もしないで立ち上がるのが理想的。加えて、難しいブートシステムの構築も回避したいという条件のもとで構築を行います。
これらのずうずうしい条件は、A31pの場合は比較的容易な条件になります。この理由はIBMのウルトラベイにあります。

まずWin98SEを導入します。
普通は先にCに98をインストールし、次にNT系OSをインストールして自動的にマルチブート環境にします。
ところが、今回はXPのプリインストール環境です。ただHDを追加する条件なので、これを第一ドライブとして認識させて普通に98をインストールします。ノートではなかなか条件が整えにくいところですが、ベイが2つのA31pではHDを追加してもなおCDかFDを使うことができるので、BIOSからHDの順位を追加したドライブが先になるようにするだけ。これでベイのHDにインストールできます。
私の場合はXPからHDのパーティション(10G、FAT32)を切り、98CDの内容を導入HD(導入パーティション)にコピーし、FDから起動してインストール開始としました。これはDOSがちゃんと80GをCと認識するかの確認も兼ねていました。
この時点で、普通に電源を入れるとXP、BIOSから起動順位を変えることでだけで98にスイッチという環境になりました。

次にKNOPPIXのrootから「knx-hdinstall.ja」を実行。Debianを導入します。
インストール時にパーティションを切りますが、Linux(15G、ext2)とSwap(1G)としました。Linuxをブート可(アクティブ)にしてインストール。最初のインストールでLILOをMBRに書いたのですが、設定ミスか98が立ち上がらない環境になった&XPのHDにLILOが入ったので、復旧後(FIXMBR)のインストールでLILOを入れない構成に。起動ディスクからDebianを起動し、lilo.confを編集しました。
lilo.confですが、重要なのはディスクの優先順位はLILOでは意味が無いということ。XPは常にhda1、98はhdb1と認識されます。このため、「9Xはhda1からしか起動できない」ルールに縛られてLILOから98が(アクティブに戻しても)起動できません。XPとDebianは容易にLILOから立ち上がります。
ここではBIOSに頼らず、hdb1から起動できるlilo.confに書き換えます。98部分のみ書くと
 other = /dev/hdb1
  label = Win98SE
  map-drive = 0x80
   to = 0x81
  map-drive = 0x81
   to = 0x80
とhdaに見せかける処置をしてやるとちゃんと起動できるようになります。これでトリプルブート(LILOはDtoD領域も起動可能と認識するのでクワッド状態)が構築できました。FDとhdbにLILOを導入した構成で運用することにします。
ただ、hdbにLILOを導入する場合、2ndHDDアダプターをどこに入れるかでドライブの識別が問題になります。LILOはhda、hdbという名前からHDの順位を決めてしまいますが、ベイの入れ方のパターンによってはこれが一致しません。
この問題はdiskを指定することで回避できます。左ベイに入れた私の場合は、LILOに
 disk=/dev/hda
   bios=0x80
 disk=/dev/hdb
   bios=0x81
を書き足してBIOS上の入れ替えを吸収させて起動可能にしました。
FDに書き込むLILOはHDの起動順位に影響されないので(diskは)デフォルトで使用できます。

最後はXPから拡張領域を切り、KNOPPIXイメージエリアとして7.5G(FAT32、将来のDVD化とホーム2Gに対応)、XPデータ用に残り40G余り(NTFS)を設定して完了。通常時には60Gを第一ディスクにしてXPを起動、他のOSはFDを使うorBIOSから第二ディスクと優先順位を入れ替えしてLILOを起動し選択としました。

完成した起動パターンは
 ・hda(60G内蔵、PM)が上位にしてあるデフォルトならWindowsXPが自動的に起動
 ・hdb(80G 2nd、PS)が上位になったらLILOが起動し、自由に3つのOSを選択可能
 ・フロッピーからはHD順位に関係なく3つのOSが選択起動可能
 ・CDイメージKNOPPIXは起動ディスクとKNOPPIXのCDから起動可能
であり、2ndHDDと組み合わせるのがFDDでもDVD/CD-RWでも全て起動できるようになりました。

結局、Windowsしか使えない普通の人が引っかかりそうな部分は
 ・BIOS操作
 ・Linuxのインストール
 ・lilo.confの編集
の3つでしょう。上2つは環境依存なので最後の部分は、有名な「Nobusan's Square」を参考にするとよいと思います。
ノートで構築という視点で、A31pは非常に楽(それこそ自作PC並みに)だったと言えるでしょう。(2003/12/5)


さて今度は、USBメモリーキーを使っての選択起動に挑戦します。
ハードディスクを追加してから、フロッピーがないまま使用しているので、起動ディスクというものが使えません。
MBMやGRUBのCDは作ったのですが、どうせならThinkPadの特性を生かして、USB経由で起動をコントロールしようというのが狙いです。
ThinkPadはUSBデバイスがBIOSから認識できて起動可能です。本当に起動可能であるためには、USBデバイス側が対応していることが条件で、IBMが売っているメモリーキーはOKですし、バッファローのものも動作可能と報告されているみたいです。
うちにあるのはアイ・オーのEasy Diskで、2.0対応の初期型32MB版。動作するでしょうか。
今回は「起動ディスク」を作るというものではなく、GRUBを使えるようにします。用途的に98起動ディスクは意味がないので。

やることは簡単で、GRUBがインストールできる環境から、正しく指定してsetupするだけ。A31pで左ベイにハードディスク、右ベイにDVD/CD-RWドライブとしている場合、hd0が内蔵HD(hda)、hd1がウルトラベイのHD(hdb)、hd2がUSBメモリー(sda)になります。すなわちGRUBシェルから、
root (hd2,0)
setup (hd2)
でよいわけです(GRUBのデータ・・・stageとかmenu.lstとか・・・は先にメモリーキーにコピーしておきました。grub-installだとファイルシステムの認識でこけるかも)。

これでUSBメモリーをハードディスクより優先の起動順位にすると、めでたくGRUBが立ち上がります。ちゃんとMBRがあるディスクとして扱われたわけですね。
これができるということは、ThinkPad Clubで紹介されていた手順で、起動ディスクが作れそうです。
ただ、USBメモリーのGRUB上からはメモリーのファイルシステムが認識できませんでした。これはWindows上で一度もフォーマットしていない(出荷時の設定のまま使用)ことから、一度明示的にFATでフォーマットしておくと可能だと考えられます。
ちなみに、作業の前後でディスク(HD、メモリーとも)の中身は保持されました。

多分ThinkPadのほかのシリーズ(より後期の製品)でも可能なので、ベイが少ない場合には面白いと思います。
98起動ディスクにして、NTFSDOSとか入れておくと、サルベージが出来るディスクになってちょっとよいかも。WindowsXPの起動ディスクは作れなさそう(知らないだけ?)なので、これがベストでしょうかね。
こうなってくると、大きいメモリーキーにKNOPPIXのイメージをコピーして、FDとCDなしでハードディスクレスができるかも。メモリーキーがすぐ死んでしまいそうですけどね。(2004/2/21)

#2004/3/20追記:KNOPPIX-USBメモリ、日本語版で作ったところがあるみたいですね。あとはUSBメモリの書き換え問題のクリアかな・・・(toramオプションがあれば問題なしなんですかね?)。

#2004/7/13追記:わけあって別のUSBメモリ(アイ・オーの高速USB2.0版256MB)を入手して、Windows98起動ディスクを作成。方法はハードディスクを全てはずして、起動ディスクからC:としてメモリを認識するようにして、
sys C:
して、起動ディスクの内容+いくつかのコマンドと、NTFSDOSをコピー。簡単に上記の「NTFSが読める起動ディスク代用USBメモリ」ができました。他のPCでも起動できれば、強力なサルベージャーになるのですが。



館主の戯言に戻る
トップに戻る