Windows10のパーテーション構成 anchor.png

Windows10でのパーテーション構成は,バージョンごとに変更されている。

以下は,それを調べた情報です。

Windows10のパーテーション構成の説明の前に,私の現在のPCを例にしてWindows7のパーテーション構成がどうなっているか調べてみる。

BIOS/MBRベースのdisk0

Systemで予約C:
100MB465.7GB
NTFSNTFS

BIOS/MBRベースのdisk1

D:E:未割り当て
977.5GB540.5GB345.0GB
NTFSNTFS

私の現在のWindows7のHDDのパーテーション構成(2個のHDD)

Windows7では,Systemで予約(システムパーティション)とC:等のWindowsパーテーションがある。PCメーカーから販売されているPCでは,この他にリカバリ用のパーテーションがある。
Windows XPの時にはWindowsパーテーションしかなかったのですが・・・

システムパーティションには,bootmgr等のブートに必要なファイルがあって,ブートパーティション(アクティブ)になっています。

Page Top

Windows7をWindows10にアップグレード後のパーテーション構成 anchor.png

上記の私のWindows7をWindows10にアップグレード後のパーテーション構成はこのようになっている。

BIOS/MBRベースのdisk0

Systemで予約C:回復パーテーション
100MB465.1GB607MB
NTFSNTFSNTFS

BIOS/MBRベースのdisk1

D:E:未割り当て
977.5GB540.5GB345.0GB
NTFSNTFS

disk0は,C:に割り当てられていたパーテーションを465.7GBから465.1GBに縮小し,その後に新しく607MBのパーテーションが作成されている。
新しく作成されたパーテーションは回復パーテーションと思われる。

Windows7をWindows10にアップグレードしようとしたところ,「アップグレードに失敗しました」でアップグレード出来なかった。
C:パーテーションをディスクデフラグした後,やっとアップグレードが出来ました。またアップグレードで非常に時間がかかったのも,パーテーションを縮小するのに時間がかかったんだと思う。

Page Top

MicrosoftからのWindows10の推奨パーテーション構成 anchor.png

現在のWindows10では,以下のようなパーテーション構成とするようにMicrosoftが推奨しています。(しかし,Windows10をクリーンインストールした時はこの推奨パーテーション構成にはならないが・・・)

最近販売されているWindows10がインストールされたメーカー製PCやMicrosoft Surfaceでは,この構成になっているようです。

BIOS/MBRベースのdisk0の推奨パーテーション

SystemWindowsパーテーション回復パーテーション
min 100MB32bit:16GB以上500MB未満:WinRE +50MBの空き
BCDを配置64bit:20GB以上500MB以上:WinRE +320MBの空き
NTFS(1GB以上は1GB以上の空きを推奨)
回復ツール(WinRE)を配置

UEFI/GPTベースのdisk0の推奨パーテーション

EFI SystemMSRWindowsパーテーション回復パーテーション
min 100MB16MB32bit:16GB以上min 300MB
FAT32必須64bit:20GB以上500MB未満:WinRE +50MBの空き
BCDを配置NTFS500MB以上:WinRE +320MBの空き
(1GB以上は1GB以上の空きを推奨)
回復ツール(WinRE)を配置

現在のMicrosoftからのWindows10 推奨パーテーション

BCDは,ブート構成データ(Boot Configuration Data)で,ブートローダーが参照するためのデータが格納されている。
回復パーテーションは,Windows10をいわゆる「工場出荷」時や「以前のバージョン」などの特定の状態へ戻すためのプログラムやデータを保存している特殊なパーティション。
間違っての変更や削除を防止するため,回復パーティションには通常ドライブ文字が無く,Windowsエキスプローラーからは見えなくなっている。
MSRは,なんのために使用しているかは不明。

Page Top

Windows10のクリーンインストール後アップデートした時のパーテーション構成 anchor.png

実際にWindows10(1709以前)のクリーンインストールを行った後,Windowsアップデートにより1709に更新し,さらに1803に更新した後のパーテーション構成は以下のようになっていた。

BIOS/MBRベースのPC:1803にアップデート後

Systemで予約C:回復パーテーション
500MB59.03GB493MB
BCDを配置NTFSNTFS

UEFI/GPTベースのPC:1803にアップデート後

回復パーテーションEFIMSRC:OEMパーテーション
499MB99MB16MB125.51GB904MB
BCDを配置NTFSNTFS

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のリリース時)に回復パーティションが後ろに追加され,上記の表のようになったと考えられる。

Page Top

Windows10のクリーンインストール時のパーテーション anchor.png

BIOS/MBRベースのdisk0(クリーンインストール時)

SystemWindowsパーテーション
v511-1703: 500MBdisk0の残りの領域
v1709-1803:549MBv1803 2018/07リリース時はWinREがC:\Recovery\WindowsREにセットされる。
BCD+WinREを配置NTFS

UEFI/GPTベースのdisk0(クリーンインストール時)

回復(回復ツール)EFI SystemMSRWindowsパーテーション
v1507-1704:4500MB99MB16MBdisk0の残りの領域
v1709-1803:499MBBCDを配置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)になったため,先頭の回復パーテーションに配置はされるようにはなっている。(ただし,回復ツールのみで,回復時に使用するイメージファイルは含まれていない。)

Page Top

推奨パーティション構成でWindows10をクリーンインストールする方法 anchor.png

これからWindows10を導入(Windows7からのアップグレード)するという企業も多い。
その際,大量のクライアントPCをセットアップするために,イメージ展開でのインストールをとることもある。
この場合は,Microsoftからの推奨パーティション構成をして,十分な容量の回復パーティション(最小1GB,推奨2GB程度)を準備するようにすべきです。

推奨パーティション構成は,Windows10のどのバージョンをインストールするのかに関係なく,採用すべきです。
なぜなら,回復パーティションに十分な領域がない場合やWindowsセットアップの既定にまかせてインストールすると,Windows10 1803のクリーンインストールでは,WinREがC:ドライブにセットアップされるという問題が出るからです。
また,それ以前のWindows10をクリーンインストールする場合でも,1803以降へのアップグレード時に余計な回復パーティションが追加作成されることになるのも問題です。

Windowsセットアップメディアを使用して,推奨パーティション構成でWindows10をクリーンインストールするには,次の手順でWindows10をインストールするようにします。

  1. Windows10のインストールメディアでPCを起動し,Windowsセットアップを開始する
  2. Windowsセットアップが表示されたら,Shift+F10を押してコマンドプロンプトを開く。 このコマンドプロンプトは,Windowsプレインストール環境(Windows Preinstallation Environment:WinPE)のコマンドプロンプトで,X:ドライブ(RAMディスク)に展開されたWindowsイメージから起動される。
  3. 以下のようにしてファイルを作成する
    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のようにしてサイズを大きくする必要がある。

  4. 以下のコマンドを実行する
    BIOS/MBRベースのPCの場合:
    > DiskPart /s X:\CreatePartitions-BIOS.txt
    UEFI/GPTベースのPCの場合
    > DiskPart /s X:\CreatePartitions-UEFI.txt
    これで,推奨パーティション構成がストレージに作成される。
  5. コマンドプロンプトを終了する
  6. Windowsセットアップを使用してクリーンインストールを行う
    「Windowsのインストール場所を選んでください」で,
    BIOS/MBRベースのPCの場合:
    ドライブ0 パーティション2:Windows(プライマリ)
    UEFI/GPTシステムの場合:
    ドライブ0 パーティション3:Windows(プライマリ)
    を指定する。
  7. その後は,通常通りにインストールを進める

この手順でクリーンインストールすると,最小のパーティション数と最適なパーティションサイズでWindows10とWinREを適切にセットアップ出来る。

コマンドプロンプトやWindows PowerShellを管理者として起動し,

> reagentc /info

で,WinREのセットアップ状況を確認出来る。

イメージ展開用のマスターイメージを取得するためのPCにインストールする場合は,推奨パーティション構成にこだわる必要はない。
なぜなら,イメージ化するのはC:ドライブだけなのと,推奨パーション構成はイメージ展開の際に実装すれば良いから。

Page Top

MBRとGPTの違い anchor.png

上記で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を使用するといったことが問題なく使用できます。

Page Top

MBR anchor.png

昔から使われているパーテーションの管理方法。

2TBを超えるストレージディスクは,制限により全容量を使用することが出来ず容量の一部が無駄になってしまう。

作成できるパーティションは,プライマリとして4個,またはプライマリ3個+拡張1個の合計4個。(拡張パーティションの中に論理パーティションを多数作成可能)

起動することが出来る(ブートパーテーション)として1個だけをプライマリパーテーションに設定できる。拡張・論理パーティションはブートパーテーションに設定できない。

Page Top

GPT anchor.png

MBRに変わって使われているパーテーション管理方法。

2TBを超えるディスクを扱えるように開発された。古いWindowsでは使用できない。

GPTにインストール出来るWindows OSとしては,64bit版 Windows Vista SP1以降のWindows,Windows Server 2008以降になっていて,32bit版 WindowsではGPTを利用することはほぼ出来ない。

設定できるパーティション数は,デフォルトで128まで可能になっている。

Page Top

Windows10のKB5034441更新が失敗する anchor.png

2024/01のWindows UpdateでKB5034441の更新があったが,この更新が0x80070643エラーで失敗する。失敗しても再度自動的に更新を実行するが毎回失敗してしまう。

私のWindows10はWindows7からアップデートしたもので,上記のように回復パーテーションのサイズは607MBになっている。このパーテーションの空き容量は64MBになっていた。
KB5034441は回復パーテーションを更新するようだが,正常に更新するには回復パーテーションの空き容量が250MB無いとサイズが足りなくて(パーテーションサイズは710MB程度必要)失敗してしまうようだ。

たまたま回復パーテーションの後ろが未割り当になっていた(以前HDDを容量が大きいSSDに換装していたため)ので,回復パーテーションをちょっと多めだが1.0GBにパーテーションエディターで拡大した。
この後,再度KB5034441の更新を行ったところ無事問題なく更新ができた。

今回のように後ろに未割り当ての領域がない場合は,Cドライブのパーテーションを縮小してから回復パーテーションを拡大するような作業が必要になる。

これを自動で処理するPowerShellスクリプト(未テスト):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=250 minimum=250"
$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

新しくコメントをつける

題名
ゲスト名
投稿本文
より詳細なコメント入力フォームへ

Front page   Freeze Diff Backup Copy Rename Reload   New Page Page list Search Recent changes   Help   RSS of recent changes (RSS 1.0) RSS of recent changes (RSS 2.0) RSS of recent changes (RSS Atom)
Counter: 2474, today: 2, yesterday: 0
Last-modified: 2021-06-07 (Mon) 10:25:58 (JST) (1084d) by yuji