パーティションコピー先の第2のXPを起動する3つの方法 | KNのブログ

KNのブログ

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

ようやく、パーティションコピー先のWindows XP を起動することが出来ました!


長かったです!


そして、結論。
パーティションコピー先の第2のXPを起動する、簡単な3つの方法。

前提条件:
  単純なバイナリコピーではだめで、PBR上の先頭セクタ情報、パーティション
  サイズ情報やコピー後のシステムで使われる(コピー先のディスクの)NTシグ
  ニチャがレジストリに反映されて&「Cドライブのアサインがコピー先のパーティ
  ションに変更されている」こと!
  ションに変更されるなどFDD、CD-ROM、HDDのその他のドライブ、その他の
  デバイスのアサイン情報が正しく変更されている」こと!

おさえておきたい重要事項:
 (1)MBR上のブートストラップローダーは、MBR上のパーティションテーブルを
    見て、アクティブなパーティションがないか探し、あればそのアクティブな
    パーティションの先頭セクタ=PBR(1セクタのみ!)をBIOSに命令して(=
    INT13拡張を使って)メモリー上にロードさせ、
    ロードした先頭アドレスに制御を移すのみの仕事をしている。
 (2)MBR上のブートストラップローダー、PBR上のNT-IPLおよびNTLDRは 128GB
    制限があって、128GB を超える領域についてはアクセス出来ない!
    ( XPでは、OS起動後はBIOSを使わずHDDにアクセスするので問題無い。)
 (3)複数のOS がインストールされているときに出てくる起動時のメニュー(ブート
    メニュー)を出しているのは、NTLDR である。(NT 系のOSがメインで導入され
    ている場合)
  MBR: マスターブートレコード
  PBR: パーティションブートレコード (PBS:パーティションブートセクタとも言う)


1.先頭から128GB以内の領域にコピーし、boot.ini を修正してターゲットのパーティ
  ションを起動出来るようにする。
     ・アクティブにするのは、(通常起動している)先頭のパーティション

  市販のパーティション管理ソフトでパーティションのコピーをしたら、boot.ini の
  修正までしてくれるみたいなので、これが最も簡単。(注:ソフトによって違うかも)


2.先頭から128GB以内の領域にコピーし、MBR 上のパーティションTBL でアクティ
  ブなパーティションをターゲットのパーティションに切替てから、再起動する。

  アクティブなパーティションに切替るソフトが必要で、切替&戻すのがちょっと面倒かな?


3.任意の領域にコピー出来、通常アクティブにしている先頭のパーティションにある
  boot.ini を修正してターゲットのパーティションのPBR(1セクタ)をロードさせる。
     ・ロードさせるPBRは、パーティションコピー後の”コピー先のPBR ”を
      ファイルに書き出したものを使う。512バイトである。
     ・NTLDR から128GB を超える領域のPBRはロードできないが、
      今のシステム内にあるファイルをメモリにロードすることは出来るのだ。
      NTLDR も、ロードした先頭アドレスに制御を移す動きをする。

  この方法は、Windows95/98/98SE/Me、FreeBSD、Linux などにも使えるとの
  ことだ。
  128GB超の領域に使えるのがいいんじゃないか?!(まだテストしてないが、
  たぶんOK)
  8/15追加。 128GB制限?のある自PCでは、この方法ではクリア出来なかった。


これまで1や2の方法でコピーしたXP を起動できなかったのは、
128GB制限にひっかかっていたためだと思う。39.1GB+80.0GB=119.1GB でぎりぎりアウトかな。

もしかして、私のPCが古いことが128GB制約の原因か? BIOSを48ビットLBA対応
にアップデートできたら解決するのか? (BIOSの対応度不明;BIOSは恐くてさわれないなあ)

8/15追加。 BIOSは対応しているか微妙な時期の製品だ。
これまで
「AUTO」の設定になっているがbootの時に大丈夫か?と気にかかる。
そして、きょうLBAの次の行のLargeの設定を選ぶと、立ち上がらない!
???  
BIOSは対応しているのだろうか?  微妙だ!
あと、IDEコントローラのデバイスドライバがちょっとあやしそうなのだ。
2001/7/2の日付になっているのに、atapi.sys の日付は2004/8/4で
エクスプローラからファイルのプロパティで見るとバージョンは5.1.2600.2180
なんて値が出てくる。(マイクロソフトの言う5.1.2600.1135より大きいのだ)
Intel 82801DB Ultra ATA Storage Controller - 24CB なんて、
Intel のサポート切れでデバイスドライバはもう出ていないみたいだし・・・


ディスク1の、先頭パーティションHITA1 に入れたboot.ini はこんな感じだ。
[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="DISK(0)非表示で  Windows XP Professional" /fastdetect /NoExecute=OptIn
multi(0)disk(0)rdisk(0)partition(2)\WINDOWS="DISK(0)非表示で  XP of パーティション2" /fastdetect /NoExecute=OptIn
multi(0)disk(0)rdisk(1)partition(1)\WINDOWS="DISK(0)表示で     Windows XP Professional" /fastdetect /NoExecute=OptIn
multi(0)disk(0)rdisk(1)partition(2)\WINDOWS="DISK(0)表示で     XP of パーティション2" /fastdetect /NoExecute=OptIn
C:\HITA2_XP.PBR="HITA2 のXPを起動(パーティション・ブートレコードをロード版)"


なお、ディスク1の、第2パーティションHITA2 のboot.ini は少し違って、
最後の行が無い。(既にそのパーティション・ブートレコードをロード済みだから)
そして、動きもちょっと注意が必要で、起動時のメニュー(ブートメニュー)が
出てきたとき、何もしないでほっとけば、先頭パーティションのWindows が起動されてしまう!
それは、default が rdisk(0)partition(1)\WINDOWS となっているからだ。


---- こまかい話だが、----
boot.ini に 「rdisk(0)partition(1)\WINDOWS="DISK(0)非表示で・・・」の
行が4行あるのは、理由がある。
  ①説明書きにあるように、私のようにIDE-HDD が2台接続されている環境では、
   DISK(0)を非表示にした時と表示にした時とで、ブート時のシステムの動き
   及び選択方法が違うのだ!

  ②DISK(0)を非表示にした場合、rdisk(1)partition(1) を指定して立ち上げると
   ディスク1の第2パーティションのシステムは立ち上がるが、少し変な動き
   をする。  当PCでは、
   (システム設定の変更:新しいデバイスのインストールが完了しました。)
   (新しい設定を有効にするには、コンピュータを再起動する必要があります。)
   AND セキュリティ・ソフトが立ち上がらなかった!
   また、rdisk(1)partition(2) では立ち上がりません!

   これから推測すると、Windows からはDISK(0) が見えないので、ブート時に
   BIOSの認識とWindows の認識の間に何かのズレが生じ、それが原因で
   おかしくなっているのではないか?
   DISK(0) を非表示にした場合、boot.ini で有効なのは
        rdisk(0)partition(n)
   の方だった。

  ③DISK(0)非表示でも、DISK(0)表示でもboot.ini を書き換えないで
   使えるようにするために、4行書いてある。

rdisk(0)partition(2) を選択して該当パーティションに飛んで行った場合、
そこには”該当パーティションのboot.ini ”があるので、
該当パーティションの起動時のメニュー(ブートメニュー)が出てくる。
   8/17追加。2回目の起動時のメニューを出せるのは、
          「パーティション・ブートレコードをロード版」の時だけ
そのため、私は
  multi(0)disk(0)rdisk(1)partition(2)\WINDOWS="HITA2 DISK(0)表示で     XP of パーティション2" /fastdetect /NoExecute=OptIn
のように、どのパーティションを起動しているのかすぐに気がつくような説明表示に
している。
   rdisk(0)partition(1) を選択して自分のパーティションを起動した場合には、
   2回起動時のメニュー(ブートメニュー)は出てこない。

変な話だが、rdisk(0)partition(1) の起動時のメニュー(ブートメニュー)を出して、
rdisk(0)partition(2) のパーティションを起動し、そこで出てきた起動時のメニューで
   8/15追加。2回目の起動時のメニューを出せるのは、
          「パーティション・ブートレコードをロード版」の時だけ
 またrdisk(0)partition(1) を選択して元のrdisk(0)partition(1) パーティションを
起動することもできる。
---- こまかい話終了 ----


参考に、上記1で立ち上げた時と上記3で立ち上げた時のディスクの状況を示す。
上記1で立ち上げた時:

KNのブログ


上記3で立ち上げた時:

KNのブログ

  (システム)というのは、最初にブート処理を始めたアクティブなパーティション、
 (ブート)というのは、ブートされたターゲットのパーティション、
 (アクティブ)というのは、 ・・・ 分かりません。
何かが違いますね。何が違うんでしょうか?



他の方法としては、MBM(Multiple Boot Manager)などのツールを使って
より多彩な起動を出来るようにするものもあるが、
MBR への導入が必要なので、初級者はやめた方がいいだろう。少なくとも、
MBR のバックアップをとれるとか、CDーROMから起動してMBRなどディスクの
内容を修正できる力がないと無理だと思う。


きっかけは、Firefox をスタートメニューから起動するときに、
セーフモード版で起動出来るらしいが、自分のPCではそもそもエントリが
1つしかなくて起動できなかった(セーフモードを見たことが無い)ので、
Firefox の全言語版?をインストールしてみたかったことから始まった。
今の環境でやるには、元の状態に戻せないリスクが高いので、
もう一つ別にテスト用のXPが欲しかったのだ。
  ・ディスクが2個あるので出来ることは出来るが、もっと気軽に
   テストできる環境が欲しかったのだ
でも、ここまで調べてきてかなり消耗してしまったので、
Firefox のことなんかどうでもよくなってしまった!(笑)
疲れました。

皆さんの参考になればそれが一番うれしい。元気をもらえる。