ブートBIOSのないSCSIアダプタに繋いだハードディスクから Windows2000を起動する(PC-9821)
Rev. 1.02 2003-6-9作成 Copyright(C) 2003 まりも

■■■ はじめに ■■■

 OSというものは、ハードディスクの領域にインストールし、そこから起動するのが普通です。ところが、起動の途中まではそのハードディスク領域以外から、ということができる場合があります。PC-9800シリーズのWindows9xやMS-DOSの場合は、config.sys, autoexec.batの処理だけフロッピーで、あとは既存のハードディスク領域から起動などということが可能でした。Windows2000やNTでも、boot.iniの記述を少し変えることでそれが可能です。しかも、ブートBIOSのないSCSIアダプタに繋がれていても可能のようです。そこで実験を行ってみました。

 まずは正常に起動できるWindows2000環境一式と、フロッピーディスク1枚を用意します。

■■■ 実験の手順 ■■■ 

1.ブート用FDの作成

 まず、Windows2000から、フロッピーディスクを1枚フォーマットします。この段階で、フロッピーのIPLとして、Windowsのローダを起動するためのIPLが書かれます(DOSやWin9xで作成したものとは全然違います)。

2.FDにNTブートファイルをコピー

 いま作ったフロッピーに、Windows2000の起動ドライブのrootディレクトリにある以下の隠しファイルを全てコピーします。
boot.ini 
bootfont.bin 
ntdetect.com 
ntldr 
arcldr.exe (不要かも?)
arcsetup.exe(不要かも?)
なお、ページファイル(pagefile.sys)は必要ありません。

3.boot.ini編集

 フロッピー上のboot.iniを編集します。要点は、ARCpathの先頭の "multi(0)"を削除することです。

[boot loader]
timeout=22 
default=multi(0)scsi(0)disk(0)rdisk(0)partition(7)\WINNT 
[operating systems]
multi(0)scsi(0)disk(0)rdisk(0)partition(7)\WINNT ="Microsoft
Windows 2000 Professional" /fastdetect 

のようにします。

4.ブート用SCSIドライバのコピー

 Windows2000システム領域の フォルダ、\Winnt\System32\drivers には、現在使っているSCSIアダプタ(SCSIコントローラ)のドライバが格納されています。この中から現在使用しているものに適合したものを選び、起動フロッピーにコピーします。コピーしたら、Ntbootdd.sysという名前に変更しておきます。SCSIドライバの名称がわからない場合は、デバイスマネージャで該当するアダプタを選び、「ドライバ」のタブを開いて調べてください。これまでに使っていないSCSIアダプタをこれから使うという場合は、そのドライバを選ぶこともできるはずです。そのSCSIアダプタのドライバディスク(またはCD)などを用意して、コピーしてください。

 これで、とりあえずFDから起動できるかどうかを確認してください。 無事起動できれば次に進みます。

5.SCSIアダプタのBIOS無効化またはアダプタ交換

 SCSIアダプタの取り扱い説明書に従って、BIOSの全無効設定、あるいは、特定IDのHDDのBIOS認識無効設定を行います。または、同系列チップを使った BIOSナシのアダプタと取り替えます。 または、Ntbootdd.sysで用意した新しい種類のSCSIアダプタにします。そして最後に祈ります(何?

 これで次回からはBIOSナシでもフロッピー起動ができるようになるはずです。

■■■ 注意 ■■■ 

・「SCSIアダプタ」と書いていますが、SCSIだけでなく、みなしSCSIコントローラデバイスとなっているATAカードでも同様に行ける可能性があります。ただしその場合、98フォーマットのジオメトリ(BIOSが設定したC/H/Sパラメータ)は、SCSI標準と同じ(ヘッド8,セクタ32あるいはヘッド8,セクタ128)である必要があるかもしれません。あるいは、ATAボードのBIOSによる初期設定作業が行われていないため、ヘッド16,セクタ63である必要があるかもしれません。このへんはよくわかりません(未確認)。16,63ならば、UIDE-xxや内蔵IDEに繋いだIDEハードディスク(8063MBから32255MBまでの容量のもの)をそのまま、あるいはSCSI変換器で使うことができます。これ以外の容量のものは可能性が低くなりますが、やってみないことにはわかりません。

・現在(2003-5-27)テストを行って確認したのは以下の環境です。
本体 PC-9821RvII26 1-CPU
Windows2000のHDDを繋いだSCSI ホストアダプタ アイオーデータ SC-UPCI
Windows2000のHDDがある SCSI ID 0
Windows2000起動領域があるHDD IBM IC35LのSCSI 18GB
Windows2000の入っているパーティション 先頭から7番目(強制アクティブ、ブート可にしています)
Windows2000のドライブレター  X: (インストール時に細工をしています)
Windows2000のHAL(カーネル)の種類 "PC-9800システムクロック10MHz[2nd タイマ対応]"

<<オリジナルboot.iniの内容>>

[boot loader]
timeout=20 
default=multi(0)scsi(0)disk(0)rdisk(0)partition(7)\WINNT 
[operating systems]
multi(0)scsi(0)disk(0)rdisk(0)partition(7)\WINNT="Microsoft Windows 2000 Professional" /fastdetect 

<<起動FDの boot.iniの内容>>

[boot loader]
timeout=20 
default=scsi(0)disk(0)rdisk(0)partition(7)\WINNT 
[operating systems]
scsi(0)disk(0)rdisk(0)partition(7)\WINNT="MicrosoftWindows 2000 Professional" /fastdetect 

■■■ 可能性 ■■■ 

・PC-9821用のboot BIOSがなかったU320 なSCSIコントローラカードに、既存のWindows2000領域のあるハードディスクを繋ぎ、この方法でFDブートを行うことで、Windows2000が起動できる可能性があります。ただし注意点に書いたようなことがありえます。ROM なしSCSIアダプタの場合、一旦それを装着してドライバをインストールしておけば大丈夫でしょう。<追記>ATAコントローラカードは、UIDEシリーズで実験しましたが、どうも scsi(0)という記述ではうまくいかないようです。

・起動FDだけでなく、内蔵IDEに非常に小さなFAT領域を取り、そこをWIndows2000からフォーマットして、起動FDと同様のファイルを置くことで、内蔵IDEのここからブートさせることができます。内蔵IDEを使うことで、拙作の各種IPLwareアプリケーションを使うことができるようにもなります。

・CHANPONのたぐいを認識できない PC-9821St20や、初代Xa,Xtでも、CHANPONのSCSIに繋いでWindows2000を起動できる可能性があります。<追記>St20では確かにシステム起動まで行けましたが、Windows2000起動中にNMI(PARITY ERROR)が発生してだめでした。ブート以前にPCIデバイスのPERR,SERRを一切無効にすればなんとかなるかもしれません。まだ模索中です。

・ひょっとすると、PC/AT FDISKイメージの領域に入れても起動できるかもしれませんが、これも未確認です。たぶん、ドライブレター割付が狂うために、pagefile.sysを探せなくなる可能性があります。この問題をクリアすれば行けるかもしれませんが…。

■■■ お約束 ■■■ 

 この記事は、十分なテストを経て書かれたものではなく、100%正しいという保証はありません。今後の多くの方の実験の一助となることを目的として書いています。