[13980]  IFC-USP-M2に接続した60GBディスクからの起動実験
投稿者:かわのべ さん   2001-05-15 02:16:03
起動ディスクは 32GB までと一般によく言われていますが、タイトルの組
合せでどうなるか実験してみました。

■ ハードウェア
PC-9821Xa16/W16 Pentium/200MHzに交換 メモリはとりあえず32MB
PC-9821-120×2 (PnP)
PC-9821-125×1 (PnP)
MELCO IFC-USP-M2 (V1.20) (スロットは PCI2 に実装、PCI1 は空き)
HD IBM IC35L060AVER07-0 ER60 (120103200=128×8×117288 セクタ)

■ OS
WindowsNT/4.0
Windows2000
FreeBSD(98)4.3R-R01

まず WindowsNT4.0 をインストールしようとしました。あらかじめゼロシ
リンダをゼロクリアしていたので、初期化を促す画面が表示され固定ディ
スク起動メニューのコードが書き込まれて、再起動。

その後、ブートドライブとして先頭の 1600MB を割り当てました。順調に
インストールが実行され、再起動のところまで進みましたが、起動しませ
んでした。 しかたないので別のディスクから FreeBSD(98) をブートして
ディスク内容をダンプして、パーティションテーブルの内容を確認したと
ころ容量が 15/8 倍の 3000MB になっていました。

このディスクが BIOS からどのように認識されているかですが、SCSI ID=
0 としているので、システム共通域 0000:0460 の内容 80 FF 58 D4 から、
C/H/S は、62552/15/128 になっていることがわかりました。32GB までの
SCSI ディスクは、周知のようにヘッド数 8、セクタ数 128 が標準となっ
ていますので、セクタ数のみ 15 にすることで、60G に対応させているこ
とがわかります。

NT4.0 では、パーティションを作成するときに MB からシリンダ数の割り
だしでヘッド数を固定して計算しているのでしょう。800MB として、実際
の領域の大きさが 2G 以内になるようにインストールしようとしてもブー
トしませんでしたから、ブートコードにも問題があるのかもしれません。

次に、Windows2000 で試してみました。これは新しい OS ですから期待し
ていたのですが、現象は NT4.0 とほぼ同一でした。残念。

最後に FreeBSD(98) 4.3R-Rev01 で試しました。パーティションを作成し
ないで、ディスク全体を使おうとすると fdisk (FreeBSD の) など正常に
動作しない等の問題がありますが、上記のように一旦 WindowsNT などで初
期化して起動メニューを書き込むか、FreeBSD(98) 添付のブートセレクタ
をインストールすれば、とくに問題なく動作するようです。試しにディス
クの先頭から 40GB 分確保して、残りの 20GB にインストールしたりしま
したが、この場合でもきちんとブートできました。

ところで、C/H/S の値ですが、こちらの掲示版にもよく登場されるまりも
さんのページを拝見すると、今後の大容量ディスクのパラメータの一例と
してヘッド数 16 を提案されています。残念ながら IFC-USP-M2 では上記
のように 15 となっていますが、これはシリンダ数を 16 ビットにしよう
とすると、ヘッド数を 4 ビットに収めなくてはならず、OS のブートコー
ド等が 0x0 を 16 とみなせない危険性を回避するために、15 としている
のではないかと思われます。

このため IFC-USP-M2 では、少なくとも 65535×15×128=125827200 ブロ
ック、すなわち 64,423,526,400 バイトまではいけそうですが、それ以上
の場合にどうなるかはわかりません。もしセクタ数が 255 になるのであ
れば、65535×15×255×512=128,343,744,000 バイトが真の限界というこ
とになります。
  1. まりも さん   2001-05-15 02:51:28
    をを、IFC-USP-M2(=CHANPONのSCSIも)のBIOSには、そんな隠しワザ(?)が
    潜んでいましたか。32GB頭打ちで認識させるよりもエレガントですね。
    業界に先駆けてパラメータを決めたということですから、他のメーカも
    これに習って欲しいですね。
    ヘッド数16の件ですが、内部的なワークエリアの問題で4bitまでのため、
    おっしゃるように15で止めて置いたほうが安全です。PC/ATでは、ゼロは
    最大として解釈する場面が多いですが、98用のブートプログラムやOSが
    それでは危ないでしょうから。
  2. まりも さん   2001-05-15 02:54:29
    IFC-USP-M2ということですから、IDE接続としても使うわけですよね。
    内蔵IDEが8063MBまで対応機種に繋いだときにも、そのまま読み書き可能に
    するには、32GBを超えるドライブに対して、ヘッド15:セクタ128という
    パラメータでも使えるようにしておくと便利そうですね。
    ですね。
  3. まりも さん   2001-05-15 03:45:08
     Windows NT の件です。NT 3.51の頃に、ヘッド8:セクタ32で決め打ちになっているという話を聞いたことがあります。サードパーティ製の適当なパラメータのSCSI I/Fからは起動できないということでした。Windows 2000の今でもその点を引きずっているのかもしれません。Windows 2000使う場合は、従来パラメータのままで32GBを内緒で超えて使う方法になるかと思います。その場合は32GB頭打ち方式のSCSI H/Aでないといけないわけですね。それにしても、NECが9821を放り投げてしまった今、再び DISK BIOSのパラメータ問題が再燃という感じになってしまいましたね
  4. かわのべ さん   2001-05-15 14:36:51
    >まりもさん

    素早い反応ありがとうございます。

    >32GB頭打ちで認識させるよりもエレガントですね。

    そうですね。FreeBSD(98)ではBIOSパラメータとは別のC/H/Sを設定する
    こともできますが、32GB頭打ち方式だとパーティションテーブルの内容
    が狂ってしまいうまくありません。

    >Windows NT の件です。

    NTのIPLブートコードだけの問題ならなんとかなりそうな気もしています。
    ブートコードにパッチ当てるとか、思い切って仮想C/H/Sパラメータで動く
    ようにDISK BIOS (INT 1Bh)フックしてしまうとか... とにかくカーネル
    がロードされてしまいさえすれば、あとはメーカのドライバ次第です。

    >ないわけですね。それにしても、NECが9821を放り投げてしまった今、再び DISK BIOS
    >のパラメータ問題が再燃という感じになってしまいましたね

    まったくそのとおりです。IDEとSCSIもパラメータ共通化してほしいところです。
    まだまだPC-9821使い続けたいです。