Windows回復環境でRAIDディスクを読めるようにする

概要

RAIDディスクが見えずWindowsが起動しない時は、トラブルシューティングツールからRAIDドライバをロードするとRAIDディスクが見えるようになります。

背景

色々あってWindowsが起動しなくなり、回復環境から様子を見てみるとCドライブの入ったRAIDディスクが見えなくなっていました。

RAIDコントローラのドライバを足してやり、ブート情報を作り直してやると起動しました。

やりかた

事前準備

USBメモリとかに使っているRAIDコントローラのドライバを保存して、マシンに挿しておいてください。(infファイルが要る。sysファイルとかも要るのかも。)

Windows回復環境からコマンドプロンプトを起動する

回復ドライブが生きていれば回復ドライブから、そうでなければ適当にWindowsのインストールメディアから、Windows回復環境に入ります。

この画面の名前が全然分からず、情報探すのに苦労しましたが、”Windows回復環境”(Windows RE) と言うそうです。

[トラブルシューティング]-[コマンドプロンプト]をクリックする。

RAIDコントローラのドライバを読み込む

diskpartからRAIDディスクが見えていないのか確認します。

diskpart
list disk
# ついでにUSBメモリのドライブレターも見ておく
list vol
exit

ディスクが見えていなければRAIDドライバをロードします。

drvload <USBメモリに置いたドライバのinfファイルのパス>
# 例えば drvload C:\hogedriver.inf

RAIDディスクが見えるようになったか確認します。

diskpart
list disk
# これでRAIDディスクが見えるようになっているはず
list vol
# ちゃんとボリュームも見えるか確認
exit

ブート情報を作り直す

ブート情報を作り直して、Windows起動時にRAIDコントローラのドライバを読んでくれるようにします。

diskpart
list vol
# システムパーティションっぽいやつを探す。ドライブレターが振ってなくて100MBくらいのやつ。
# ついでにWindowsが入っているボリュームのドライブレターも探しておく
# あたりをつけたボリュームにドライブレター(ここではz)を振る
select vol <システムパーティンっぽいボリュームの番号>
assign letter=z
# dir z: してEFIがあれば当たり。BIOSの場合どうなってるかは知らない。
exit

# BCDファイルを作り直す
Z:\EFI\Microsoft\Boot\BCD BCD.back
bcdboot <Windowsが入っているドライブレター>:\windows /L ja-jp /s Z: /f all

# HAL.DLLを作り直す
sfc /scanall /offbootdir=z: /offwindir=<Windowsが入っているドライブレター>:\windows

Windows回復環境に戻り、Windowsを起動します。

おまけ

BIOSの場合はどうするの

やってませんが、この辺を参考にするといいんじゃないでしょうか。

Windows Server: BCDファイルの修復方法(起動モード: BIOS) | Dell 日本
本ドキュメントでは、起動モードがBIOSの環境において、BCDファイルの破損によりOSが起動できない場合の復旧方法について説明します。

sfcの部分、何をやってるの

今回の背景にある「いろいろ」の部分、本当にいろいろあり、起動しなくなった時点と対応している時点でハードウェア構成が違います。BCDを作り直しても、HAL.DLLでエラーが出てWindowsが起動しませんでした。

なので、HAL.DLLを作り直してもらうためにsfcを実行しています。
他の方の環境だともしかしたら要らないかもしれません。

コメント