Windowsが入っていたブートセクターをrm -rfで全削除してしまった時の話


# 1.はじめに
先日、WindowsとGentooをデュアルブートさせるためにLiveCDで環境構築していたのですが、
ブートセクターをマウントしていた`/mnt/gentoo/boot/efi`を誤って

```bash:bash
rm -rf /mnt/gentoo/boot/efi
```
理由としては、日頃から`rm -rf`を常習しながらブートローダーを構築をしていたのが原因だと思います。
もちろんOSが起動しないので何もできなくなりました。あーあ。


# Windows11をとりあえず起動させるまで
ブートセクターが消えているので当然Windowsは起動しませんし、WindowsREも使えないので当然修復するコマンドなども使えません。
また、メーカー製のPCなのでBDなどのインストールメディアもないし、USBメモリも8GB以上の物がなく、インストールメディアも作成できませんでした。
ですので、他のPCからUSBメモリやDVDなどに入れた修復ツールを構成してブートローダーの再構築をします。

### 必要なもの

* USBメモリかDVD(2GBあれば十分)
* Windowsが動作するPC
* ブートセクターを破壊してしまったPC

## ブートセクターを再構築する


[Windows PE](https://docs.microsoft.com/ja-jp/windows-hardware/manufacture/desktop/winpe-intro)を使用して、ブートセクターを修復します。
### Windows PEのセットアップ

1.まずはMicrosoftのサイトから[Windows ADK(Windows アセスメント & デプロイメント キット)](https://docs.microsoft.com/ja-jp/windows-hardware/get-started/adk-install)をダウンロードします。

2.インストーラーを起動します

適当にインストーラーの設定をして、この画面で最低限Deployment Toolsを選択します。

![Screenshot 2021-12-09 140800.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/607985/8dff4fe2-3d73-2e67-570d-002892105f03.jpeg)




```PowerShell:diskpart
select disk X    #Xに現在認識されているUSBメモリのドライブの文字を入力
clean
create partition primary size=2048
active
format fs=FAT32 quick label="WinPE"
assign letter=P
Exit
```

6.以下のコマンドで作業ファイルを作成する

``` PowerShell:cmd
copype amd64 C:\WinPE_amd64
```

7.以下のコマンドでUSBメモリに書き込む

```PowerShell:cmd
MakeWinPEMedia /UFD C:\WinPE_amd64 P:
```

8.壊したPCにUSBメモリを差し、USBメモリから先にBootするようにUEFIの設定をする

9.起動したら、詳細オプションにあるコマンドプロンプトを選択し、起動する

10.diskpartでWindowsがインストールされているディスクを`sel disk {番号}`で選択し、`list vol`で`WindowsのCドライブがあるパーティションとFAT32のファイルシステムのパーティションがあることを確認する。

11.FAT32のファイルシステム（ブートセクター）にドライブレター(アルファベット1文字のやつ)を設定する

```PowerShell:diskpart
select volume X #FAT32ファイルシステムのドライブ番号
assign letter=B #重複しないドライブレターを設定する
```


12.以下のコマンドでブートセクターを構築する

```PowerShell:cmd
 #XはWindowsがインストールされているドライブレター
 #Yはブートセクターのドライブレターを設定する
 #言語によってja-JPなどを適度変更する(日本語環境の場合このままでOK)
 bcdboot X:\Windows /l ja-JP /s Y: /f ALL
```

13.PCの電源を落とし、UFEIからWindowsが入っているディスクを一番最初に読み込むようにする。


これでとりあえずはWindowsが起動するようになり、半年分のデータを取り戻すこどができました。
しかし、WindowsREなどが認識されず、修復オプションが利用できないので修復します。

###WindowsREの設定
1.とりあえずcmdで回復環境の確認

```PowerShell:PowerShell
reagentc /info
```
<font color="Crimson">※ここで状態がEnabledで場所がWindowsシステムのドライブ内で**なければ**正常なので以下の作業は不要です</font>


2.WindowsREの無効化を行う

```PowerShell:PowerShell
reagentc /disable
```

3.パーティションツールでWindowsREの残骸があるパーティションを削除する

4.diskpartで回復用パーティションを作成する。

```PowerShell:diskpart
select disk X #回復パーティションに使用するディスク番号
create partition primary size=1024
format quick fs=ntfs label="Recovery tools"
assign letter="R" #重複しないドライブレター
gpt attributes=0x8000000000000001
set id="de94bba4-06d1-4d40-a16a-bfd50179d6ac"
list par
```
指定したパーティションのタイプに回復と記載されていれば正常

5.作成したドライブにWindowsREをコピーする

```PowerShell:PowerShell
mkdir R:\Recovery\WindowsRE #Rは適宜変更する
xcopy /h C:\Windows\System32\Recovery\Winre.wim R:\Recovery\WindowsRE
```

6.WindowsにWindowsREを構築したパーティションを登録する

```PowerShell:PowerShell
reagentc /setreimage /path R:\Recovery\WindowsRE /target C:\Windows
```

7.`reagentc`でWindowsREを有効化し、設定が正常に反映されたかを確認する

```PowerShell:PowerShell
reagentc /enable
reagentc /info
```
WindowsREの状態がEnabledになっており、WindowsREの場所が指定したドライブに存在していれば完了です。

8.Shiftキーを押しながら再起動を行い、動作確認する

回復オプションが表示されれば完了です。
お疲れ様でした。

# まとめ
ブートセクターを爆破しちゃってもまだ救いがあるよ！
ただし環境によっては修復するまで面倒臭いです。

時間が足りないときにパーティションを弄ったり、ブートセクターを弄るのはやめよう！
`rm -rf`は気を付けて使おう！
<font color="Crimson">お酒を飲みながら手作業での環境構築は危険なのでやめようね！</font>