後日、頭の中が整理できたら、別エントリで総括したいと思います。
bcdeditとreagentcコマンド、および、DtoDのリカバリ環境に関して調べた結果です。
- 回復パーティションは2種類ある。ひとつはWindowsRE環境で、システムのリフレッシュや復元時に使用されるもうひとつのWindows環境で、メインのWindowsが起動しない時にもこちらから起動される(ことがある)。
もう一つは、PCメーカーが用意したリカバリイメージを含むパーティションで、たいていは数GByteのサイズで一番最後のパーティションであることが多い。 - WindowsRE環境のパーティションは普通のNTFSだけれど、GPTのattributeで隠し属性になっているので、通常は見えない。diskpartでドライブレターを割り当てると、操作できるようになる。
- WindowsREパーティションには、\Recovery\WindowsRE\というディレクトリがあり、この下に起動すべきWindowsREイメージ(ファイル名=WinRE.wim)が入っている。
- \Recovery\WindowRE\ディレクトリにあるReAgent.xmlというファイルに、リカバリするための情報が書かれている。
このファイルに書かれている情報としては、WindowsRE環境のある場所や、回復イメージのある場所などがあるが、それらの「場所」情報は、[ディスクID(GPT ID)]と[イメージが配置されているパーティションの先頭セクタ番号]の組み合わせで示されている。したがって、すべてのパーティション構造を保ったまま、別のHDDにクローンしてもそのままではリカバリは行えないということになる(リカバリイメージが見つからなくなるため)。 - もしクローンしたときに、ディスクIDと、(もしパーティションサイズや位置に変更があれば)イメージのあるパーティション先頭セクタがずれてしまったら、それを直さなければならない。それを行うのが、ReAgentCコマンド。
ReAgentC /setreimageを使うと、ReAgent.xmlファイル中のWinreLocationとImageLocationエントリを適切なものに設定してくれる。
ReAgentC /setosimageを使うと、ReAgent.xmlファイル中のPBRImageLocationエントリを適切なものに設定してくれる。
ReAgentC /enableを使うと、ReAgent.xmlファイル中のWinreBCDエントリと、BCDブート構成情報内のブートローダ構成({current}エントリにrecoverysequenceを設定し、そのrecoverysequenceの参照先に適切なWindowsREのブートローダ情報を設定してくれる。
なお、これらのReAgentCコマンドによる設定内容は、bcdeditとdiskpartを駆使すれば手動でもできることだけど、面倒なのでReAgentCを使うと便利。
また、起動に関わる重要な情報を含むBCDも調整してくれません。そのせいで、TODO Backupでクローン化したあとは、0x80000225エラーでブートに失敗しているようです。
このとき、bootrecやbcdbootコマンドでとりあえずブートできるようには修正できますが、休止からの復帰に使うBCDブートエントリは直っていないことが多いです。こういうときは、手動でbcdeditを駆使して直します。
いまのところ、覚えているのはこんなところ。
0 件のコメント:
コメントを投稿