2014年8月23日土曜日

Windowsの回復環境の関する覚え書き

また、すぐに忘れてしまいそうなので、覚えているうちに順不同で記しておきたいと思います。
後日、頭の中が整理できたら、別エントリで総括したいと思います。

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を使うと便利。
どうも、最後のReAgentCコマンドを使うあたりの調整処理は、TODO Backup 6.5.0.0を使ってHDDをクローン化したときはやってくれない感じっぽいです。

また、起動に関わる重要な情報を含むBCDも調整してくれません。そのせいで、TODO Backupでクローン化したあとは、0x80000225エラーでブートに失敗しているようです。
このとき、bootrecやbcdbootコマンドでとりあえずブートできるようには修正できますが、休止からの復帰に使うBCDブートエントリは直っていないことが多いです。こういうときは、手動でbcdeditを駆使して直します。

いまのところ、覚えているのはこんなところ。

0 件のコメント:

コメントを投稿