Windows10のパーテーション構成
Windows10でのパーテーション構成は,バージョンごとに変更されている。
以下は,それを調べた情報です。
Windows10のパーテーション構成の説明の前に,私の現在のPCを例にしてWindows7のパーテーション構成がどうなっているか調べてみる。
BIOS/MBRベースのdisk0
Systemで予約 | C: |
100MB | 465.7GB |
NTFS | NTFS |
BIOS/MBRベースのdisk1
D: | E: | 未割り当て |
977.5GB | 540.5GB | 345.0GB |
NTFS | NTFS | |
私の現在のWindows7のHDDのパーテーション構成(2個のHDD)
Windows7では,Systemで予約(システムパーティション)とC:等のWindowsパーテーションがある。PCメーカーから販売されているPCでは,この他にリカバリ用のパーテーションがある。
Windows XPの時にはWindowsパーテーションしかなかったのですが・・・
システムパーティションには,bootmgr等のブートに必要なファイルがあって,ブートパーティション(アクティブ)になっています。
Windows7をWindows10にアップグレード後のパーテーション構成
上記の私のWindows7をWindows10にアップグレード後のパーテーション構成はこのようになっている。
BIOS/MBRベースのdisk0
Systemで予約 | C: | 回復パーテーション |
100MB | 465.1GB | 607MB |
NTFS | NTFS | NTFS |
BIOS/MBRベースのdisk1
D: | E: | 未割り当て |
977.5GB | 540.5GB | 345.0GB |
NTFS | NTFS | |
disk0は,C:に割り当てられていたパーテーションを465.7GBから465.1GBに縮小し,その後に新しく607MBのパーテーションが作成されている。
新しく作成されたパーテーションは回復パーテーションと思われる。
Windows7をWindows10にアップグレードしようとしたところ,「アップグレードに失敗しました」でアップグレード出来なかった。
C:パーテーションをディスクデフラグした後,やっとアップグレードが出来ました。またアップグレードで非常に時間がかかったのも,パーテーションを縮小するのに時間がかかったんだと思う。
MicrosoftからのWindows10の推奨パーテーション構成
現在のWindows10では,以下のようなパーテーション構成とするようにMicrosoftが推奨しています。(しかし,Windows10をクリーンインストールした時はこの推奨パーテーション構成にはならないが・・・)
最近販売されているWindows10がインストールされたメーカー製PCやMicrosoft Surfaceでは,この構成になっているようです。
BIOS/MBRベースのdisk0の推奨パーテーション
System | Windowsパーテーション | 回復パーテーション |
min 100MB | 32bit:16GB以上 | 500MB未満:WinRE +50MBの空き |
BCDを配置 | 64bit:20GB以上 | 500MB以上:WinRE +320MBの空き |
| NTFS | (1GB以上は1GB以上の空きを推奨) |
| | 回復ツール(WinRE)を配置 |
UEFI/GPTベースのdisk0の推奨パーテーション
EFI System | MSR | Windowsパーテーション | 回復パーテーション |
min 100MB | 16MB | 32bit:16GB以上 | min 300MB |
FAT32必須 | | 64bit:20GB以上 | 500MB未満:WinRE +50MBの空き |
BCDを配置 | | NTFS | 500MB以上:WinRE +320MBの空き |
| | | (1GB以上は1GB以上の空きを推奨) |
| | | 回復ツール(WinRE)を配置 |
現在のMicrosoftからのWindows10 推奨パーテーション
BCDは,ブート構成データ(Boot Configuration Data)で,ブートローダーが参照するためのデータが格納されている。
回復パーテーションは,Windows10をいわゆる「工場出荷」時や「以前のバージョン」などの特定の状態へ戻すためのプログラムやデータを保存している特殊なパーティション。
間違っての変更や削除を防止するため,回復パーティションには通常ドライブ文字が無く,Windowsエキスプローラーからは見えなくなっている。
MSRは,なんのために使用しているかは不明。
Windows10のクリーンインストール後アップデートした時のパーテーション構成
実際にWindows10(1709以前)のクリーンインストールを行った後,Windowsアップデートにより1709に更新し,さらに1803に更新した後のパーテーション構成は以下のようになっていた。
BIOS/MBRベースのPC:1803にアップデート後
Systemで予約 | C: | 回復パーテーション |
500MB | 59.03GB | 493MB |
BCDを配置 | NTFS | NTFS |
UEFI/GPTベースのPC:1803にアップデート後
回復パーテーション | EFI | MSR | C: | OEMパーテーション |
499MB | 99MB | 16MB | 125.51GB | 904MB |
| BCDを配置 | | NTFS | NTFS |
Windows10 1709以前でクリーンインストール -> 1709アップデート -> 1803アップデート
Windows10 1709にアップデート時点では,BIOS/MBRベースのPCでは3つ目(493MB)の回復パーティション,UEFI/GPTベースのPCでは5つ目(904MB)のOEMパーティションは存在しなかった。
これらのパーティションは,WindowsアップデートによるWindows10 1803へのアップグレード時に,Windowsパーティション(C:)を縮小して自動で追加作成されたパーテーションと考えられる。
UEFIでは大きく変更されている。それは,回復/OEMパーティションが,ディスクの先頭と最後に2つ存在しているところ。
実は,前方の回復パーティションは事実上空っぽであり,何の用途にも利用されていない。(無駄)
初期のWindows10をクリーンインストールする時は,Windowsセットアップが作成する既定のパーティション構成は現在の推奨パーティション構成とは異なっていて,従来のパーティション構成を引き継いでいた。
従来のパーティション構成とは,Windows8.1の既定(Default)パーティション構成のそれに近いもの。
しかし,Windows10 1803ではそのサイズに収まりきらなくなり,アップグレード時(BIOS/MBRベースは2018/04のリリース時,UEFI/MBRベースは2018/07のリリース時)に回復パーティションが後ろに追加され,上記の表のようになったと考えられる。
Windows10のクリーンインストール時のパーテーション
BIOS/MBRベースのdisk0(クリーンインストール時)
System | Windowsパーテーション |
v511-1703: 500MB | disk0の残りの領域 |
v1709-1803:549MB | v1803 2018/07リリース時はWinREがC:\Recovery\WindowsREにセットされる。 |
BCD+WinREを配置 | NTFS |
UEFI/GPTベースのdisk0(クリーンインストール時)
回復(回復ツール) | EFI System | MSR | Windowsパーテーション |
v1507-1704:4500MB | 99MB | 16MB | disk0の残りの領域 |
v1709-1803:499MB | BCDを配置 | | v1803 2018/07リリース時はWinREがC:\Recovery\WindowsREにセットされる。 |
WinREを配置 | | | |
Windows10のクリーンインストール時のパーテーション
Windows8.1では,BIOS/MBRベースのシステムパーティションの既定サイズは350MB,UEFI/GPTベースの回復ツール(WinRE Tools)パーティションの既定サイズは300MB。
Windows7のシステムパーティションの既定サイズは100MBだったが,それ以前のバージョンアップグレードした場合は,シングルパーティション構成の場合もあった。
Windows10の場合,Windows8.1とは異なり回復用のカスタムイメージを必要としなくなった。
そのため,Windows8.1の推奨パーティション構成にある回復パーティションを,Windows8.1と同じ用途(OEMベンダーが工場出荷時イメージを格納するため)に使用することはなくなった。
Windows10 1709までは,このパーティション構成で問題はなかった。
なぜなら,1709までの回復ツール,Windows回復環境(Windows Recovery Environment:WinRE)のイメージ「WinRE.wim」のサイズが,要求される空き領域を考慮しても表4のパーティション構成に収まっていたから。
自分でWindowsをクリーンインストールする場合,作成される既定のパーティション構成は,最新のWindows10 1803(2018/07リリース)でも変わっていない。
この結果,先頭にある回復パーテーションに収まり切らなくなってしまったWinREは, C:\Recovery\WindowsRE にセットアップされてしまい,先頭の回復パーティションが使用されないという残念な問題が発生することになっている。
つまり,アップグレードでは推奨パーティション構成の一部(ディスクの最後の回復パーティションに回復ツールを配置する)が作成される構成になるのだが,クリーンインストールではそのようにならない。
Windows10 1809(2018/10/02リリース,ただし,10/06より提供が停止されて,修正版が11/14に再リリース)のクリーンインストール時に作成される既定のパーティション構成もこの問題のまま変更されていません。(困ったものです。)
ただし,WinRE.wimのサイズがコンパクト(32bit版で約321MB,64bit版で約442MB)になったため,先頭の回復パーテーションに配置はされるようにはなっている。(ただし,回復ツールのみで,回復時に使用するイメージファイルは含まれていない。)
推奨パーティション構成でWindows10をクリーンインストールする方法
これからWindows10を導入(Windows7からのアップグレード)するという企業も多い。
その際,大量のクライアントPCをセットアップするために,イメージ展開でのインストールをとることもある。
この場合は,Microsoftからの推奨パーティション構成をして,十分な容量の回復パーティション(最小1GB,推奨2GB程度)を準備するようにすべきです。
推奨パーティション構成は,Windows10のどのバージョンをインストールするのかに関係なく,採用すべきです。
なぜなら,回復パーティションに十分な領域がない場合やWindowsセットアップの既定にまかせてインストールすると,Windows10 1803のクリーンインストールでは,WinREがC:ドライブにセットアップされるという問題が出るからです。
また,それ以前のWindows10をクリーンインストールする場合でも,1803以降へのアップグレード時に余計な回復パーティションが追加作成されることになるのも問題です。
Windowsセットアップメディアを使用して,推奨パーティション構成でWindows10をクリーンインストールするには,次の手順でWindows10をインストールするようにします。
- Windows10のインストールメディアでPCを起動し,Windowsセットアップを開始する
- Windowsセットアップが表示されたら,Shift+F10を押してコマンドプロンプトを開く。
このコマンドプロンプトは,Windowsプレインストール環境(Windows Preinstallation Environment:WinPE)のコマンドプロンプトで,X:ドライブ(RAMディスク)に展開されたWindowsイメージから起動される。
- 以下のようにしてファイルを作成する
BIOS/MBRベースのPCの場合:
> notepad X:\CreatePartitions-BIOS.txt
select disk 0
clean
create partition primary size=100
format quick fs=ntfs label="System"
active
create partition primary
shrink minimum=1024
format quick fs=ntfs label="Windows"
create partition primary
format quick fs=ntfs label="Recovery"
set id=27
list volume
exit
UEFI/GPTベースのPCの場合:
> notepad X:\CreatePartitions-UEFI.txt
select disk 0
clean
convert gpt
create partition efi size=100
format quick fs=fat32 label="System"
create partition msr size=16
create partition primary
shrink minimum=1024
format quick fs=ntfs label="Windows"
create partition primary
format quick fs=ntfs label="Recovery tools"
set id="de94bba4-06d1-4d40-a16a-bfd50179d6ac"
gpt attributes=0x8000000000000001
list volume
exit
として,ファイルを作成する。
この例では,回復パーティション用に1GBを割り当てている。これ以上のサイズを割り当てたい場合は,shrink minimum=<サイズ(MB)>の行で調整すれば良い。
また注意することとして,今ではもうほとんど使われてないとは思うが4KBセクターの場合は,size=260のようにしてサイズを大きくする必要がある。
- 以下のコマンドを実行する
BIOS/MBRベースのPCの場合:
> DiskPart /s X:\CreatePartitions-BIOS.txt
UEFI/GPTベースのPCの場合
> DiskPart /s X:\CreatePartitions-UEFI.txt
これで,推奨パーティション構成がストレージに作成される。
- コマンドプロンプトを終了する
- Windowsセットアップを使用してクリーンインストールを行う
「Windowsのインストール場所を選んでください」で,
BIOS/MBRベースのPCの場合:
ドライブ0 パーティション2:Windows(プライマリ)
UEFI/GPTシステムの場合:
ドライブ0 パーティション3:Windows(プライマリ)
を指定する。
- その後は,通常通りにインストールを進める
この手順でクリーンインストールすると,最小のパーティション数と最適なパーティションサイズでWindows10とWinREを適切にセットアップ出来る。
コマンドプロンプトやWindows PowerShellを管理者として起動し,
で,WinREのセットアップ状況を確認出来る。
イメージ展開用のマスターイメージを取得するためのPCにインストールする場合は,推奨パーティション構成にこだわる必要はない。
なぜなら,イメージ化するのはC:ドライブだけなのと,推奨パーション構成はイメージ展開の際に実装すれば良いから。
MBRとGPTの違い
上記でBIOS/MBRやUEFI/GPTというのが出てくるが,このMBRやGPTというのはストレージのパーテーションを管理する手法のことです。
HDD/SSD等のストレージは,どちらかのパーティション管理を使って初期化され使用されます。
- MBR(マスタブートレコード)
- GPT(GUIDパーティションテーブル)
BIOSとUEFIは,PCのファームウェアの仕組みの違いで,BIOSはIBM PC時代から使われているファームウェアの仕組みで,UEFIはそのBIOSを置き換えてより高度な処理ができるようにしたファームウェア。
Windows OSを使用する場合には,BIOSではMBRしか使えず,UEFIではGPTしか使えません。
他のOS(Linux等)では,BIOSでGPTを使用するといったことが問題なく使用できます。
MBR
昔から使われているパーテーションの管理方法。
2TBを超えるストレージディスクは,制限により全容量を使用することが出来ず容量の一部が無駄になってしまう。
作成できるパーティションは,プライマリとして4個,またはプライマリ3個+拡張1個の合計4個。(拡張パーティションの中に論理パーティションを多数作成可能)
起動することが出来る(ブートパーテーション)として1個だけをプライマリパーテーションに設定できる。拡張・論理パーティションはブートパーテーションに設定できない。
GPT
MBRに変わって使われているパーテーション管理方法。
2TBを超えるディスクを扱えるように開発された。古いWindowsでは使用できない。
GPTにインストール出来るWindows OSとしては,64bit版 Windows Vista SP1以降のWindows,Windows Server 2008以降になっていて,32bit版 WindowsではGPTを利用することはほぼ出来ない。
設定できるパーティション数は,デフォルトで128まで可能になっている。
Windows10のKB5034441更新が失敗する
2024/01のWindows UpdateでKB5034441の更新があったが,この更新が0x80070643エラーで失敗する。失敗しても再度Windows Updateが自動的に更新を実行するが,毎回失敗してしまう
私のWindows10はWindows7からアップデートしたもので,上記のように回復パーテーションのサイズは607MBになっている。このパーテーションの空き容量は64MBになっていた。
KB5034441は回復パーテーションを更新するようだが,正常に更新するには回復パーテーションの空き容量が250MB無いとサイズが足りなくて(パーテーションサイズは710MB程度必要)失敗してしまうようだ。
たまたま回復パーテーションの後ろが未割り当になっていた(以前HDDを容量が大きいSSDに換装していたため)ので,回復パーテーションをちょっと多めだが1.0GBにパーテーションエディターで拡大した。
この後,再度KB5034441の更新を行ったところ無事問題なく更新ができた。
後ろに未割り当ての領域がない場合は,Windowsのシステム(Cドライブ)のパーテーションを足りない分を縮小して,後ろにある回復パーテーションを移動・拡大するような作業が必要になる。
回復(WinRE)パーテーションを移動・拡大する。
Windowsのシステム(Cドライブ)のパーテーションを足りない分を縮小して,後ろにある回復(WinRE)パーテーションを移動・拡大するような作業がを行う場合,以下の方法で行える。
無料で使用できるMiniTool Partition Wizardなどのパーテーションエディターを使用したほうが,より楽に回復(WinRE)パーテーションを拡大できる。
コマンドプロンプトで作業する場合
コマンドプロンプトを管理者で起動する。
WinREのインストール状態を確認する。
WinREがインストールされている場合,WinREディレクトリへのパスが含まれた「Windows REの場所」が表示される。
WinREのインストールを一旦無効にする。
システムパーティションを縮小して,新しい回復パーティションを用意する。
使っているストレージがMBRかGPTでコマンドが違うので,ストレージのタイプを確認する。
GPT列に「*」表示があればそのストレージはGPTタイプになっている。表示がなければMBRタイプのストレージ。
select disk <OS disk index> <-- Windowsシステムがあるストレージを選択
list part <-- パーテーションの表示
select part <OS partition index> <-- Windowsシステムのパーティションを選択
shrink desired=460 minimum=460 <-- 460Mbyte縮小する
select part <WinRE partition index> <-- 回復(WinRE)パーティションを選択する
delete partition override <-- 回復(WinRE)パーティションを削除する
新しい回復パーティションを作成する。
ストレージがGPTの場合は,以下のコマンドを使って回復(WinRE)パーテーションを作成する。
create partition primary id=de94bba4-06d1-4d40-a16a-bfd50179d6ac
gpt attributes =0x8000000000000001
ストレージがMBRの場合は,以下のコマンドを使って回復(WinRE)パーテーションを作成する。
create partition primary id=27
その後,以下のコマンドを使う。
format quick fs=ntfs label="Windows RE tools"
list vol
reagentc /enable
reagentc /info
これで,回復(WinRE)パーテーションが前のものから460Mbyteサイズが拡大できた。
PowerShellを使って作業する場合
PowerShellを使って回復(WinRE)パーテーションを拡大するのに,fixwinre.ps1スクリプトファイルを作成(未テスト)してみた。
$syspart = (Get-Partition -DriveLetter $env:SystemDrive[0])
$recpart = (Get-Partition).Where({$_.Type -eq 'Recovery' -or $_.MbrType -eq 0x27})[0]
$IsGpt = ($recpart | Get-Disk).PartitionStyle -eq 'GPT'
$dpscript = Join-Path $env:TEMP '\diskpart.txt'
$dparam = @("sel disk $($syspart.DiskNumber)")
$dparam += "sel part $($syspart.PartitionNumber)"
$dparam += "shrink desired=460 minimum=460"
$dparam += "sel part $($recpart.PartitionNumber)"
$dparam += "delete part override"
if($IsGpt){$dparam += "create part primary id=de94bba4-06d1-4d40-a16a-bfd50179d6ac"}
if($IsGpt){$dparam += "gpt attributes=0x8000000000000001"}
if(-not $IsGpt){$dparam += "create part primary id=27"}
$dparam += "format quick fs=ntfs"
if(-not $IsGpt){$dparam += "set id=27"}
$dparam | Out-File $dpscript -Force -Encoding ascii
if($stop = (-not $recpart -or $recpart.DriveLetter -or $syspart.DiskId -ne $recpart.DiskId -or $recpart.PartitionNumber - $syspart.PartitionNumber -ne 1)){throw 'This system is not supported.'}
reagentc /disable
if(-not $stop){diskpart /s $dpscript}
del $dpscript
reagentc /enable
作成したfixwinre.ps1を右クリックで管理者権限で実行すると,回復(WinRE)パーテーションを拡大する事ができると思う。
新しくコメントをつける