ようやく、パーティションコピー先の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で立ち上げた時:
上記3で立ち上げた時:
(システム)というのは、最初にブート処理を始めたアクティブなパーティション、
(ブート)というのは、ブートされたターゲットのパーティション、
(アクティブ)というのは、 ・・・ 分かりません。
何かが違いますね。何が違うんでしょうか?
他の方法としては、MBM(Multiple Boot Manager)などのツールを使って
より多彩な起動を出来るようにするものもあるが、
MBR への導入が必要なので、初級者はやめた方がいいだろう。少なくとも、
MBR のバックアップをとれるとか、CDーROMから起動してMBRなどディスクの
内容を修正できる力がないと無理だと思う。
きっかけは、Firefox をスタートメニューから起動するときに、
セーフモード版で起動出来るらしいが、自分のPCではそもそもエントリが
1つしかなくて起動できなかった(セーフモードを見たことが無い)ので、
Firefox の全言語版?をインストールしてみたかったことから始まった。
今の環境でやるには、元の状態に戻せないリスクが高いので、
もう一つ別にテスト用のXPが欲しかったのだ。
・ディスクが2個あるので出来ることは出来るが、もっと気軽に
テストできる環境が欲しかったのだ
でも、ここまで調べてきてかなり消耗してしまったので、
Firefox のことなんかどうでもよくなってしまった!(笑)
疲れました。
皆さんの参考になればそれが一番うれしい。元気をもらえる。