仮想マシンの Windows 10 -> 11 の一連の記事になります。
こちらの記事で、 VirtualBox 上の仮想マシンを Windows 10 から 11 へのアップグレードする話をまとめました。
で、同じことを別の仮想マシン(こちらの記事で VMDK から VDI に変換していたやつ)についても、アップグレードをやってみると、あら不思議、 GPT ディスクに変更したタイミングで、 C ドライブがあるパーティションの後ろに EFI パーティションが作られていました。
何じゃこりゃ?
最初に Windows 11 へのアップグレードを試したやつ(こちらの記事参照)を確認すると、EFIパーティションが先頭に作られていました。
何が違うんだろうか?まあ、詳しい理由は不明ですが、 C ドライブのパーティションの後ろに、EFI パーティションが作られることがあるようですね。
でも、このままだとシステムパーティションが拡張できないので、いまのままだと容量不足で Windows 11 へのアップグレードができません。
ということで、 EFI パーティションを移動させて、 C ドライブを拡張したので、その顛末をメモっておきます。
EFI パーティションの移動
ネットを調べてみると、同じようなことに困っている人がたくさんいるようで、いろいろな記事を見つけることができました。中でも、わかりやすかったので、下記の記事を元に作業を行いました。
Moving EFI partition before C:
おおまかにいうと、 EFI パーティションを移動させるのではなく、新しい EFI パーティションを前方に作って、その後古い EFI パーティションを削除するという方法になります。
(参考)
なお、EFI パーティションの移動に関する記事は他にもいろいろありました。
ご自分のわかりやすいものを参考にしてください。
準備
まず、準備として GParted Live というツールを入手しておきます。名前に聞き覚えがあるなと思ったら、昔 Linux インストールするときとかにお世話になったやつですね。
GParted -- Live CD/USB/PXE/HD
とりあえず、 iso イメージをダウンロードしておきます。
次に、今回見つけた記事に注記として書いてあるように、今の EFI パーティションの後方にある空き領域にダミーのボリュームを作成しておきます。
とりあえず、これで準備完了です。
パーティションの操作
仮想マシンの Windows 10 を起動します。コマンドプロンプトを管理者権限で開いて、 diskpart コマンドで操作していきます。
まずは、 C ドライブの直後に空き領域を作ります。
DISKPART> select disk 0
ディスク 0 が選択されました。
DISKPART> list partition
Partition
------------- ------------------ ------- -------
Partition 1 プライマリ 59 GB 1024 KB
Partition 2 システム 100 MB 59 GB
Partition 3 回復 563 MB 59 GB
Partition 4 プライマリ 20 GB 59 GB
DISKPART> select partition 1
パーティション 1 が選択されました。
DISKPART> shrink desired=100
ボリュームは、次の方法で正常に縮小されました: 100 MB
DISKPART>
今回の場合は、パーティション1というのがCドライブがあるパーティションになります。操作結果はこんな感じになります。
一度、シャットダウンして、次は GParted での操作になります。
GParted を起動
仮想マシンの CD ドライブとして、先ほどダウンロードした GParted Live の iso ファイルを割り当てます。
これで、起動してくれればいいんですが、 EFI の Windows の場合、VirtualBox のブート順が無視されるそうです。
How to Boot from ISO on VirtualBox EFI machine. - WinTips.org
このため、 CD にセットした iso イメージを立ち上げるためには、仮想マシンを立ち上げたら、 ECS キーを連打します。
うまくいくと、上のような画面が表示されるので、 Boot Manager を選択します。すると、下記のような、どのメディアから起動するかの選択画面が表示されるので、
VirtualBox の CD を選択します。すると、 GParted Live の起動メニューが表示されます。
特に問題なければ、一番上のデフォルト設定の GParted を起動します。
起動時にキーマップ、言語、 UI などを聞かれますが、言語以外はデフォルトにして、言語は日本語を選択して起動します。無事に起動すると下記のような画面が表示されます。
Cドライブのあるパーティションの移動
さきほど、 C ドライブの後ろに空き領域を作ったので、 GParted で Cドライブがあるパーティションを後ろに移動させて、前方に空き領域を作ります。
C ドライブのあるパーティション( /dev/sda1)を選択して、『リサイズ/移動』をクリックすると
のような画面が表示されます。
- 前方の空き容量が 0 MB
- 後方の空き容量が 101MB
となっているので、これを入れ替えるようにします。
『リサイズ/移動』ボタンを押してのち、実行をすると、
のような警告がでますが、そのまま続けます。最終的に、
のような形になれば終わりです。
GParted を終了し、CD の iso ファイル設定を解除後、再度 Windows を起動します。Windows 上でパーティションをみると
こんな感じなってました。
新しい EFI パーティションの作成
Windows が起動したら、再度コマンドプロンプトを管理者権限で立ち上げて、 diskpart で操作を行います。
DISKPART> select disk 0
ディスク 0 が選択されました。
DISKPART> list partition
Partition
------------- ------------------ ------- -------
Partition 1 プライマリ 59 GB 102 MB
Partition 2 システム 100 MB 59 GB
Partition 3 回復 563 MB 59 GB
Partition 4 プライマリ 20 GB 59 GB
DISKPART> create partition efi
DiskPart は指定したパーティションの作成に成功しました。
DISKPART> list partition
Partition
------------- ------------------ ------- -------
* Partition 5 システム 101 MB 1024 KB
Partition 1 プライマリ 59 GB 102 MB
Partition 2 システム 100 MB 59 GB
Partition 3 回復 563 MB 59 GB
Partition 4 プライマリ 20 GB 59 GB
DISKPART>
パーティションを作成する際に、容量を指定しない場合は最大のサイズで作成してくれるとのことです。次に、作成した EFI パーティションをフォーマットしておきます。
DISKPART> list partition
Partition
------------- ------------------ ------- -------
* Partition 5 システム 101 MB 1024 KB
Partition 1 プライマリ 59 GB 102 MB
Partition 2 システム 100 MB 59 GB
Partition 3 回復 563 MB 59 GB
Partition 4 プライマリ 20 GB 59 GB
DISKPART> format quick fs=fat32
100% 完了しました
DiskPart は、ボリュームのフォーマットを完了しました。
DISKPART> assign letter=x
DiskPart はドライブ文字またはマウント ポイントを正常に割り当てました。
DISKPART>
ここで EFI パーティションにドライブレター(上記では x: )を割り当てておきます。Windows で見ても EFI パーティションとして認識されてますね。
diskpart を終了し、最後に EFI パーティションに起動関連のファイルを作成します。
C:\WINDOWS\system32>bcdboot C:\Windows /s x:
ブート ファイルは正常に作成されました。
C:\WINDOWS\system32>
ここまでで、 EFI パーティションの作成は完了です。一度シャットダウンして、問題なく起動できることを確認します。
パーティションを整理
問題なく Windows が起動できれば、最後に古い EFI パーティションや不要なパーティションを削除しておきます。また、 C ドライブの容量も増やして、 Windows 11 のインストール要件を満たすようにします。
ここでも、コマンドプロンプトから diskpart を呼び出して実行します。
DISKPART> select disk 0
ディスク 0 が選択されました。
DISKPART> list partition
Partition
------------- ------------------ ------- -------
Partition 1 システム 101 MB 1024 KB
Partition 2 プライマリ 59 GB 102 MB
Partition 3 システム 100 MB 59 GB
Partition 4 回復 563 MB 59 GB
Partition 5 プライマリ 20 GB 59 GB
DISKPART> select partition 3
パーティション 3 が選択されました。
DISKPART> delete partition override
DiskPart は選択されたパーティションを正常に削除しました。
DISKPART> list partition
Partition
------------- ------------------ ------- -------
Partition 1 システム 101 MB 1024 KB
Partition 2 プライマリ 59 GB 102 MB
Partition 4 回復 563 MB 59 GB
Partition 5 プライマリ 20 GB 59 GB
DISKPART> select partition 4
パーティション 4 が選択されました。
DISKPART> delete partition override
DiskPart は選択されたパーティションを正常に削除しました。
DISKPART> list partition
Partition
------------- ------------------ ------- -------
Partition 1 システム 101 MB 1024 KB
Partition 2 プライマリ 59 GB 102 MB
Partition 5 プライマリ 20 GB 59 GB
DISKPART> select partition 5
パーティション 5 が選択されました。
DISKPART> delete partition
DiskPart は選択されたパーティションを正常に削除しました。
DISKPART> list partition
Partition
------------- ------------------ ------- -------
Partition 1 システム 101 MB 1024 KB
Partition 2 プライマリ 59 GB 102 MB
DISKPART>
上記の操作は、
- パーティション3は、古いEFIパーティション
- パーティション4は、回復パーティション
- パーティション5は、ダミーのパーティション
なので、これらをすべて削除するというものです(回復パーティションはこのあと Windows 11 をインストールする際に、 C ドライブの拡張が簡単にできるように消してしまいました)。
最後に C ドライブを拡張しておきます。
DISKPART> list partition
Partition
------------- ------------------ ------- -------
Partition 1 システム 101 MB 1024 KB
* Partition 2 プライマリ 59 GB 102 MB
DISKPART> select partition 2
パーティション 2 が選択されました。
DISKPART> extend
DiskPart はボリュームを正常に拡張しました。
DISKPART>
こんな感じになりました。
まとめ
ここまで操作ができると、この仮想マシンの場合は、Windows11 が OK となりました。
あとは、前回の記事の通り、 Windows 11 をインストールしてやればOKです。なお、インストールの時、再起動がうまくいかないなど若干不安な点もありましたが、無事に立ち上がるようになりました。