2013年8月24日土曜日

BIOS+MBRなWindows7/8を、データコピーやデータ移動まったくなしで UEFI+GPTな環境に移行する

私が以前、BIOS+MBRなWindows7をインストールしなおし無しでUEFI+GPTに移行したときは
Migrate to UEFIというParagon社のツールを使いました。
しかしこの方法は2つストレージが必要な上にddコマンドを使ってちょっと無理矢理くさいです。
また、Migrate to UEFIはParagonのアーリーアダプタープログラムからダウンロードが今現在できないようになってしまっています。

そこで、別の方法としてしかも1つのストレージでデータコピーすら必要ない方法を紹介しようとおもいます。
ネタ元はMS本家のサイトであるTechNetからです。Windows8のBIOSインストールにも使えると思われます。




まずは参考URLを貼っておきましょう
Converting Windows BIOS installation to UEFI

これをざっくり簡単に説明します。ほぼそのまま引用です。

まず始めにですがBitLockerを使用してる人は切っておいてください。
また、Windows7/8 x64である必要があります。
もしデータが消えたときのために念のためバックアップはしておきましょう
そして最後に、4GB以上の容量を持つリムーバブルディスクかWindowsのインストールディスクを用意しておいてください。

これを行なった場合Windows7より古いWindowsや32bit版のWindowsは起動できなくなることに留意してください。

では手順の説明をします。

1. まずここを参考に4GB以上のリムーバブルディスクにシステム修復ディスクを作成しましょう。Windowsのインストールディスクを持ってる人はこれを行なう必要はありません。

2. 次に、ディスクの管理から自分がGPTにコンバートしたいハードディスクの番号を覚えて下さい。普通、Cドライブはディスク0、つまり0番目になっています。

3. http://sourceforge.net/projects/gptgenからgptgenをダウンロードし、解凍します

4. 解凍したgptgenを管理者権限で起動したコマンドプロンプトからこのように使います
gptgen.exe -w \\.\physicaldrive0
physicaldrive0の0は2で確認した番号にしてください

(本記事著者注・Linuxのインストールメディアなどを持ってる人はWindowsを最初から起動せずそちらを使ってブートし、gptgenの変わりにgptdisk(コマンド名はgdisk)を使ってしまってもいいかもしれません。未確認ですが。)

5. 一度シャットダウンした後、1で用意したシステム修復ディスクまたはWindowsインストールディスクを使ってブートします。

6. 起動したら コンピューターの修復-> トラブルシューティング -> 拡張オプション -> コマンドプロンプトでコマンドプロンプトを起動しましょう。 インストールディスクの場合は次へを押したあとコンピューターの修復を選べば良いです

7. diskpartをコマンドプロンプトから起動してください
X:\Sources>diskpart

8. list diskを実行したら

DISKPART>list disk
      Disk ###     Status             Size         Free     Dyn  Gpt
       --------  -------------  -------  -------  ---  ---
     * Disk 0      オンライン         128 GB     0 B                *

のように表示されるはずです。ここでディスク番号を確認しましょう

9.
 DISKPART>select diks 0 
とし先ほど確認した番号のディスクを選択します

10. list partitionを実行し、

DISKPART>list partition        Partition ###      Type                    Size        Offset
        -------------  ----------------  -------  -------
        Partition 1         プライマリ              350 MB   1024 KB
        Partition 2         プライマリ              126 GB    350 MB

のようになっているのを確認しましょう(この場合パーティション1が普段表示されないシステムドライブでパーティション2がCドライブ、つまり本体になります)

11. とりあえずシステムパーティション消します
DISKPART>select partition 1
DISKPART>delete partition
12. あたらしくUEFIシステムパーティションとMicrosoft Reserved Partition(システム予約済みパーティション)を作成しましょう
DISKPART>create partition EFI size=100 offset=1
DISKPART>format quick fs=fat32 label="System"
DISKPART>assign=S
DISKPART>create partition msr size=128 offset=103424
ここで作るパーティションサイズとUEFIシステムパーティションのラベルはなんでもいいですが、 UEFIシステムパーティションは100MB以上にするようにしてください。あとoffsetとかに気をつけましょう

13. もういちどlist partitionで確認
        Partition ###     Type                     Size        Offset
        -------------  ----------------  -------  -------
        Partition 1          システム               100 MB    1024 KB
        Partition 2          予約                    128 MB    101 MB
        Partition 3          プライマリ              126 GB    229 MB
おおむねこんなかんじになってればオッケー

14. 今これだとWindowsが入ってるのがDドライブとかになっちゃってるはずなのでCドライブに変更
DISKPART>list volume
DISKPART>select volume 3
DISKPART>assign letter=C
 例だと3つ目のボリュームになってますがこれは個々の環境で違うのでlist volumeの結果に応じて番号を変えてください。普通は1だとおもわれます。別にDのままで運用したいとか他のドライブレターにしておきたいという人はCじゃなくて好みのドライブレターを割り当ててください

15. dikspartを終了
DISKPART>exit
16. ブートローダーを設定
X:\Sources>bcdboot c:\windows /l ja-JP /s s: /f UEFI
C:となってるところはWindowsのインストールされているドライブ名です。14で設定したとおりですが環境に応じて変更してください。普通はCのままだとおもいますがDとかにしてる人はDにしましょう
/lの後のja-JPはロケールです。ブート時の言語が変わります。
/fオプションでBIOSかUEFIか変更できますが、私の場合/fオプションが付いてるとbcdbootが実行できませんでした。そういう時は/f UEFIの部分は入力しなくていいです。エラーメッセージが出たりしますがなんとかなります。
/s s: は Boot Configuration Data(BCD)を保存するファイルを置くドライブを指定しています。今回は,先程つくった EFI System Partition に指定しています。

17. これで再起動したらおしまい。

あとはBitLockerを有効にしなおしたりなんだりは御随意に。

ほぼ参考元の記事をそのまま引用してざっくり和訳風味にしただけですが、何かの役に立てば幸いです。この記事でわからないところあれば引用元の記事をそのまま見たほうがわかりやすいですきっと。なんせMS本家ですし。

ではよいUEFIライフを