Windows 8 EFIブートローダーを修復するにはどうすればよいですか?


122

先日、Windows 7とWindows 8をEFIモードでハードディスクにインストールしました。今日、ブートローダーが紛失/破損しました。

現在、フラッシュドライブにWindows 8インストーラーがあり、自動修復オプションを使用してブートローダーを修復しようとしましたが、何もしませんでした。Windows 8インストーラーには、スタートアップ修復オプションもありません。

コマンドプロンプトからEFIブートローダーを修復/再作成するにはどうすればよいですか?

BCDEDIT 次のメッセージを返します。

The requested system device cannot be found.

現在のソリューションの何が問題になっていますか?
-soandos

@soandos私も同じ問題を抱えていました。あなたとharrymcからコマンドを実行しましたが、すべて正常に動作するようになりました!お二人に感謝します。
ComFreek

2
同じようにFYI、私たちは最近、Windows 8のための自動化されたEFIの修復ツールをリリースしました:neosmart.net/blog/2013/...
マフムードアル・Qudsi

1
UEFI Windows 8で人々がそんなにトラブルを抱えているとは思っていませんでした...とにかくシステムパーティションが消えたり壊れたりするのはどうしてですか?通常はWindowsにもマウントされないため、ファイルシステムの破損は起こりえません。また、現在のすべてのOSにはバグがなく、既存のWindowsインストールを台無しにできません。実際、WindowsでさえUEFIでLinuxを台無しにすることはありません。
Milind R 14

あなたがダイナミックディスクを使用している場合、これは適用されません
rainabba

回答:


183

新しいSSDにクローンを作成した後、Windows 8 PCを再起動するために多くの時間を費やしました。

まず、UEFI Windows 8リカバリディスク(CD / DVD / USB)からブートします-自動リカバリプロセスでは正しいWindowsパーティションが見つからなかったことがわかりました。たとえば、BCDEDITを使用してWindowsパーティションを見つけて起動しましたが、コールドブートを拒否したり、2回目の再起動または電源オフ後に設定を「保持」しませんでした。

詳細オプションに移動し、コマンドプロンプトを実行します。

入力diskpartしてDiskPartツールを使用し、すべての適切なパーティションがあることを確認し、EFIパーティションを識別します。ここで重要なことは、EFIパーティションがFAT32としてフォーマットされていることです。

DISKPART> sel disk 0

Disk 0 is now the selected disk.

DISKPART> list vol

  Volume ###  Ltr  Label        Fs     Type        Size     Status     Info
  ----------  ---  -----------  -----  ----------  -------  ---------  --------
  Volume 0     E                       DVD-ROM         0 B  No Media
  Volume 1     C                NTFS   Partition    195 GB  Healthy    Boot
  Volume 2         WINRE        NTFS   Partition    400 MB  Healthy    Hidden
  Volume 3                      FAT32  Partition    260 MB  Healthy    System

次に、EFIパーティションにドライブ文字を割り当てます。

DISKPART> sel vol 3

Volume 3 is the selected volume.

DISKPART> assign letter=b:

DiskPart successfully assigned the drive letter or mount point.

exitコマンドプロンプトで次を入力してDiskPartツールを終了します。

cd /d b:\EFI\Microsoft\Boot\

bootrec /fixboot

BCDファイルを削除または名前変更します。

ren BCD BCD.bak

bcdboot.exeBCDストアの再作成に使用:

bcdboot c:\Windows /l en-gb /s b: /f ALL

この/f ALLパラメーターは、UEFIファームウェア/ NVRAMを含むBIOS設定を更新し、/l en-gbUK / GBロケールにローカライズします。ローカライズのデフォルトは米国英語、またはen-USを使用します。

再起動して、指を交差させます。

これは私に頭痛を与えました。私は長い間輪になっていた。執筆時点でUEFI / Windows 8の修正に関する信頼できる情報はあまりありません。

[編集]

Hyper-Vを再度有効にするには、再起動後にWindows内の管理者コマンドプロンプトから次を実行する必要がありました。

bcdedit /set {default} hypervisorlaunchtype Auto
bcdedit /set {default} nx OptIn

1
これは、Windows 10ダウンロードISOから行いました。最初は動作しませんでしたが、その後GUIメニューでスタートアップ修復を実行しました。:-)私は助けに感謝します:
アッバフェイ

このレシピは最も有望であると感じましたが、私はヒットしました:BFSVC Error: Could not open the BCD template store. STatus = [c000000f ]
Dusan Bosnjak 'pailhead'

22

他の答えは役に立ちますが、これは私の問題を解決するために私がしなければならなかったことです。

Windows 7がインストールされた1.5 TBのハードドライブがありました。次に、購入した150 GB SSDにWindows 8をインストールしました。1.5 TBのハードドライブに障害が発生し、ノイズが聞こえ、「システムディスクを挿入してください」と言ってコンピューターが起動しなくなりました。ブートローダーは1.5 TBのディスク上にあるはずだったため、見つからなかったと思いました。判明したことですが、問題は、従ったガイドがブートローダーを再構築しないか、またはより小さな150 GBのディスクにEFIパーティションがなかったために呼び出された(これは故障したディスクに存在した可能性がある)ことでしたディスク全体を埋めるパーティションは1つだけでした。

すべてのデータを失いたくなかったので、Windows 8インストールUSBドライブから起動してコマンドプロンプトを入力しました(表示される場合、このUEFIバージョンを起動できないことに注意してください。 UEFIがその前に表示されます)。

コマンドプロンプト(手順については他の回答を参照)で、パーティションを縮小する必要があります。これを行うには、次のコマンドを入力しEnter、それぞれを押します。

diskpart

list disk

select disk 0

list partition

select partition 1

shrink desired=200 minimum=200

create partition efi

list partition

select partition 2

format fs=fat32

これらのコマンドはEFIパーティションを作成します。を入力してすべてを再確認しますlist vol。200 MBのパーティションが表示されるはずです。次に、それに文字を割り当てる必要があります。これを行うには、を入力しassignlist volもう一度入力して、割り当てられている文字を確認します。

これで、ブートファイルをこの新しく作成したパーティションにコピーする必要があります。

bcdboot C:\Windows /l en-gb /s B: /f ALL

注:C: Windowsを含むパーティションのドライブ文字と、作成B:したEFIパーティションに割り当てられた文字に置き換える必要があります。

次のコマンドも入力しました。

bootrec /fix

bootrec /fixmbr

これらは両方とも成功して戻ってきましたが、気にする人以外は本当に何をしたのか分かりません。Windowsが完全に回復しました。


2
bootrec / fixはWindows 8では有効なコマンドではないように見えますが、それ以外の場合は指示が機能し、すべての問題が解決しました。ありがとう!
シアランフィッシャー14

i:EFIパーティション(最初はディスク上)ですが、空です。実行するbcdboot c:\windows /s i: /f ALLと、「BFSVCエラー:emementアプリケーションデバイスの設定に失敗しました。ステータス= [c00000bb]」と表示されます。ファイルはIIから起動できますが、削除すると起動できません。
rainabba

どうもありがとう!これは私の一日を救った。事実上すべてを試してみましたが、何も機能しませんでした。私が行方不明だったステップは、EFIボリュームのフォーマットでした。EFIボリュームをフォーマットしたら。bcdブートコマンドが正常に機能し、Windows 10がバックアップされ、再び実行されました。
サヒル

通常のCの代わりにWindowsのドライブ文字を選択するように指示した+1:
ptetteh227

+1-最も重要な意味を覚えておいてください注:C:をWindowsを含むパーティションのドライブ文字に、B:を作成したEFIパーティションに割り当てられた文字に置き換える必要があります。私は13時間までにそれと戦う!次の12時間、私を救ってくれてありがとうございます:)
JerzyDrożdż12

9

さて、ここで適切な概要をまとめる時間がありました。長いですが、かなり完全であり、何が起こっているのかを確認するのに役立ちます。

まず、これが起こる可能性のある1つの方法:

  1. BIOSの設定が失われます。
  2. 問題ありません、すべてのものはEFIパーティションに保存されています。
  3. ...明らかな理由により、SATA IDEとAHCIの設定を除きます。
  4. SATA-AHCIを使用していましたか?おそらく現在SATA-IDEを使用しているでしょう。
  5. それを理解する前に起動しようとしましたか?
  6. 行った場合、失敗しました。Windowsに修正を試みましたか?
  7. BLAMを実行した場合、ブート構成データベースが破壊されている可能性があります。
  8. 前回使用していた正しいSATA設定を使用していることを確認してください。

ここまででおそらくあなたがしたことは次のとおりです。これらのいずれかが一致しない場合、これが実際に問題にあるかどうかを慎重に評価し、アイデアのためにこれを読みますが、最初に考えずにそれに従ってください。

  1. マスターブートレコード(MBR)、パーティションテーブル、パーティションフラグ、およびEFIブートシナリオには適用されないその他のガベージの修正に関するがらくたをすべて無視しました。 まったく。せいぜい、関係のない新しい非EFIブートソリューションを完全に再構築できます。ただし、それは簡単ではないかもしれません:

  2. Windowsにはブート構成データベースがないことが確かであることがわかりましたが、残念ながら、完全に無知であるか、どこに行くかについて非常に確実です。

  3. ブートストアは通常(どこか)\ Boot \ BCDであり、ファイルが非表示であることを認識しています。「dir / a:hs」を使用して表示します。

  4. BCDEDIT.EXEに少し慣れて、 "/ CREATESTORE"を使用してステージングファイル内のブート構成データベースを "モックアップ"できることを理解しました(「BCD」と名付けないでください) 「/ STORE」オプションでステージングファイルを明示的に使用できます。「/ CREATE {bootmgr}」を使用してWindowsブートマネージャーのメニューエントリを追加でき、「/ IMPORT」を使用してインポートできる必要があります。 ...

  5. ...しかし、これを行おうとすると、できません。/ SYSSTOREオプションを調べますが、これは正しく聞こえますが、「曖昧な」ために別のストアを使用することはできません。あなたは、店がどこにあるのか、またはすべきであるのを知っているが、それを見つけることができません。

  6. 「MOUNTVOL」を使用してEFIパーティションをマウントしようとしましたが、リストに表示されないため、できません。

そのすべてがあなたにかなり密接に当てはまる場合、ここで何が起こっているかもしれません:

  1. Windowsは、EFI用にセットアップされていることを確認できます(UEFIブートを介してDVDをブートした、EFIパーティションがあるなど)。

  2. したがって、BCDファイルを探す場所を知っていますが、どういうわけか場所が間違っている(この問題ではなく類似しています)か、BCDが削除されています。

  3. どうやら、それがどこにあるべきかを知っているので、これは/ SYSSTOREを壊します。実際、それはおそらく正しい動作です。

  4. 私が知る限り、MOUNTVOLはEFIパーティションを意図的に非表示にします(または何らかの形でそれを認識できません)。これにより、ファイルシステムがマウントされなくなり、正しいサブディレクトリの検索、データベースの存在の確認などができなくなります。

最後に、これについてあなたがする必要があることはここにあります。良いニュースは、おそらくあなたが今まで望んでいたよりもずっと簡単だということです。

  1. 実際、EFIパーティションをマウントする必要があります。

実際、厳密には正しくない予感があります-EFI パーティションは既にいくつかの内部サブシステムによってマウントされているため、BCDEDITが不安定になっているのではないかと強く思います-データベースは見えませんが、どこに行くべきかはわかっています。ただし、持っていないものはすべてドライブ文字です。じゃあ何をすればいいの?

まあ...あなたのDOSのルーツはどこまで遡りますか?ASSIGNコマンドを覚えていますか?何だと思う。

  1. DISKPARTを開始します。

  2. DISKPARTに慣れていない場合、基本的に動作する方法はセットの階層です。次のレベルに進むには、1つのレベルで1つの要素のみを選択する必要があります。そのため、「LIST DISKS」、次に「SELECT DISK n」と入力します。nは適切なものです。

  3. 「LIST PARTITION」および「LIST VOLUME」(複数ではないことに注意)を使用して、洞察を得て、EFIパーティションを特定します。

通常、「SYSTEM」とマークされた100MB FAT32パーティションです。ディスクはGPTパーティションテーブルを使用しているはずなので、かなりの数のパーティションが表示される可能性があることに注意してください。これらのいくつかは、緊急時の回復のためのものです。EFIの問題のために非常に多くのことを行います。しかたがない。

EFIパーティションと他のいくつかのパーティションにはドライブ文字がないことに注意してください。そうしたい場合は、GPTパーティション属性を表示することもできます。これにより、接線関連の「Aha」モーメントもいくつか得られます。

  1. 「SELECT PARTITION n」。nはEFIパーティションです。(必要に応じて、代わりにボリュームを選択できると思います。)

  2. "割り当てます"。それでおしまい。ドライブ文字を指定しないでください。ただ「ASSIGN」。

  3. 「リストボリューム」。EFIパーティションに割り当てられたドライブ文字が表示されます。

  4. 「EXIT」DISKPART。

そして今...大きな脂肪警告。おそらくS:(またはASSIGNから取得したもの)に直接移動し、/ Bootパーティションに気付くでしょう。「AHA!」あなたが言うでしょう。「ここにはBCDファイルはありません!」まず...ファイルが隠されていることを覚えておいてください。第二に、もう少し掘り下げてみてください。

S:\ EFI \ Boot

もあります:

S:\ EFI \ Microsoft \ Boot

これらの両方について問題を確認する必要があります。

S:\ EFI \ Bootはマザーボード用であり、Windows Boot LOADER(および他のオペレーティングシステム用のその他のもの)が含まれています。この名前は、Windowsを使用するかどうかをマザーボードが認識しておらず、意味のある固定パスを必要とするためです。

  1. S:\ EFI \ Bootを調べます。Windows 7 Professional、64ビットの場合、以下が表示されます。

bootx64.efi

EFIシェルをインストールしている場合(常に良い考えです)、さらに「shellx64.efi」が表示される場合があります。

注:「chainloader + 1」を使用するデュアルブートLinuxユーザーには、ここに余分なエントリは表示されません。

  1. 「dir」と「dir a:h」の両方を使用して S:\ EFI \ Microsoft \ Bootを調べます。Windows 7 Professional、64ビットの場合、多数の言語テンプレート(「en_US」など)と次のファイルが表示されます。

bootmgr.efi bootmgfw.efi memtest.efi BCD BCD.Backup.001 BCD.Backup.002

...ただし、おそらくBCDが表示されないことを除きますか?しかし、これらのバックアップファイルは確かに魅力的です。

  1. 使用するバックアップファイルを決定します。欠けている最近の変更が何であれ、システムを起動する能力ほど重要ではないので、最も完全なものを探してください。おそらく、1つの大きなものと1つのかなり小さなものが表示されます。小さなものはすでに破損しており、失敗した修復プロセスのアーティファクトです。使用しないでください。両方とも大きい場合は、古い方を使用してください。どのような場合でも、バックアップの追加のバックアップコピーを別の場所に作成します。

  2. 使用することにしたバックアップを「BCD」にコピーします。

  3. シェルを終了し、完全にシャットダウンして、再起動します。

  4. WindowsにNORMALLYを起動するように指示します。この時点で、開始する必要があります。

Q:バックアップBCDがない場合はどうなりますか?

A:それは実際には起こらないはずです。おそらく、間違ったディレクトリにいるか、EFIをサポートしているが実際には使用していないか、必要なすべてのWindowsマテリアルなしでEFIパーティション全体を再構築したことを意味します(特に、複数のバージョンのWindowsを使用している場合)。その場合、DVDからEFIマテリアルをコピーし、BCDEDITを使用してブート構成データベースを変更または再構築する必要があります。

Q:「BCDEDIT / SYSSTORE」を使用してEFIシステムで何でもできるシナリオの例を教えてください。

A:これまでのところ、いいえ。

とにかく、これが人々の問題を解決するのに役立つか、少なくとも考えさせられることを願っています。非常に重要な最後のポイントとして、通常は上記のDISKPART ASSIGNテクニックを使用して、Windowsで EFIパーティションをマウントおよび検査できることに注意してください。この種のトラブルに遭遇するに、EFIパーティションの完全なバックアップを取得するために、少なくとも1回はこれを行う必要があります。C:ドライブのサブディレクトリに1つ、USBフラッシュドライブに1つバックアップすることをお勧めします。

申し訳ありませんが、非常に時間がかかります。ある時点でこれを適切な記事に変える必要がありますが、非常にイライラしている人が非常に多いので、自分の経験をできる限り完全に迅速に文書化する必要があると感じました。

乾杯、マット「ブレークポイント」ヘック


1
実際、MOUNTVOLではESPをマウントできます。MOUNTVOLレターを使用します:/ S。
Yuhongバオ

そのEFIパーティションをマウントしても何も見つからない場合、どうすればいいですか?私はbcdboot c:/windows /s i: /f ALLそういうことで始められると思っていましたが、それだけで「BFSVCエラー:要素アプリケーションデバイスの設定に失敗しました。ステータス= [c00000bb]」
rainabba

このエラーは一度も見たことがありますが、今では私は以前ドライブになかったドライブにE​​FIフォルダーがあるようです。それでもエラーなしで他のことをすることはできず、起動できませんが、それは少なくとも何かです。
rainabba

別のルートを完全に試すことにしました。別のフラッシュドライブを接続し、ワイプしてドライブ文字を指定し、EFIパーティションの代わりにターゲットとして使用することを繰り返しました。要するに、私は自分のWindowsインストールで起動するのではなく、そのフラッシュドライブから起動します。私は最初のドライブの最初のパーティション(EFI、fat32、ファイルがあります)であるにもかかわらず、EFIパーティションから起動することができませんでした。私のシステム。システムからこの「キー」を取り出すだけで起動しません。
rainabba

5

Windows 8はまだ最終版ではないため、問題が発生する可能性があります。あなたは私たちのほとんどにとって新しい領域にいます。そこでは、私たちが使用していたコマンドがもう機能しないかもしれません。@soandosによってリストされたコマンドに、BCDを完全に再構築する次のコマンドを追加します。

bootrec /rebuildbcd

また、Windows 8の[詳細]ブートメニューを使用して、何が起こるかを教えてください。

何も動作しない場合、記事「Windows 7が起動に失敗した場合の修復」には、bcdeditを使用して起動エラーを修正するためのアドバイスがあります。どのような場合でも、お使いのコンピューターでのbcdeditの出力を確認することは興味深いでしょう。

[編集]

これらのリンクには、役に立つアイデアが含まれている場合があります。

DVDから
Windowsブートローダーを回復するWindows 7ブートマネージャーの回復の問題
Windows 7が突然起動しない– Windows 7ブートローダーを修復する


Windows 7に関するものですが、役立つリンクを追加しました。
harrymc12年

3

最も簡単な方法:

  • 上記の投稿の手順に従ってBCDファイルを見つけ、そのディレクトリに移動します。

  • BCDファイルが非表示の場合は、入力してattrib bcd -s -h -rを押しEnterます。これにより、ファイルを変更して上書きできます。

  • 入力してren bcd bcd.oldを押しEnterます。これにより、現在のBCDファイルの名前が変更されます。

  • 入力してBootrec /RebuildBCDを押しEnter、Windows 8でブートメニューを最初から再構築するように強制します。

  • コマンドプロンプトを終了してシャットダウンします。Windows Recovery Mediaを取り出して再起動します。できました!


2

DISKPARTでは、ボリューム0またはD(DVD)とボリューム1またはC(Windows NTFSパーティション)しかありませんでした。vol 1 ACTIVEを作成するまで、何も機能しませんでした。

DISKPARTを終了した後、次のように入力しただけです。

bootrec /fixboot
bootrec /rebuildbcd

その後、システムが適切に修復されました。私は使用しませんでした

bootrec /fixmbr

マルチブート用にMBRでGAG(gestor de arranquegràfico)を使用していたためです。


1

6時間の苦労の末、Windows 8のブートの問題をなんとか解決できました。

今日、通常の再起動後、メッセージMBR not foundまたはそれに類似したメッセージが表示されましたが、それ以上覚えていません。bootrecコマンド、Windowsの自動修復(インストールされているWindowsを見つけることができませんでした)、他の何百もの方法を試しましたが、何もしませんでした。

問題は、実行bootrec /rebuildbcdしたときに正常に実行されyes、構成を保存する場合に入力する必要があるときに、メッセージが表示されたことですthe file is not accessible because it is used by a another process

何時間もの心のひび割れの後、私はついにそれを解決しました。

この順序で...

  • まず、イーズアップパーティションマスターを起動し、後でアクティブとして割り当てたシステム予約ボリューム(ブートフォルダーがあった場所)をフォーマットしました。再起動したときにエラーが発生しましたNTLDR missing

  • それから私は、Windowsの回復で起動し、コマンドプロンプトを開いて、入力された bootrec /fixmbr/fixboot/scanos/rebuildbcd(今実行され罰金:])

  • 終了cmdし、自動修復をクリックしました。

  • その後、Windows 8を選択できました。再起動すると、Windows 8のロゴが表示されました。


2
ヘッズアップ:この答えはMBRディスクのようです。GPTディスクでは、ボリュームをアクティブとしてマークすると、diskpart.exeが次のメッセージを返します。「ACTIVEコマンドは固定MBRディスクでのみ使用できます。」
ザカリヤル

0

私のシナリオ; EFIシステムパーティションを解放しませんでしたが、ドライブを切り替えてWindowsをインストールすると、最初のドライブのWindowsブートマネージャーUEFIブートエントリが台無しになったようです。ドライブを直接指すUEFIエントリを使用して起動する必要がありました。「device partition = \ Device \ HarddiskVolumeX」設定を修正/追加することで修正したと思います(私の場合はX =2。2番目のパーティションはdiskpart.exeでZ:にマップされたEFIシステムパーティションです)。

Bcdedit / set {bootmgr} device partition = Z:

表示:bcdedit.exe / enum firmware


-1

使用: bootrec /fixmbr(MBRを更新し、おそらくこの場合は何もしませんが、どちらも傷つけません)

bootrec /fixboot システムパーティションのブートセクタを書き換えます。

bootrec /scanos ドライブ上にあるOSをスキャンし、ブートローダーに追加します。

コマンドを順番に実行するだけです。


コメントするDownvoterケア?
soandos

1
このbootrec /fixmbrコマンドは、作成者の問題や状況には適用されません。
ラムハウンド

-4

回復コンソールで次のコマンドを使用して、修正することができました。

 bootcfg C:\Windows /l en-us

2
このツールは、Windows XPおよびそれ以前のバージョン用のboot.ini専用です。
エルモ

1
これはEFIブートローダーには関係ありません。
マフムードアルクシ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.