前回、壊れたHDDからエラー付きでクローンもどきを作ってユーザデータを吸い上げることが出来たが、クローンもどきを実装したDynabookは立ち上がらなかった。この状態でマイクロソフトからWindowsのインストーラをダウンロードしピュアなWindows10をクリーンインストールすることは出来るが、出来ればDynabookの回復環境(WindowsRE)を起動してメーカー提供のアプリを含む工場出荷時の状態に戻せるようにしたい。
このままでは回復環境が立ち上がらないので作業用PCで(rufus使って)USBメモリーにWindowsPEをインストールし、そのUSBメモリーからDynabookを起動して作業する事にした。
F12を押しながらDynabookを起動し、USBメモリーから立ち上げ、キーボードの選択を行い、次のインストール画面の左下に小さく表示された「コンピュータを修復する」をクリックし(このとき間違っても「今すぐインストール」をクリックしてはならない)、
ここで先ずGPTの起動情報(EFIパーティションの中にあるBCDファイルの内容)を確認する。それにはBCDEditコマンドを使う。
コマンドプロンプトから bcdedit /enum を実行すると、
>bcdedit /enum
Windows ブート マネージャー
--------------------------------
identifier {bootmgr}
device partition=\Device\HarddiskVolume7
path \EFI\Microsoft\Boot\bootmgfw.efi
description Windows Boot Manager
locale ja-JP
inherit {globalsettings}
default {default}
resumeobject {3990bcde-b3ba-11ec-81f0-e8a48f166c51}
displayorder {default}
toolsdisplayorder {memdiag}
timeout 30
Windows ブート ローダー
--------------------------------
identifier {default}
device partition=C:
path \Windows\system32\winload.efi
description Windows 10
locale ja-JP
inherit {bootloadersettings}
recoverysequence {3990bce0-b3ba-11ec-81f0-e8a48f166c51}
displaymessageoverride Recovery
recoveryenabled Yes
isolatedcontext Yes
allowedinmemorysettings 0x15000075
osdevice partition=C:
systemroot \Windows
resumeobject {3990bcde-b3ba-11ec-81f0-e8a48f166c51}
nx OptIn
bootmenupolicy Standard
といった情報が表示される。
この中に表示されている{3990bcde-b3ba-11ec-81f0-e8a48f166c51}の様な値をGUIDといいシステム的に決まっている定数か或いは重複しないようWindowsが個別に割り当てた値である。{GUID}は「システム上の名前」であり、何処か別の所に定義され或いは存在している実体と結びついている。このほか{default}の様な{}で括られた表現はGUIDにラベル(人が読むための名前)を割り付けたものである。例えばブートマネージャーで引用されている{default}はidentifierが{default}であるブートローダーの事である。
クローンもどきのHDDが立ち上がらないのは、完璧なクローンならばパーティションのGUIDもそのままコピーされ矛盾は生じないがクローンもどきではパーティションを作成した時点でそこに新しいGUIDが割り振られるためBCDの記述内容と実際に割り振られたGUIDが不整合を起こしているものと考えた。
ここはダメモトでネット情報を元に管理情報を手作業で書き込んでみることにし、次の一連のコマンドを1つずつ打ち込んだ。
> bcdedit /store BCD /create {bootmgr} /d "Windows Boot Manager"
> bcdedit /store BCD /create /d "Windows 11" /application osloader
ここに新しい{GUID}が表示されるのでそれをコピーして次の{xxxx}に入れる。
> bcdedit /store BCD /set {bootmgr} default {xxxx}
> bcdedit /store BCD /set {bootmgr} path \EFI\Microsoft\Boot\bootmgfw.efi
> bcdedit /store BCD /set {bootmgr} locale ja-jp
> bcdedit /store BCD /set {bootmgr} displayorder {default}
> bcdedit /store BCD /set {bootmgr} timeout 10
> bcdedit /store BCD /set {default} device partition=c:
> bcdedit /store BCD /set {default} osdevice partition=c:
> bcdedit /store BCD /set {default} path \windows\system32\winload.efi
> bcdedit /store BCD /set {default} systemroot \windows
これは成功しDynabook単独でWindowsが立ち上がるようになった。しかしBCDの項目数が元のBCDより少ない。元通りの内容に戻したいがこれ以上正確に打ち込める自信も無い(実際幾つか間違った内容も打ち込んでいたが順序に意味がある可能性もあり訂正する方法が分からなかった)。
あれこれ調べていくうちにbootrecコマンドを使うともっと簡単にBCDを再構築できる事が分かった。そこで次の一連のコマンドで改めてBCDを再構築した。
> bootrec /fixmbr
> bootrec /scanos
> bootrec /rebuildbcd
これで内蔵HDDからWindowsを起動する事ができた。この時のBCDの内容は次の様になっていた。
Windows ブート マネージャー
--------------------------------
identifier {bootmgr}
device partition=\Device\HarddiskVolume3
path \EFI\Microsoft\Boot\bootmgfw.efi
description Windows Boot Manager
locale ja-JP
default {default}
displayorder {default}
timeout 30
Windows ブート ローダー
--------------------------------
identifier {default}
device partition=C:
path \Windows\system32\winload.efi
description Windows 10 Home
locale ja-JP
osdevice partition=C:
systemroot \Windows
resumeobject {5ef36c70-b615-11ec-93cb-806e6f6e6963}
bootmenupolicy Standard
オリジナルに比べ幾つか項目が無くなっているが、これでとりあえずWindowsは動く(まだ回復環境は起動できない)。
ここまで来たらDynabookに通常通りログインし、壊れている可能性のあるWindowsを修復することとした。ネットが使える状態でコマンドプロンプトを管理者モードで立ち上げ、次の2つのコマンドを使って復旧する(多少時間がかかる)。
> sfc /scannnow
> DISM /online /cleanup-image /restorehealth
sfcは破損したファイルを修復して正常に終了したが、一方DISMは3.8%進んだ所で「指定されたファイルが見つかりません」とエラーを吐いて止まってしまった。どうやらシステムのファイルが壊れているようだ。いよいよクリーンインストールが必要になった。そのためには回復環境を復活させる必要がある。
単にWindowsをクリーンインストールするのなら作成したWindowdPEから「今すぐインストール」を実行すれば良いが、一方Windowsを工場出荷の状態に戻すには回復環境(WindowsRE)を復活させHDDに格納されているメーカー作成のインストーラを起動させる必要がある。しかし回復環境はまだ立ち上がらない。
続く。
0 件のコメント:
コメントを投稿