それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

Windowsの回復パーティションを作る。 WinREの領域の再生

回復パーティションの作成

Windowsの回復パーティションをつくってみる。

自分でインストールしたWindowsには回復パーティションにある WinRe.wim がなく、なんか不安。

ブート失敗したときは、C:\Windows\System32\Recovery\WinRe.wim から起動するはずだけど、Cがブートだとわからなくなったらどうすりゃと不安になったので作り方を調べてみた

Windowsの回復パーティションの設置場所

SSD/HDDの先頭・末尾に1GBほどの小さい領域をつくって、そこにWinRe.wimを設置する

作ってみた

メーカ製PCではなく自作やHDD交換カスタムインストールされたWindowsではWinREはつくられてない。またWindowsアップデートのタイミングでWindows REが消されてたりする。

いままでEFIブートをぶっ壊したPCを何台か修復したのですが、USBのインストールメディア作成が面倒だった。もしブートがぶっ飛んでも安心なようなWinREを作成しておけばUSBのインストールメディアの手間を飛ばすことができる。もし自分のPCにトラブルが起きたときにリカバリの詳細オプションからスタートアップ修復やコマンド・プロンプトで修復ができれば便利だと思う。

winreの状態チェック

reagentc /info コマンドでWinREの現在状態がわかる。

現在はDisabledなのでWinREを作成しEnabledを目指そうと思う。

WinRe の準備

ともかくWinRe.wimが無いと始まらない。

方法1:既存のWindowsから持ってくる

C:\Windows\System32\Recovery

Win ProにはRecoveryにWinRe.wimがありHomeにはなかった。
インストールしているWin10のバージョンの問題かもしれない。
もしかしたらWinRe.wimはHomeにはなくPro以上限定かもしれない。

方法2:インストールメディアから取り出す

インストール・メディアから持ってくる

  • WindowsのインストールUSBを挿入する
  • 7zip でUSBを開く
  • install.esd を探して7zip で開く
  • 更にたどると、WinRe.wim がある。
  • E:\sources\install.esd\1\Windows\System32\Recovery\

ESD(インストールイメージ)が7z で開いてさらに中身が見れることを知っておく必要がありますね。

ESD自体はマイクロソフト公式サイトからメディア作成ツールで作ることができる。

取り出したWinRe.wimを設置

取り出したWinRe.wimを、Recoveryに設置する

C:\Windows\System32\Recovery\Winre.wim

ちなみに、この設置で、回復ドライブ作成が動くようになる。

わたしのWindows Homeでは回復パーティションどころか回復ドライブ作成すらできなかったので、回復ドライブ作成が動くだけでも助かった。

設置で回復ドライブを作れるようになった例

winre.wimC:\Windows\System32\Recovery\Winre.wimに設置すると、回復メディア作成ツールが動くようになった。

WindowsHomeのインストールの一部ではC:\Windows\System32\Recovery\Winre.wimが作られてない事があるようだ。回復ドライブ作成機能が動かないWindows10を、何度か見かけた。

末尾にパーティションを作成

次の図のように、パーティションを配置したい。

未割り当てを消せばいいが、Cドライブが500GBにもなるとバックアップが不便だしSSDの寿命も考えて未使用領域を残しておきたい。*1

Windowsのディスク管理ツールだと不便がある。未割当て領域を跨ぎ末尾にパーティションを作るのができない。Windowsだと末尾にパーティションつくる計算が面倒。

gidsk で 2700 を指定すれば Windows REになる

使い慣れたgdisk で作った

$ gdisk /dev/sdX
Command (? for help): l
Type search string, or <Enter> to show all codes:
0700 Microsoft basic data                0c01 Microsoft reserved
2700 Windows RE                          3000 ONIE boot
3001 ONIE config                         3900 Plan 9

gidks で末尾から1GiBは。セクタ数から計算した

start セクタ : `末尾 -  1024*1024*1024/512`
end セクタ : 末尾

gidskなら差分サイズ指定できたので楽ができたはず

パーティションを作ったら初期化

NTFSパーティションを初期化した。

windowsのdiskpart で確認

作ったパーティションWindowsDISKPART で確認した

回復パーティションが認識された

パーティションをマウントする

WinRe.wimをコピーすればいいのだが、そのためにはドライブにアサイン(マウント)してエクスプローラーで見られるようにする必要がある。

diskpartでコマンドをサクサク叩く

ドライブレターのアサインとIDの割当

list vol
select vol 5 
assign letter=r
set id="de94bba4-06d1-4d40-a16a-bfd50179d6ac"
gpt attributes=0x8000000000000001

パーティションにアクセスしファイルを書き込みたいので、ドライブレターを割り当てた。

gpt attribute と gpt のid が大事らしい。参考資料に従ってやった

リカバリパーティション(WinRE)なのでRにした

あとは、R:\を、開いて WinReをコピーした

winreをコピーする

参考資料はcmd.exe で次のようにやっていた

mkdir R:\Recovery\WindowsRE
xcopy /h C:\Windows\System32\Recovery\Winre.wim R:\Recovery\WindowsRE

わたしはWSLから操作したので、次のように実行した。

mkdir  -p /mnt/r
sudo mount -t drvfs R: /mnt/r
mkdir -p /mnt/r/Recovery/WindowsRE
cp  /mnt/c/windows/system32/recovery/winre.wim  /mnt/r/Recovery/WindowsRE

windows REの状態を確認する

最初はDisabledで絶望したのだが。

> reagentc /info
Windows 回復環境 (Windows RE) およびシステム リセット構成
情報:

    Windows RE の状態:         Disabled

有効にする事ができた。

> reagentc /enable
REAGENTC.EXE: 操作は成功しました。

Windows RE 環境を作れた

reagentc /enable をすることで、回復パーティションを作ることができた。

回復ドライブの指定

参考資料によると、回復ドライブを指定して、そのドライブを使って回復ができるらしい

/pathオプションに登録する回復環境のパス、/targetに登録先のWindowsフォルダを指定する。

> reagentc /setreimage /path R:\Recovery\WindowsRE /target C:\Windows
ディレクトリは次に設定されています: \\?\GLOBALROOT\device\harddisk0\partition4\Recovery\WindowsRE

回復起動する

Windowsの設定で「再起動時のブート方法」を選んで、トラブルシューティングで起動して、コマンド・プロンプトなど色々と増えていることを確認にする。 [設定] > [PC 設定の変更] > [全般] とか

おまけ diskpart の使い方

起動

diskpart

ディスクを扱う場合

list disk
select disk 0
list part 
select part 0 

ボリューム(Windowsが認識可能なフォーマットされたドライブ・パーティション)を扱う

list vol
select vol 2
list vol 
select vol 1 
remove letter=c
select vol 2 
assgin letter=c

C:の割当の解除は、回復から起動したコマンドであればできる。

bitlocker の制限

bitlocker 環境化はWinREにアクセスできたとしてもディスクのマウントができないので、暗号化ボリュームの復号化キーをつかうことになるだろう

reagentc /enable の実行時に何も指定してない場合、C:\Windowsを使うので、WinREだけではBitlockerにアクセスできないので有効化できなくて当然である。

PS C:\Users\takuya\Desktop> reagentc /enable
REAGENTC.EXE: Windows RE cannot be enabled on a volume with BitLocker Drive Encryption enabled.

もし必要なら、システムイメージが入ったデータ・パーティションを作ればいいのだが。

Bitlockerはノートパソコンが主流であろうし、回復用USBフラッシュを作るだけで事足りそうな気がしますね。

TPMのセキュアブートなどがうまく組み合わされるWin11だとまた事情は変わってくるかもしれません。

WinREが使えたほうが良い理由

UEFI+GPTに変わって、MBRのフラグで管理しなくなった。

そのためスタートアップ修復の登場機会が増えていいる。

UEFIの修正にとても重要。

とくにEFIブートのパーティションFAT32で作られるので、「自称詳しい」ひとたちが、「何だこれ?Windowsはいらんことを」と消してしまうことが多発して、我が家にEFIのぶっ壊れたWindowsが持ち込まれる要件が増えている。

MBRオジサンはEFIを知らないままEFI環境に移行しているので、HDD増設で先頭のEFIパーティションFAT32を、あれこれ弄っちゃうようです。

起動しなくなったーって電話があるときは、回復パーティションがないから電話かかってくるんですよね。古くからのPC達人たちよ、まじ学んでくれ、君たちがエロゲをやってたアオハル時代のMBRじゃないんだよ。もう。

参考資料

*1:SSDが寿命を迎え大変苦労した。もう二度とSSDを容量上限まで使いたくない。その際にSSDのバックアップに苦労した。だからドライブはディスクイメージバックアップで扱いやすいサイズにすることにした。