起動ドライブを MBR から GPT に変換して UEFI 環境に移行する方法

ThinkPad X1 Carbon 初代を Windows 10 に移行中なのですが、途中まで作業してはたと気づいた…「MBR のままやん…」。ということで、MBR 形式の起動ドライブ(システムドライブ)を GPT に変換してセキュアブートに移行する方法を紹介します。

ディスクの内容を保ったまま移行できるので、BIOS 起動で Windows 10 などをインストールした後に UEFI 起動に変更したい場合に使えます。今回まさにこのまんまの状況です。

おおまかな流れ

作業の大まかな流れは以下の通り。

  1. 【コンピューターの管理】で物理ディスク番号を確認
  2. gptgen を実行して MBR → GPT 変換
  3. diskpart で UEFI システムパーティションと MRP を作成
  4. bcdboot でブートローダーを設定

1. ~ 2. は、普通に起動した Windows 上での作業です。3. ~ 4. は、回復ドライブなどのメディアから起動させての作業です。あらかじめ回復ドライブを USB メモリなどに作成しておきます。僕の場合は Windows 10 のインストールメディア(USB メモリ)をそのまま使用しました。

Windows 10 を入手する

Windows 10 のインストールメディアは、上記リンク先のメディア作成ツールで簡単に作成できます。

物理ディスク番号を確認する

デスクトップ上とかエクスプローラーの左ペインとかにある【PC】を右クリックして【管理】をクリックし【コンピューターの管理】を起動します。

左ペインの【ディスクの管理】をクリックすると右ペインにディスク一覧が表示されますので、GPT に変換したいディスクの番号を確認します。

gpt-computer

今回の場合はディスク番号『0』で、ディスク先頭にある MBR のシステム予約領域は 500MB でした。(※この後はこの前提で説明します。)

gptgen で MBR → GPT 変換する

以下から gptgen をダウンロードします。

gptgen download | SourceForge.net

使用するファイルは gptgen.exe のみです。解凍して適当な場所に置きます。今回は C:\Windows\System32 に置きました。

管理者権限でコマンドプロンプトを起動し、以下のコマンドを実行します。先ほど確認したディスク番号を指定します。

C:\Windows\System32\>gptgen.exe -w \\.\physicaldrive0

実行は一瞬で終わります。

gpt-gptgen-exec

UEFI 起動用のパーティションを作成する

Windows 10 のインストールメディア(USB メモリ)から起動します。

この時点で BIOS のセキュアブートの設定項目を有効に変更します。まだ起動用のパーティションが無い C: ドライブからは起動せず、インストールメディアの USB メモリから起動するようになります。

起動したら【コンピューターを修復する】→【トラブルシューティング】→【詳細オプション】→【コマンド プロンプト】と選択してコマンドプロンプトを起動します。コマンドプロンプトで diskpart を起動して作業します。

まずディスク一覧を表示して、対象のディスクを選択します。

DISKPART>list disk
 ディスク      状態           サイズ   空き   ダイナ GPT
 ###                                          ミック
 ------------  -------------  -------  -------  ---  ---
 ディスク 0    オンライン      238 GB  2048 KB        *
 ディスク 1    オンライン     7647 MB      0 B
DISKPART>select disk 0

次に対象ディスクのパーティション一覧を表示して先頭にあるシステムの予約パーティションを選択して削除します。今回の場合は先頭の 500MB のパーティションです。これを削除した領域を使って、UEFI システムパーティションと MRP(Microsoft Reserved Partition=システム予約済みパーティション)を作成します。

DISKPART>list partition
  Partition ###  Type                Size     Offset
  -------------  ------------------  -------  -------
  Partition 1    プライマリ           500 MB  1024 KB
  Partition 2    プライマリ           100 GB   501 MB
  Partition 3    プライマリ           137 GB   100 GB
DISKPART>select patition 1
DISKPART>delete partition override

新しく UEFI システムパーティションを作成します。必ず 100MB 以上にします。今回は 100MB で作成しています。フォーマットしてドライブレターを適当に割り当てます(今回は I: を割り当て)。ドライブレターは後で実行するブートローダー設定で指定します。

DISKPART>create partition EFI size=100 offset=1
DISKPART>format quick fs=fat32
DISKPART>assign letter=I

続いて MRP を作成します。サイズは 500MB – 100MB なので 400MB、オフセットは 100MB(=102400KB)+ 1MB(=1024KB)なので 103424KB です。MRP は作成するだけなのでフォーマットとかしません。作成したらパーティションを確認します。

DISKPART>create partition msr size=400 offset=103424
DISKPART>list partition
  Partition ###  Type              Size     Offset
  -------------  ----------------  -------  -------
  Partition 1    システム           100 MB  1024 KB
  Partition 4    予約               400 MB   101 MB
  Partition 2    プライマリ         100 GB   501 MB
  Partition 3    プライマリ         137 GB   100 GB

だいたいこんな感じになっていればOK。今回はパーティション 1 が UEFI システムパーティション、パーティション 4 が MRP です。パーティション番号がずれてたりするけど気にしない。

最後に list volume でドライブレターを確認します。たいていの場合、システムドライブが C: から D: になってしまっているので修正します。ボリューム番号は各自の環境で違うので要確認。僕の場合は元々 D: ドライブもあって、E: になってしまっていたのでそれも修正しました。ドライブレターの修正が終わったら diskpart を終了します。

DISKPART>list volume
DISKPART>select volume 3
DISKPART>assign letter=C
DISKPART>select volume 4
DISKPART>assign letter=D
DISKPART>exit

ブートローダーを設定する

続いてコマンドプロンプトで bcdboot を使ってブートローダーを設定します。

X:\Sources>bcdboot C:\Windows /l ja-JP /s I: /f UEFI

/s オプションの引数として UEFI システムパーティションに割り当てたドライブレター(今回の場合は I:)を指定します。

あとは再起動すれば UEFI で起動するはずです。

上記が面倒な人にはコレ。

僕もフリー版にはお世話になってます。MBR → GPT 変換は Professional 版でしか出来ないみたいなので試せてないのですが、今回みたいにちまちまやるよりは簡単なはず。

スポンサーリンク
レクタングル(大)
レクタングル(大)

フォローする

コメント

  1. mifjpn より:

    いい記事をありがとうございます。ところで、
    create partition msr size=400 offset=10342
    ではなく
    create partition msr size=400 offset=103424
    ですよね。ちょっとTYPOでしょうか、
    ちょっとヒヤッとしました^^;

  2. ふじた より:

    mifjpnさん、コメントありがとうございます。
    ご指摘の通りTYPOです。大変失礼いたしました。
    今更ですが修正しました。