MBR形式時にとったバックアップを GTP形式でリカバリする方法

今回は、バックアップ時に MBR形式だったものを、GTP形式としてリカバリする方法を紹介します。実は本件、バックアップ・リカバリの検証中に発見し「いいブログのネタになる!」と思ったてワクワクしていたのですが、書く前に少し調べたらバックアップ・リカバリの作業をしなくても、 powershell 上から mbr2gpt.exe というものを起動して変換できるようです。そのやり方は以下を参照してください(当方では未検証です)。

ということで、「リカバリのためのHDDを大きなものに載せ替えたので GPT形式でリカバリしたい」なんてニーズにお応えするのにこの記事が参考になればうれしいです。

バックアップ方法や通常のリカバリは以下の過去記事を参考にしてください。この記事では 1回目の記事でリモートにバックアップしたバックアップデータを利用して進めますので、1回目のバックアップ方法に関しては目を通しておいてください。

過去記事はこちら↓↓↓(上から順番に 1回目~)

この記事では、任意のタイミングで Windows のフルバックアップを NAS や共有フォルダなどリモートストレージに保存し、そこからリカバリする方法を紹介します。実際にバック...
今回はディスク( HDD や SSD )が壊れて、丸ごとディスクを交換した場合を想定したリカバリを検証していきます。ディスクの入れ替えでディスクサイズが変わっているなど、通常 ...
今回は wbadmin を利用したリカバリの中でおそらく最後の手段であろう、diskpart を用いてパーディションを自分で用意するリカバリ方法を紹介します。前回、前々回紹介し...
スポンサーリンク

MBR と GPT についておさらい

この記事に検索でたどり着いた方は、こんなことおさらいしなくても GPT で利用したい意図があるのでご存知でしょうから、この章は飛ばしてもらってよいと思います。

確認のためおさらい程度に私の理解で記載しておくと、

MBR(Master Boot Record):

  • 昔からある形式。BIOS は MBR形式しかブートできない。
  • 容量は2TBまでサポートしており、パーティションの数はプライマリパーティションが最大で4つまで(うち 1つを 拡張パーティションとすれば、論理パーティションは無数にもてる)。
  • BIOS が起動するのは active なプライマリパーティションに存在する OS ローダ。

GPT(Globally Unique IDentifier Partition Table):

  • 比較的新しい形式。BIOS からはブートできない(UEFI が必要)。
  • 容量は8ZB(ゼタバイト)までサポートしており、最大で128個のプライマリパーティションを作成できる。
  • UEFI が起動するのは FAT でフォーマットされた EFIシステムパーティションに存在する UEFI アプリケーション(OS ローダ)。ブートするのは 64bit OS である必要がある。
この容量とパーティション数が大きなHDDを追加したときに GTP形式へ変更したい理由になってくると思います。
GPT形式に変更する際は、マザーボードが UEFI に対応していることを確認しておく必要があります。

リカバリと GPTへの変換

今回は、VirtualBoxで EFI を有効にし、新しくディスクを用意しました。実PCの場合も、BIOS から UEFI ブートへ変更する必要があります。

事前準備

前回と同じでWindows のインストールメディアか、Windows RE(PEでも可?) を準備します。該当するOSで、リカバリを作っておくなど、バージョンはリカバリーするものに揃えておいたほうがベターだと思いますが、実際そんなベストコンディションはまれだと思うので、この実験では手元にあった Windows 10 の 1709 のインストールメディアを使っています。(特に問題はありませんでした。)

SMB1.0 が 1709 から禁止になっています。net use でエラーになる場合があります。その場合は、1709 より古いものを利用するとよいです。
※ 別途 RE や PE の環境でSMB1.0を有効にする方法を検証中です。
前回と同様、IPアドレスは以下の様になっています。
リカバリするPC:192.168.56.10/24
バックアップのあるNAS:192.168.56.30/24
バックアップの version:03/28/2019-03:44

以下のコマンドで、パーティションを2つ作成します。efi のパーティションサイズは実は適当です。手持ちの UEFI で動作している PC が 100M と 360M があったので、大きいほうに合わせています。ここでは、ひとまず動くことを目標にしていますので、より詳しくは別のサイトも参考にしてみてください。

create partition efi size=360
format quick fs=fat32 label=system
assign letter=s
create partition primary
format quick fs=ntfs label=windows
assign letter=c
これでリカバリ対象のパーティション構成は完成です。exit で diskpart を抜けます。

start recovery を用いた C: ドライブのリカバリ

wbadmin get items を利用して、バックアップ時にC: ドライブがマウントされていたディスクのIDを取得します。

wbadmin get items -version:03/28/2019-03:44 -backuptarget:\\192.168.56.30\union\test02 -machine:DESKTOP-CLAV127

この item の表示、1回目で解説している ディスクイメージ と一致しています。

以下のコマンドで、C: ドライブにマウントされていた ボリューム だけを、diskpart で c にassign letter した volume 書きだします。(※ この時に、MBR形式時にとったバックアップが GPT形式のディスクに書きだされます。)

wbadmin start recovery -version:03/28/2019-03:44 -itemtye:volume -items:\\?\Volume{f639da4a-0000-0000-0000-5-1f0000000}\ -backuptarget:\\192.168.56.30\union\test02 -machine:DESKTOP-CLAV127 -recoverytarget:c:

-items:で指定するのは、C:ドライブにマウントされていたもののデバイスIDになります。

-recoverytarget:で指定するのは、diskpart で作成し、assign letter=c で指定した文字列になります。(ここでは、c)

これで、MBR形式のディスク時にとったC: ドライブのバックアップを GPT形式のディスクへ書き出し(リカバリ)が完了しました。

boot を書き込む

今回は GPT形式へ変更したので、書き込む boot は UEFI となります。以下のコマンドで boot を書き込みます。
bcdboot c:\windows /l ja-jp /s S: /f UEFI

これで完了です。exit して Windows を立ち上げましょう。Windowsを立ち上げて、ディスクの管理を確認します。

EFI システムパーティションができていますね。右クリックしてプロパティーを開きます。

GPT形式になっていることがわかります。

以下は、バックアップ時の bcdeditです。

以下は、リカバリ後の bcdeditです。OSのローダが exe ファイルから、efi ファイルに変更されているのがわかります。