Windowsを「正しく」インストールしよう
はじめに
パーティションサイズが原因でWindows Updateに失敗するという事件が、2年前にもあった。そして2週間ほど前のWindows Update 「KB5089549」でもこのような問題が発生した。
Windowsのインストーラに従ってインストールを進めていると、この問題が再び発生する可能性がある。こわいよ~。
そのため私は最近、長く使う予定のパソコンでは必ずパーティションの設定を自分で行ってからインストールするようにしている。Windowsをインストールするディスクドライブにおいて、Microsoft公式サイトが示す手順に従い、容量に余裕のあるパーティション構成を用いた「正しい」Windowsのインストール方法だと、勝手に私が思い込んでいる。 今回はその「正しい」インストール方法について説明する。
Windowsのインストールに潜む罠
更新に失敗する原因
2026年5月のセキュリティパッチ「KB5089549」に問題、一部デバイスでインストール不能 - 窓の杜
Windowsのインストーラでは、以下のような画面で、Windowsのインストール先を選ぶ。この手順により、例えばSSD全体をインストール先に選んだとき、SSD全体が1つのパーティション(Cドライブ)となり、そこにWindowsがインストールされたように見える。
昔のWindowsではこの認識は正解であった。しかし、現在の環境(UEFI)では、OSパーティションの他に、ユーザーが普段認識することのないパーティションがいくつか作成されている。具体的には、「EFI システムパーティション (ESP)」、「Microsoft 予約パーティション(MSR)」、「回復パーティション」である。これらは左から順に以下の図のように並んでいる。
今回(KB5089549)はEFIシステムパーティション(ESP)の、2年前は回復パーティションの容量不足が原因で、Windows Updateが失敗し続けるという問題が発生していた。
パーティションの容量が足りないなら、そのパーティションの容量だけ増やせばいいじゃんと思う人もいるだろう。
しかし、上の図のようなパーティション構成の中でのサイズ変更はなかなか難しい。 diskpartコマンドを触った経験がある方ならわかるはずだ。
回復パーティションであれば、OSのパーティションを縮小したあとで新たに作り直せば問題は解決できる。Microsoft公式でもそのやり方が案内されている。KB5028997: WinRE 更新プログラムをインストールするためにパーティションのサイズを手動で変更する手順 - Microsoft サポート
しかしESPに関しては、既にMSRやOSパーティションの開始位置が決まっているため、これをOSの機能で移動させることは難しい。一応パーティションを操作するサードパーティ製のソフトウェアは存在するが、これらを使用するのはあまり好ましいことではない。
各パーティションの必要サイズ
各パーティションがどの程度のサイズを必要とするかは、Microsoftの公式ページに記載がある。
[UEFI/GPT ベースのハード ドライブ パーティション | Microsoft Learn] (https://learn.microsoft.com/ja-jp/windows-hardware/manufacture/desktop/configure-uefigpt-based-hard-drive-partitions?view=windows-11)
2026年6月9日時点では、以下のように記載されている。
- EFI システムパーティション: 最小 200 MB (4Knフォーマットの場合は300MB)
- Microsoft 予約パーティション: 16MB
- 回復パーティション: わからない(たぶん700MB)
このパーティションは 300 MB 以上である必要があります。
Windows 回復環境 (Windows RE) ツールには追加の空き領域が必要です。
少なくとも 100 MB が必要ですが、将来の更新 (特にカスタム パーティション レイアウト) に対応できるよう、250 MB をお勧めします。
空き領域を計算する場合は、次のことに注意してください。
回復イメージ winre.wim は、追加するドライバー、言語、カスタマイズによって異なりますが、通常は 500 ~ 700 MB です。
…最近のMicrosoft Learnの日本語訳、雑じゃないですか?この前もPATHコマンドが「道」になってたし
とりあえず700MB以上あれば足りるということなのかな?
パーティションサイズが過小になってしまう理由
今回の不具合(KB5089549)では、EFIシステムパーティション(ESP)が100MBの環境において更新失敗の報告が相次いでいる。これは上記の公式基準を大きく下回っている。
*おいおい、Microsoftが全部悪いじゃねえかよ!*と思ったそこのあなた。
正解!
正解ではあるが、ある意味間違いでもある。 流石のMicrosoftも、自分が提示した基準を満たさないようなインストーラーを作るはずがない。有料のOSだし。
実際、現在の最新版のWindows11をインストールすれば、上記の基準を満たすパーテイション構成が自動で作成される。(私の環境では、ESPが200MB、MSRが16MB、回復パーティションが778MBとなった。)
そして、Wayback Machineで2023年8月の頃の記事を見てみると、 EFIシステムパーティションは最小100MBと書かれており、回復パーティションの「通常は 500 ~ 700 MB です。」の記述もない。
当然と言えば当然だが、Windowsのインストーラーは、そのときの基準に沿ったパーティションサイズでインストールを行うわけだ。そして、OSが大きく更新されるタイミングでESPや回復パーティションのファイルが肥大化したことで、容量が不足して更新に失敗する、という流れで、今回のような不具合が発生する。
*おいおい、結局Microsoftが全部悪いじゃねえかよ!*と思ったそこのあなた。
正解!
Microsoft側は当然、ESPや回復パーティションの「昔の既定サイズ」を知っている。また、Windows11 22H2(初版)の頃からWindows11の動作要件は変わっていないため、初版をインストールしてから今まで更新を続けてきたユーザーが数多く存在するわけだ。にもかかわらず、初期から更新を続けてきたユーザーが確実に遭遇する不具合を盛り込んだ更新プログラムをMicrosoftは公式に配布しているわけだ。意味が分からん。
前置きが長くなってしまったが、何が言いたいかと言うと、「最近のMicrosoftはこういうことを平気でするので、Windowsを更新しながら長く使い続けていくためには、更新を重ねるにつれて各ファイルが肥大化してゆくことを織り込んだ上で、パーティションのサイズを決める必要がある」、ということ。
「正しい」インストール方法
[UEFI/GPT ベースのハード ドライブ パーティション | Microsoft Learn] (https://learn.microsoft.com/ja-jp/windows-hardware/manufacture/desktop/configure-uefigpt-based-hard-drive-partitions?view=windows-11)
本題に入る。要は、上記記事に従いつつサイズに余裕を持ったパーティション構成を予め作成してからWindowsのインストールをすればよい。
パーティションの作成は、画像にて示した「Windows 11 をインストールする場所の選択」で行える。しかし、この画面では特殊な属性を持つパーティションの作成ができない。そのため、diskpartコマンドを使用する必要がある。
インストーラーの起動中は、「Shift」+「F10」キーを押すことでコマンドプロンプトが起動できる。diskpartコマンドはコマンドプロンプト内で使用できる。
でも…、手で全部打つの……めんどくさいよね。
Microsoft公式が配布しているスクリプトを使用
注意!以下で紹介するスクリプトは、ディスクを初期化するコードを含んでいます。慎重に実行してください。間違った使用をした場合、意図しないデータの消去が行われる場合があります。
======
ありがたいことに、適切なパーティション構成を作成するためのdiskpart用スクリプトが、これまたMicrosoft公式ページにて公開されている。
ただしこのスクリプトでは、インストール先がdisk0、ESPのサイズが200MB、回復パーティションのサイズが500MBと指定されているため、その辺りを適宜書き換える必要がある。あくまで2026年6月9日時点の基準に対して余裕を持たせているだけなので、随時最新の基準を見て書き換えていただきたい。
ESPパーティションのサイズは、500MB程度あればかなり余裕だろう。「最小500MB」と言われる時代が来ても、その頃にはもうPCを買い替えているはずだ。 なお、私のメインPCのESPは現在256MBなので、近いうちに容量を拡大して再インストールしたい。
create partition efi size=500とすればよい。
rem == 1. System partition =========================
create partition efi size=500
回復パーティションは、1GB(1024MB)くらいがいいという意見をよく見かけるので、私も1024MBを推奨しておく。最悪足りなくなったら増やせばいいしね。shrink minimum=1024とすればよい。(このスクリプトでは、OSパーティションを最大まで取り、そこから回復パーティションの分だけパーティションを縮小してから、残った部分の全てを回復パーティションとして確保している。)
rem plus some free space.
shrink minimum=1024
rem == c. Prepare the Windows partition =========
インストール先は、diskpart のlist diskコマンドの表示内容を見て適切な番号を選択する。Windowsインストーラー内で「Shift」+「F10」キーでコマンドプロンプトでdiskpartと入力しEnterを押した後、list diskと入力しEnterを押す。
C:\Windows\System32>diskpart
Microsoft DiskPart バージョン 10.0.26100.1150
Copyright (C) Microsoft Corporation.
コンピューター: MAIN
DISKPART> list disk
ディスク 状態 サイズ 空き ダイナ GPT
### ミック
------------ ------------- ------- ------- --- ---
ディスク 0 オンライン 7452 GB 0 B *
ディスク 1 オンライン 465 GB 1024 KB
ディスク 2 オンライン 931 GB 0 B *
DISKPART>
例えば私の環境では、1TBのSSD(ディスク 2)にWindowsを入れたいので、select disk 2となる。
rem as necessary. ==
select disk 2
clean
OSを入れるディスクだけを繋いでおけば大抵それがディスク0になるが、USBのSSDからWindowsをインストールする場合など、対象のディスクがディスク0にならない場合もあるので注意。このスクリプトで指定したディスクは、スクリプト実行時にデータを消去されるので本当に注意。
おわりに
近年のWindowsのインストールは、USBメモリを挿して起動して「次へ」を連打すれば特に問題なく完了するように見え、非常に簡単になったなと感じる。しかし、簡単だと思って油断しているとこういう痛い目を見ることになる場合がある。Windowsのインストールは、可能な限り自分の意思を介在させながら行うのが良い。Windows95の頃のように。
スクリプト起動用バッチを作ったので配布
インストーラー内で毎回ディスク番号を書き換えるのは面倒なので、ディスク番号を指定したら自動でスクリプトを走らせてくれるバッチファイルを作成した。せっかくなので配布する。
使用は自己責任でお願い致します。
使い方
(同梱のreadme.txtから抜粋)
USBメモリ等にreadme.txt以外を入れてください。
Windowsインストールメディアに入れるのがおすすめです。
必ず同じフォルダに全ファイルを入れてください。
USBメモリを挿してPCの電源を入れ、
Windowsのインストーラが起動したら、
「Shift」+「F10」キーでコマンドプロンプトを起動してください。
次に、「notepad」と入力してEnterキーを押してメモ帳を起動し、
「ファイル(F)」->「開く(O)...」をクリック
「ファイルの種類(T)」を「すべてのファイル」に変更し、左側の「PC」をクリックします。
すると、いくつかのドライブが表示されるので、
このバッチを入れたフォルダを開きます。
新品のパソコンならCドライブ(左上)だと思います。
「ディスク番号確認」を右クリックし、「管理者として実行」をクリックします。
すると、ディスク番号と容量の対応表が出てきます。
インストール先のディスク番号を容量から推測し、覚えてください。
容量が同じディスクが複数ある場合は、一度PCの電源を切り、
Windowsをインストールしないディスクを抜いてください。
なんでもいいので文字のキーを押すとこの画面は閉じます。
次に、「WinPartition」を右クリックし、「管理者として実行」をクリックします。
何か文字のキーを押すと、「ディスクの番号を入力してください」と出ます。
先ほど覚えた番号を入力し、Enterを押します。
ディスク番号が正しいことを確認したのち、
何か文字のキーを押すと、自動でパーティションが作成されます。
「続行するには何かキーを押してください」と表示されたら、
なんでもいいので文字のキーを押し、この画面を閉じます。
メモ帳とコマンドプロンプトも閉じてよいです。
画面の指示に従い、「Windows 11 をインストールする場所の選択」まで進めます。
先ほど選んだディスクの「パーティション3: Windows」と書かれている所をクリックし、
「次へ(N)」をクリックします。
あとはまた画面の指示に従ってインストールを進めてください。
説明は以上です。
追記
コマンドプロンプトから直接WinPartition.batを実行しても問題ありません。
解説
実際にはディスク0~2にそれぞれ対応するスクリプトファイルを予め作ってあり、バッチファイルでディスク番号を選択すると対応するスクリプトが実行される、という仕組み。
diskpart用のスクリプトでは変数を扱えず、PowershellはWindowsインストーラー内で使えない。絶対もっと賢いやり方があると思うが、こんなことを生成AIに訊いては計算資源がもったいないので、この方法に落ち着いた。
set DISKNUM=
set /P DISKNUM=
echo OK?
pause
IF "%DISKNUM%"=="0" (
echo Disk0 selected.
if exist "%~dp0\WinPartition_disk0.txt" diskpart /s "%~dp0\WinPartition_disk0.txt"
if not exist WinPartition_disk0.txt echo Script file does not exist.
goto :END
)
IF "%DISKNUM%"=="1" (
echo Disk1 selected.
if exist "%~dp0\WinPartition_disk1.txt" diskpart /s "%~dp0\WinPartition_disk1.txt"
if not exist WinPartition_disk1.txt echo Script file does not exist.
goto :END
)
IF "%DISKNUM%"=="2" (
echo Disk2 selected.
if exist "%~dp0\WinPartition_disk2.txt" diskpart /s "%~dp0\WinPartition_disk2.txt"
if not exist WinPartition_disk2.txt echo Script file does not exist.
goto :END
)