ディスク0から起動出来るようになった! | KNのブログ

KNのブログ

テニス、生活の知恵、B級グルメ、時事問題、精神世界、その他いろいろ書いています。
      ※使用PCは、ブログ開設時から 「Windows XP」 です。(マシンは2台目→3台目)

ディスク0から起動出来るようになった!


いやー、大変でした。(汗、汗!)


KNのブログ





きょう、マジで「Windows XP SP1」のCD-ROMからインストールしようかな? と
思いました。


稼働していたときの、MBR(63セクタ分)および、先頭パーティションの
PBR(63セクタ分)をコピーすれば動くだろうと思っていましたが、
そうではありませんでした。幸い、それらの過去のBACKUPをとっていたので、
内容をバイナリで比較したり、強制的にディスク上にそれらを書き込んで
テストすることが出来ました。
   ※もちろん、パーティションTBLや、NTシグニチャや、パーティションの
    サイズなどの項目を修正したうえで!

その結果、原因は別の所にあると判明しました。
原因は、Windowsでした。

HDDの接続形態や、それぞれのHDDでのMBR上のパーティションTBLの内容(整合性を含む)およびboot.ini で指定される起動パーティションだけでユニークに「Windowsが認識するドライブの割り当てが決まる」と思っていましたが、そうでは無かったのです!


「NTシグニチャをクリアしたら、コピーした2番目以降のパーティションからも起動できるよ」
というような情報がネット上にありましたが、たぶんこれは違うと思います。
ディスク1で(但し、BIOSはディスク0を認識状態!)試してみましたが、ダメでした。
しかし、この時に勉強しておいたNTシグニチャが役に立ちました。

そう、WindowsはHDD毎に通称”NTシグニチャ”と呼ばれるHDD識別コード(4バイト)を付与し、それをHDDのMBRに書き込んでいるのですが、
そのNTシグニチャ+該当パーティションの開始アドレス という形で、
  DISK0,PARTITION-1>  \Dos\Devices\C:\  44F444F4 00 7E000000
  DISK1,削除済PART->  \Dos\Devices\E:\  DE15DF15 00 F436CB09
  DISK1PARTITION-1>  \Dos\Devices\G:\  DE15DF15 00 7E000000
  DISK1,PARTITION-3>  \Dos\Devices\H:\  DE15DF15 00 8C8ACB1D
レジストリ上に持っているのです。
    上記は、DISK0: C:パーティション1  (ページファイル)
         DISK1: G:パーティション1  (システム)
    でDISK1のWindows が立ち上がった時の状態。
    まだ2台のDISKを表示させないとWindows を起動できない状態でのデータ。
    [参考:設定&立ち上げ方によっては、DISK0 のPARTITION-1 が(ブート)になる]
    ※こういう変な立ち上がり方をすると、これまで持っていたアドミニストレータ
     権限がなぜか失われるなど、システムが妙な動きをすることに注意。
     分かりやすい例では、デスクトップに出るアイコンはすべてCドライブからの
     もので、それで実行されるPGMも当然Cドライブ上のものなのだ!

そして、これを知らなかったのだが、Windows が起動された時には、
ドライブの割り当ては最初にここを見て、既に該当するエントリがあれば
そのドライブ名を使う、無ければここのエントリに載っていないドライブ名を使う
ようなのです!
  ・直近の状態で上書きするが、その起動で使ってなかったエントリはそのままみたい
ドライブ名をつけていく順番のルールはあるけれども、
前回の起動で使っていたドライブ名があれば、それをそのまま使うようなのです。

そのため、
 (1)DISK0 を非表示にすると、Cドライブのディスクがないので、そもそも立ち上げ出来ない
    (=途中で止まる)
 (2)disk0 を表示にすると、DISK1 の先頭パーティションから起動できるが、
    CドライブはDISK0 の先頭パーティションになり、ページファイルがここに
    とられる。なお、起動されるシステムがあるボリュームは、エントリにある
    Gドライブが使われる。Eドライブが空いているように思われるが、
    過去に存在したが今は存在しないパーティション用に確保されているので、
    使われない!
これが、DISK0、DISK1 と2台を表示させないとWindows が立ち上がらなかった主原因であり、DISK0 単独で起動できなかったのもCドライブのアサインがDISK1 の先頭パーティションになっていたからです。
  ・レジストリといえども、最終的にはファイルです。起動されたら、メモリ上に
   ロードされてそれを元に動いていますが。
  ・DISK1 から立ち上げて、立ち上げていないDISK0 のシステムのレジストリも
   修正出来ます! (が、作業はメモを取りながら慎重に!)
  ・パーティション管理ソフトで、起動に使わなかった方のDISK のドライブ名を
   無理矢理C ドライブに変更することはできますが、(=再起動を要求してくる!)
   たぶん私のようなトラブル状況になると思われます!
   自分のC ドライブのアサインはさわらずに、単に「非表示」に変更で
   処理しましょう。


OSのインストールは、対象のDISK 1個のみをつなげてやるもののようです。
MBRの変更や、レジストリの変更は、OSが立ち上がらなくなる可能性があるので、
くれぐれも細心の注意を払って行ってください。
なお、ここの情報はWindows XP に対しては有効と思われますが、それ以降では不明です。

具体的なアドレスやファイル名、項目名、参考資料となる解説サイトの情報は
書きませんでしたが、この近くまで来ている人であれば、方向が決まって
進んでいけるはずです。ゆえに、不要なトラブルを避けるために書きませんでした。
  (ひとりごと)  「これで商売ができるかも?」 (笑)

では、成功を祈る!!