Windowsがインストールされている起動可能なNTFSパーティションを別のブロックオフセットに移動した場合、再度起動可能にするには何を更新する必要がありますか?
背景: 必要なアクションを実行するプログラムを作成する予定です。そのため、Windows DVDから起動してMicrosoftのツールを使用するためのガイドを探していません。代わりに、私がこれらのことを自分で変更する方法が必要です。これにより、平均的なPCユーザーがWindowsシステムをより大きなハードディスクに移動したいときに、より簡単なソリューションを作成できます。
特に、私が試したことは次のとおりです。
私はいくつかのパーティションを持つディスクを持っています。そのうちの1つはWindowsがインストールされたNTFSパーティションであり、ディスクはパーティションレイアウトにプレーンな古いMBRブロック0を使用します(4パーティション以下)。
次に、新しい大きなディスクをフォーマットしてパーティションを作成します。そこでNTFSパーティション用のスペースを作り、その内容を古いディスクのNTFS Windowsパーティションからコピーします。そして、パーティションを「アクティブ」にします。
ただし、このディスクから起動しようとすると、「読み取りエラー」メッセージがすぐに表示され、起動が停止します。正確なテキストは次のとおりです。
A disk read error occurred
Press Ctrl+Alt+Del to restart
両方のディスクのブロック0のブートセクターコードが同じであることを確認しました。
何か他のものを更新する必要があるかもしれません。更新する必要のある絶対ブロック参照がどこかにあり、おそらく次のレベルのローダーまたはNTカーネルを指していると思います。
アップデート:私が見つけたこの記事はかなり私が知りたいの深さに入ります。しかし、それはboot.iniファイルを変更すると言うが、私は、Windows 7は、ここで、そのようなことが変わったように見える場所をインストールしている:いいえboot.iniファイルが、フォルダと呼ばれるシステムボリューム情報 GUIDとその中の他のデータとを音が私の問題に関連していること。掘り続けます...
更新2:starmanによる恐ろしくて非常に有益なウェブサイトのおかげで、私は最初のステップを理解することができました。NTFSブートセクターには、「非表示」セクターのフィールドがあります。このフィールドには、ブートセクターのセクター番号を含める必要があります。これにより、「読み取りエラー」メッセージが解決されます。ただし、代わりに「BOOTMGR is missing」エラーが発生します。ブロック番号を調整する必要がある別の場所があるようですが、これについてのコードリストには何も見つかりません。
この「BOOTMGR is missing」問題を修正するためのWindowsツールを提案しているヘルプサイトはたくさんありますが、裏で何が起こっているのか誰も知らないようです。Windowsに少し問題があるときにWindowsを再インストールするように提案するようなものです。少なくとも、これらの修正は機能しているようで、主にBcdeditおよびBootrecツールが関係しています。さて、移動されたパーティションに関して、特に後者が何をするのか誰が知っていますか?
更新3:試行錯誤を繰り返した結果、解決策はBCD-Templateレジストリファイルにあり、通常は\ Windows \ System32 \ config内にあると考えています。「bcdboot」コマンドを使用してこれを更新すると、Windowsはそれから起動します。このレジストリに含まれている上記の質問に関連する情報を把握している最中です。このレジストリの内容へのポインタは大歓迎です。
更新4: BCD-Templateファイルが書き換えられ、以前のバージョンとは異なるバイナリコンテンツが含まれている場合でも、内部の値は変更されないことがわかります。したがって、それは、bcdboot.exeが書き込む別のものでなければなりません。パーティションの最初の32個のブートブロックを変更するかどうかを以前に確認しましたが、変更されていないように見えます。パリトンマップも変更されません。では、bcdbootがBCDレジストリ以外に変更するのは何でしょうか。それを追跡する方法に関するヒントはありますか?プログラムが書き込むファイルを示す低レベルのツールはありますか?
更新5:答えは次のようです:c:\ Boot \ BCDも変更され、それがブートマネージャーのプロセスのキーファイルであるように見えます。これは後で調査します...
アップデート6: Windows 7をインストールしたときに最初に2つのパーティションを作成したことが重要な詳細のようです:ブートストラップパーティションのように見える、204800セクターの小さなパーティションの後に、Windowsシステムを含む実際の大きなパーティション(ドライブC :)。このインストールを新しいより大きなディスクに転送しようとしたとき、同じ2つのパーティションを新しいドライブにそのまま残していましたが、最終的には異なるオフセットになりました。これだけで「BOOTMGR is missing」というメッセージが表示されました。それ以来、私はWindowsパーティションでのみbcdboot.exeを使用してきました。そのパーティションの\ Boot \ BCDファイル。そのファイル(およびフォルダー)は、もともと小さいパーティションにのみ存在していました。したがって、私の問題では、1つのパーティション(ブートストラッパー)が別のパーティション(OSを含むパーティション)を参照するため、この問題はさらに複雑になる可能性があります。簡単です。
更新7:もう1つの詳細が見つかりました:\ Boot \ BCDファイルはMBRのシリアル番号を記録します。その数が一致しない場合、システムは起動しません。次に、絶対ブロック参照がそこに格納されているかどうかをテストします。
\BCD\Boot
、あなたがしたい通常編集それとbcdedit.exe
、ありませんbcdboot
。そして、はい、ブートストラップ用の個別のパーティション(フルディスク暗号化機能を使用する場合にのみ必要です。復号化コードはメインのWindowsパーティションの外部に保存する必要があるため)は、存在する場合にブートプロセスを制御します。