読者です 読者をやめる 読者になる 読者になる

苦労と試行

自作PC中心の備忘録

MBRのWindows 7を、再インストールなしでGPTに変換する方法

 録画用サブマシン (Pentium G3420、GA-H97N-WIFIWindows 7) のシステムドライブに使っているSSDをOS再インストールせずに交換しようとして、MBRとGPTの壁にぶつかった。

 同じIntel 530シリーズの240GBから480GBへ取り替えるので、システムイメージのバックアップを使うだけでお手軽に済むと思っていた。しかしインストールディスクのDVDからブートして、コンピュータの修復を選ぶ段階でエラー。どうやらシステムドライブにMBRでインストールされており、そのバックアップイメージを保存したデータ用HDDがGPTのため、うまくいかないらしい。

 ……おととしサブマシン組んだときはMBR/BIOSとGPT/UEFIの違いなんてまったく意識してなくて、インストール途中で選べたのかどうかすら覚えてないよー (呆

 

 再インストールしてもいいけど、OSまわりより録画環境を構築しなおすのが面倒だなあ……という怠け根性から解決法を探したところ、こちらの記事が見つかり大いに参考にさせていただきました。

http://plaza.rakuten.co.jp/coolverse/diary/201406170000/

(元ソースの英文)

http://www.mpspartners.com/2013/10/how-to-convert-windows-7-on-mbrbios-to-gptuefi/

 

 ただし、書いてあるとおりにやっただけではOSが起動せず、手順をいじりつつ何度かやり直して成功しました。これで手持ちのドライブは全部GPTになったので、もう2度とやることはないだろうけど、せっかくなので自己流をメモしておきます。

 

※必要なのはWindows 7のインストールメディアだけで、特殊な専用ツールやアプリケーションのたぐいは一切使いません

 

SSD交換前〉

・システムドライブ (自分の場合はc) のイメージバックアップを作る

・生成されたイメージファイルの名前と場所を撮るなりメモるなりして控えておく

例) D:\WindowsImageBackup\PC名\Backup YYYY-MM-DD XXXXXX\半角英数列.vhd

 ※「.vhd」でファイル検索するのが手っ取り早い

 ※忘れても後で必要になったときにコマンドプロンプトで探せるかも

 

〈シャットダウンしてSSDを交換後、Windows 7インストールメディアでブート〉

・OSインストールの初期画面になったらShift+F10でコマンドプロンプト

> diskpart

> list disk

・交換した、OSリストア先になるディスクの番号を一覧から覚えておく (ここでは仮に1とする)

> select disk 1

> clean

> convert gpt

・GPTになったので、ここでlist diskの一覧を見れば * がついている

> create partition EFI size=100

※元記事は128だが100でも大丈夫、ESPではなくEFI

> format fs=fat32 quick

> assign letter=i

※iじゃなくてもよい

> create partition MSR size=128

※128じゃなくてもよいらしい

> create partition primary

> format fs=ntfs label=”Windows” quick

・元記事ではここでactiveコマンドを入れているが、GPTでは無効なので不要

> assign letter=y

※yじゃなくてもよい。もしかするとcの方があとで楽かも

> exit

・仮想ディスクをマウントするため (たぶん) 、diskpartを再起動

> diskpart

> select vdisk file=filename.vhd

・filenameは控えておいたvhdファイルの名前をフルパスで入力する

例: > select vdisk file="D:\WindowsImageBackup\PC名\Backup YYYY-MM-DD XXXXXX\半角英数列.vhd"

> attach vdisk

> assign letter=z

※zじゃなくてもよい

> exit

> z:

> xcopy * y:\ /e /c /h /k /o /b /q /y

・コピー完了まで時間がかかる。アクセス拒否のメッセージが出ても、終わるまで待つ

> i:

> mkdir EFI

> cd EFI

> mkdir Boot

> mkdir Microsoft

> cd Microsoft

> mkdir Boot

> copy x:\Windows\Boot\EFI\bootmgfw.efi i:\EFI\Microsoft\Boot

> copy x:\Windows\Boot\EFI\bootmgfw.efi i:\EFI\Boot\bootx64.efi

 

 ここまでの手順は元記事とほぼ同じ。ここから先はブート情報の再構築を行うのだが、自分の環境では元記事の手順どおりではOSが起動しなかった。下記のとおり、より簡単な手順に変えたところ解決した。

 

> diskpart

> list volume

・一覧からyを探し、番号を覚える (ここでは仮に3とする)

> select volume 3

> assign letter=c

※要するにOSがリストアされたyをcに変えておいてから、ブート情報を再構築する

> bootrec /RebuildBcd

・ブート一覧に追加する候補のボリュームが2つ検索されるが、仮想ディスクのzは追加せず (n)、cだけ追加する (y)

> exit

コマンドプロンプトを抜ける

 

 Windowsのインストール初期画面に戻ったら、escで中断して再起動し、UEFIでブート優先順の先頭がWindows Boot Managerに変わっているか確認。これでOSが起動するはず。

※元記事ではブート情報の再構築でBCDストアを手動修復しているが、英文ソースによるとこれはbootrec /RebuildBcdの自動修復でうまくいかないときの手順らしい