WindowsPCパーティション整理

Windows7時代から使い込んできたシステムドライブ(といっても物理的には5代目?)のパーティションレイアウトが、なーんか気持ちが悪いなと思いつつも見て見ぬ振りをしてきたが、いよいよ気になってきてしまったので意を決して手を付けた作業記録

この作業はWindows11でやっています

現状確認と計画

左からシステムで予約済みとなっているが実際には使用されていない1.12GBの意味不明なパーティション、システムパーティションC:、Windows7の時に使用しない設定にした気がする688MBの回復パーティション、100MBのEFI System Partition、そして917MBの未割り当てという順に並んでいる。

BIOS-based PCs

先頭の1.12GBのパーティションはMBRドライブだった時代の名残(たぶん)と思われ、最後尾には約900MBの使いにくい未割り当て領域がある。

不要なパーティションを削除し、いつかC:を拡大する際にジャマになるであろうEFI System Partition(ESP)をC:の前へ移動させ、回復パーティションを作り直し最近になってようやく便利さに気がついたWindowsREを使えるようにしたい。

4KネイティブなストレージではESPに260MBを要するので、今後そのようなストレージにクローンなどする際に困らないよう260MBで作る。※後から今回は100MBで良かった事が判明。

MBRからGPTへ変換したドライブではMSR(非表示のパーティション)が128MBとなっているので、Windows既定の16MBで作り直す。

Windows11(23H2)のWinre.wimは720MB以上あったので今後の事も考えて回復パーティションのサイズは大きめの2GBとする。

UEFI-based PCs

基本はこういうパーティションレイアウトらしいけど、今より大きなドライブにクローンした際に回復パーティションを作り直す事になるのが面倒すぎるので回復パーティションはC:の前に置こうと思う。
マイクロソフト的には、回復パーティションを拡大する必要がある時にWindowsパーティションを縮小して回復パーティションを拡大するので回復パーティションは後方に置きたいとの事だったが、2GBもあれば当分の間は大丈夫だろう。

さあ、無事に済みますように。

パーティションの整理

パーティションC:の移動・縮小

ESP=260MB、MSR=16MB、回復パーティション=2048MB、C:ドライブ、としたいのでEaseUS Partition Master Freeなどのツールを用いて、他のパーティションを削除したあとのC:パーティションの前が2325MB(先頭offset1024KB+260MB+16M+2048)空くように操作する。

不要なパーティションを削除

インストールメディア等でブートしてDISKPARTでこのディスク上のC:以外の不要なパーティションを削除する。もちろん回復パーティションも消す。

コマンドサンプル

DISKPART
select disk system
list part
select part <対象パーティション番号>
delete part override
exit

Windowsがインストールされているパーティションは絶対に消すな

ESP、MSRを作りブート出来るようにする

ESP、MSRのついでに新たな回復パーティションも作っておく

DISKPART
create partition EFI size=260 offset=1024
format quick fs=fat32 label=ESP
assign letter=z
create partition MSR size=16 offset=267264
create partition primary size=2048 offset=283648
format quick fs=ntfs label=WinREなど任意
assign letter=r
exit

パーティション作成時にoffsetを指定することで未使用領域の任意の位置にパーティションを作る事が出来る。

コマンドプロンプトへ戻りBCDを構成する

bcdboot C:\Windows /l ja-jp /s z:

※Windowsが入ってるパーティションに割り当てられるドライブレターがC:ではなくなっている事があるので確認すること

インストールメディア等のブートデバイスを取り外しひとまず再起動

Windws REの再構成

まっさらなWinre.wimを準備する

無効なはずのWindws REを念のため無効化しておく reagentc /disable

ISOからWinre.wimを抽出

元からあった回復パーティションにWinre.wimが残っていたかどうか知らないが、もとより最新のWinre.wimに更新するつもりだったのでどうでも良い。最新のWindowsのISOをマウントしてsourceディレクトリからinstall.wimまたはinstall.esdを任意の場所へコピーする。
※USBメモリからだとinstallファイルが分割されていて面倒なのでISO推奨

install.wimからWinre.wimを取り出し D:\WinRE_bak へコピーする

md C:\mount\
Dism /Mount-Image /ImageFile:D:\install.wim /Index:1 /MountDir:C:\mount\
xcopy /h C:\mount\Windows\System32\Recovery\ D:\WinRE_bak\
Dism /Unmount-Image /Mountdir:C:\mount /Discard

install.esdの場合は予めinstall.esdからinstall.wimを取り出す必要がある

Dism /Export-Image /SourceImageFile:D:\install.esd /SourceIndex:1 /DestinationImageFile:D:\install.wim /Compress:max /CheckIntegrity

Winre.wimにドライバを追加

Windws REを再構成する前にストレージドライバをWinre.wimに追加しておけばWinREでもIntel VMDやRSTなどにぶらさがるドライブを認識するので便利だ。いちいちオンオフせずに済む。

※D:\driver\SetupRST\に展開したIntelRSTドライバをC:\mountにマウントしたWindowsイメージへ追加する場合のコマンドサンプル

md C:\mount
Dism /Mount-Image /ImageFile:D:\WinRE_bak\winre.wim /Index:1 /MountDir:C:\mount
Dism /Image:C:\mount /Add-Driver /Driver:"D:\driver\SetupRST\iaStorVD.inf"
Dism /Unmount-Image /MountDir:C:\mount /Commit

Windws REを有効にする

md r:\Recovery\WindowsRE
xcopy /h D:\WinRE_bak\winre.wim r:\Recovery\WindowsRE\Winre.wim
Reagentc /setreimage /path r:\Recovery\WindowsRE\Winre.wim /target C:\Windows
diskpart
select disk system
select part <回復パーティション番号>
remove letter=r
set id=de94bba4-06d1-4d40-a16a-bfd50179d6ac
gpt attributes=0x8000000000000001
exit
reagentc /enable
reagentc /info

ファイルのコピーはエクスプローラーからやっても良い
古いWinre.wimがあれば置き換える
R:\Recovery\WindowsRE\Winre.wimがないとReagentc /setreimageが通らない

Windows REの場所が \?\GLOBALROOT\device\harddisk<回復パーティションがあるドライブ番号>\partition<回復パーティションの番号>\Recovery\WindowsRE となっていれば良い。

正しく構成されたWindws REであれば reagentc /disable で無効化するとWinre.wimは C:\Windows\System32\Recovery\ へと退避されるが、その都度隠しファイル化されてしまうので毎回 attrib -h -a -s C:\Windows\System32\Recovery\winre.wim としないと存在が見えないのがうざい

Windows REの場所を修正

希望の位置にWindws REが構成されていない場合にはWindws REが有効な状態でC:\Windows\System32\RecoveryにあるReAgent.xmlファイルを任意の場所にコピーして編集後、Windws REを一旦無効にしてから置き換える。(荒技)

たぶんだけど、回復パーティションの空き容量不足などが原因で意図せずに C:\Recovery に回復環境が作られている状態で C:\Recovery と R:\Recovery\WindowsRE\ のどちらにも winre.wim が存在すると何か変になる事がある気がする。

回復パーティションのoffsetと、回復パーティションがあるディスクのディスクIDをDISKPARTで調べた内容で書き換えればおk

<WinreLocation path=”\Recovery\WindowsRE” id=”0″ offset=”290455552” guid=”{6425cd19-fd84-48f5-84ed-b66001a72ebb}“/>

reagentc /enable
たぶん成功するはず

検証していないが、もしかすると最初からReAgent.xmlにディスクIDとオフセットを指定しておけばもっと簡単にやれたのかもしれない。

すっきり

これが

こうなる

さっぱりした。こんな事くらいGUIで出来るようになって欲しいよ

コメント

タイトルとURLをコピーしました