WindowsPCパーティション整理

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

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

現状確認と計画

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

先頭の1.12GBのパーティションはMBRドライブだった時代の名残だった模様

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

4KネイティブなストレージではESPに260MBを要するので、今後そのようなストレージにクローンなどする際に困らないよう260MBで作る。

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

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

基本はこういうパーティションレイアウトらしいけど、今より大きなドライブにクローンした際に回復パーティションを作り直す事になるのが面倒すぎるので回復パーティションはC:の前に置こう。

無事に済みますように。

パーティションの整理

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

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

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

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

コマンドサンプル

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

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

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

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

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

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

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

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

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

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

Windws REの再構成

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

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

ISOから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ドライバを追加する場合のPowerShellまたはコマンドプロンプトのコマンド例

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
DISKPART>select disk system
DISKPART>select part <回復パーティション番号>
DISKPART>remove letter=r
DISKPART>set id=de94bba4-06d1-4d40-a16a-bfd50179d6ac
DISKPART>gpt attributes=0x8000000000000001
DISKPART>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の場所を修正

たぶんだけど、C:\Windows\System32\Recovery\ と R:\Recovery\WindowsRE\ のどちらにも winre.wim があると変になる事がある気がする。

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

回復パーティションの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をコピーしました