web-dev-qa-db-ja.com

Windows 8 EFIブートローダーを修復する方法

数日前、私はハードディスクにWindows 7とWindows 8をEFIモードでインストールしました。今日、ブートローダは行方不明/破損しています。

私は現在、フラッシュドライブにWindows 8のインストーラを使っていて、ブートローダを修復するために自動修復オプションを使ってみましたが、何もしませんでした。スタートアップ修復オプションは、Windows 8インストーラーにもありません。

コマンドプロンプトからEFIブートローダーを修復または再作成する方法を教えてください。

BCDEDITは以下のメッセージを返します。

The requested system device cannot be found.
123
Elmo

私は新しいSSDにクローンした後に私のWindows 8 PCを再起動させようとして多くの時間を費やし、そして私が最終的にそれがすべてうまくいった方法をまとめることを試みる -

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

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

DiskPartツールを使用して正しいパーティションをすべて確保し、EFIパーティションを識別するためにdiskpartを入力します。ここで重要なことは、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.exeを使用してBCDストアを再作成します。

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

/f ALLパラメータはUEFIファームウェア/ NVRAMを含むBIOS設定を更新します。/l en-gbは英国/ GBロケールにローカライズするためのものです。地域対応のデフォルトはアメリカ英語、またはen-USです。

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

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

[編集]

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

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

他の答えは有用ですが、これは私が私のものを直すためにしなければならなかったことです。

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のパーティションが見えるはずです。あなたは今それに手紙を割り当てる必要があります。これを行うには、assignを入力し、次にlist volを入力して、割り当てられている文字を確認します。

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

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

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

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

bootrec /fix

bootrec /fixmbr

これらは両方とも成功して戻ってきました。 Windowsは完全に回復しました。

21
Paul

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

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

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

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

  1. マスターブートレコード(MBR)、パーティションテーブル、パーティションフラグ、およびEFIブートシナリオには適用されないその他のガベージの修正に関するがらくたをすべて無視しました。 AT ALL 。せいぜい、新しい unrelated 、NON-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パーティションをマウントする必要があります。

実際、 strictly 正しくない予感があります-EFIパーティションは already いくつかの内部サブシステムによってマウントされていると強く疑います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は motherboard 用で、WindowsブートLOADER(および他のオペレーティングシステム用のその他のもの)が含まれています。これは、Windowsを使用するかどうかをマザーボードが認識せず、意味のある固定パスを必要とするため、この名前が付いています。

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

bootx64.efi

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

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

  1. both "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つのかなり小さなものが表示されます。小さなものはすでに破損しており、失敗した修復プロセスのアーティファクトです。使用しないでください。両方とも大きい場合は、古い方を使用してください。いずれの場合でも、 BACKUPS のどこかに別のバックアップコピーを作成します。

  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つバックアップすることをお勧めします。

申し訳ありませんが、非常に時間がかかります。ある時点でこれを適切な記事に変える必要がありますが、SOイライラする人が非常に多いので、自分の経験をできるだけ早く記録する必要があると感じました。

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

9
Matt Heck

Windows 8はまだ最終的な形で出ていないので、問題が予想されることです。あなたは私たちの大部分にとって新しい分野にいます、そこで私たちが使っていたコマンドはもう働かないかもしれません。 @soandosでリストされているコマンドに、BCDを完全に再構築するものを追加します。

bootrec /rebuildbcd

Windows 8のAdvancedブートメニューを使って何が起こるのか教えてください。

何も上手くいかない場合、記事 が起動に失敗したときにWindows 7を修復するbcdedit 起動エラーを修正します。いずれにせよあなたのコンピュータ上のbcdeditの出力が何であるかを見るのは面白いでしょう。

[編集]

これらのリンクはいくつかの役に立つアイデアを含むかもしれません:

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

5
harrymc

最も簡単な方法:

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

  • BCDファイルが隠れている場合は、attrib bcd -s -h -rを入力してを押します。 Enter。これにより、ファイルを修正して上書きすることができます。

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

  • Bootrec /RebuildBCDを入力してを押します Enter Windows 8に最初からブートメニューを強制的に再構築させるため。

  • 終了コマンドプロンプトを表示してシャットダウンします。 Windows回復メディアを取り出して再起動します。これで終わりです!

3
Rodolfo Philipp

DISKPARTでは、vol 0またはD(DVD)とvol 1またはC(Windows NTFSパーティション)しかありませんでした。 vol 1をACTIVEにするまでは、何も役に立ちませんでした。

DISKPARTを終了した後、私はただタイプしました:

bootrec /fixboot
bootrec /rebuildbcd

その後、システムは正しく修復されました。私は使わなかった

bootrec /fixmbr

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

2
Halberdier

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というメッセージが表示されたことです。

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

この順番で...

  • 最初に、私は、自分が後でアクティブにするように割り当てた、システムパーティションのボリュームをEasyupパーティションマスターから起動し、その中にフォーマットしました。再起動するとエラーNTLDR missingが出ました。

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

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

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

1
Roko

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

Bcdedit/set {bootmgr}デバイスパーティション= Z:

表示形式:bcdedit.exe/enum firmware

0
James Risto