Windows-Boot-Repair
update 2018-07-05
要約
ブート出来ないWindowsを修復する。
システムパーティショ
ンやブート構成フォルダ/ファイルが障害を起こした場合の修復方法をまとめたものである。
※ディスク(HDDやSSD)に障害が発生している場合は修復できない。(ディスクを交換してWindowsをインストールし直す必要がある)
環境
Windows10 / 8 / 7
MBRディスクのパーティション

システムパーティション:システムで予約済み領域にbootmgrファイルやBoot\BCDファイルがある。
ブートパーティション:Windowsインストール領域にWindows ブートローダ(\WINDOWS\system32\winload.exe)がある。
GPTディスクのパーティション

作業手順
インストールメディアでPC起動して、「コンピュータを修復する」(Repair your computer)を選択して行なう。
※「言語選択」画面で「Shift + F10」を押して「コマンドプロンプト」画面で作業してもいい。
1)まずは「スタートアップ修復」で修復できるかどうかを試す。
「コンピュータを修復する」/オプション選択 にて「トラブルシューティング」/「スタートアップ修復」を行なう。
「スタートアップ修復」で修復できない場合は、以下のように「コマンドプロンプト」で作業する。
2)BOOTに関連する修復を行なう
Bootrec.exe ツールを使用する。
※bootrecを実行してもエラーが発生する場合は、下記の 3)へ進む。
X:\Sources> bootrec /FixMbr // MBRを上書きする(partition tableは変更しない)。
※UEFIシステムの場合はMBRは関係ない。
X:\Sources> bootrec /FixBoot // ブートセクターをシステムパーティションに上書きする
X:\Sources> bootrec /ScanOs // Windowsがインストールされているのにブート マネージャーのメニューが表示されない場合は、このオプションを使用する。
X:\Sources> bootrec /RebuildBcd // BCD ストアを再構築する必要がある場合にこのオプションを使用する。
3)ブート構成データ(BCD)を作り直す
BCD ストアを再構築してもスタートアップの問題が解決しない場合は、下記のように
BCD ストアをエクスポートし、名前変更(バックアップ)してbootrec /RebuildBcdをもう一度実行してみる。
X:\Sources> bcdedit /export C:\BCD.old //ブート構成データ(\Boot\BCDファイル)の内容をエクスポートする。
この例では ドライブC:はシステムパーティション(システムで予約済み領域)のことである。
X:\Sources> cd /d c: //ドライブC:に移って作業する。
c:\> cd Boot //Bootフォルダに移る
※Bootフォルダをdirコマンドで照会しても、BCDファイルが表示されていない場合は、BCDファイルの隠し属性を変更することでBCDファイルが表示される。
c:\Boot> attrib BCD -s -h -r //BCDファイルの隠し属性を変更する。
c:\Boot> ren c:\Boot\BCD BCD.old //バックアップのために名前を変更
c:\Boot> bootrec /RebuildBcd //BCDを新規作成
4)EFI/GPTシステムの場合のBCD(ブート構成データ)修復作業
PCのBIOS設定で「CSM」および「Secure Boot」はDisabled にしておく。
インストールメディアでPC起動してコマンドプロンプトにて作業する。
「コンピュータを修復する」/オプション選択 にて「トラブルシューティング」/「コマンドプロンプト」を選択する
X:\Sources> diskpart //diskpartを実行
DISKPART> list disk
DISKPART> select disk 0 //修復したいwindowsのdisk番号を指定
DISKPART> list volume
ここでEFIパーティション(ESP)とwindowsをインストールしたパーティション(Boot partition)を確認できる
EFIパーティションにはBOOTSTRAPが書かれている。
EFIパーティションはFAT32の100MB程度のパーティションである。
ここでVolume番号をメモしておく(ここではVolume 3 であるものとする)
windowsパーティションは\windowsフォルダのあるパーティションである。
EFI volumeを操作する必要があるので、下記のようにドライブレターを付与する。
DISKPART> select volume 3 //EFI volumeを選択する。
DISKPART> assign letter=S //EFIパーティションにドライブレターを割り当てる(ここではSとしている)
※ドライブレター削除は remove letter=S
DISKPART> exit //DISKPART終了
コマンドプロンプト画面になるので
X:\Sources> cd /d S:\EFI\Microsoft\Boot\ //\Bootフォルダに移る(Bootフォルダ内ににBCDファイルがある)
S:\EFI\Microsoft\Boot> bootrec /fixboot //新規にboot sector を作成
S:\EFI\Microsoft\Boot> ren BCD BCD.old //BCDファイルをバックアップ用として名前変更しておく
S:\EFI\Microsoft\Boot> bcdboot W:\Windows /l ja-jp /s S: /f ALL //BCDを作成する。
※W:はwindowsブートパーティションのドライブレター
PC再起動してWindowsが正常に起動することを確認する。
5)BIOS/MBRシステムの場合のBCD(ブート構成データ)修復作業
インストールメディアでPC起動してコマンドプロンプトにて作業する。
X:\Sources> diskpart
DISKPART> list disk
DISKPART> select disk 0 //修復したいwindowsのdiskを選択
DISKPART> list volume
ここですべてのドライブレターが確認できる(システムpartition ,ブートpartitionのドライブレターを確認しておく)
DISKPART> exit //DISKPART終了
コマンドプロンプト画面になるので
X:\Sources> bootrec /fixboot //新規にboot sector を作成
X:\Sources> cd /d c: //ドライブc:に移る。
c:\> cd Boot //Bootフォルダに移る
C:\Boot> ren BCD BCD.old //BCDファイルをバックアップ用として名前変更しておく
C:\Boot> bcdboot W:\Windows /l ja-jp /s S: /f ALL //BCDを作成する。
※Sはシステムパーティションのドライブレター(ここではSとしている)
※W:はwindowsブートパーティションのドライブレター
PC再起動してWindowsが正常に起動することを確認する。
参考
システムで予約済み領域(System Reserved)の照会
DISKPART> list disk
DISKPART> select disk 0 //システムで予約済み領域は disk 0 にあるものとする
DISKPART> list volume //volumeを表示
DISKPART> select volume 0 //System Reserved 領域はvolume 0 にあるものとする
DISKPART> assign letter=S //ドライブレター S を割り当てる
DISKPART> exit
この時点でドライブ S の内容を照会できる
※ドライブレターを削除する場合は remove letter=Pを入力
end of list