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

bootloader uefi windows-7 windows-8

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

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

コマンドプロンプトからEFIブートローダを修復/作成するには?

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

The requested system device cannot be found.

  124  Elmo  2012-08-12


ベストアンサー

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

まず、UEFI Windows 8 リカバリディスク(CD/DVD/USB)から起動します – 自動リカバリプロセスでは正しい Windows パーティションを見つけられず、BCD 設定に追加しても確実に起動できるようにしてくれません

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

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.exeを使用してBCDストアを再作成します

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

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

再起動して祈っててくれ

これで頭痛がしました。長い間、堂々巡りをしていました。執筆時点では、UEFI/Windows 8 の修正に関する信頼できる情報はあまりありません

[EDIT]

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

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

183  Alex  2012-11-12


他の回答は参考になりますが、これは私が自分のを直すためにしなければならなかったことです

1.5TBのハードディスクにWindows7をインストールしていました。その後、購入した150GBのSSDにWindows 8をインストールしました。1.5TBのハードディスクが故障して、「システムディスクを挿入してください」という音がしてパソコンが起動しなくなりました。1.5TBのディスクにブートローダが入っていたはずなので、ブートローダがなくなっているのかと思っていました。しかし、問題は、150GBの小さいディスクにEFIパーティションを持っていなかったので、私が従ったガイドではブートローダを再構築していませんでした(これは故障したディスクにあったかもしれません)

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

コマンドプロンプトに入ったら(説明は他の回答を参照)、パーティションを縮小する必要があります。これを行うには、以下のコマンドを入力し、それぞれの後に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は完全に回復しました

22  Paul  2012-12-12


時間があったので、ここにちゃんとした概要をまとめてみました。長いですが、かなり完成されていて、何が起こっているのかを理解するのに役立つはずです

まず、このようなことが起こる可能性がある一つの方法

  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. ブートストアは通常 (somewhere)\Boot\BCD であり、ファイルは隠されていることを認識しています
  4. BCDedit.exe に少し慣れてきて、/CreateStore を使ってステージングファイルにブート設定データベースを「モックアップ」できること、/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パーティションは、何らかの内部サブシステムによって既にマウントされているのではないかと強く疑います。しかし、それが持っていないものは、ドライブレターだ。それで…どうすればいい? さて…あなたのDOSのルーツはどこまで遡るのでしょうか?Assignコマンドを覚えていますか?何だと思う?
  2. Start DiskPart.
  3. DiskPartに慣れていない方は、基本的には集合の階層構造になっています。つまり、List Disk、そしてSelect Disk nとなり、nはあなたにとって適切なものであれば何でも構いません
  4. List PartitionList Volume (複数ではないことに注意) を使って EFI パーティションを確認してください。 通常はSystemと書かれた100MBのFAT32パーティションです。ディスクは GPT パーティションテーブルを使用しているはずなので、かなりの数のパーティションがあることを覚えておいてください。これらの中には緊急復旧用のものもあります。まあいいや。 EFIパーティションや他のいくつかのパーティションにはドライブレターがありません。その気になれば、GPTパーティションの属性も見ることができます
  5. Select Partition n ここで n は EFI パーティションです。(必要であれば、代わりにボリュームを選択することもできると思います)
  6. Assign.これだけです。ドライブレターを指定しないで、Assignだけ
  7. List Volume.これでEFIパーティションに割り当てられたドライブレターが表示されるはずです
  8. ExitDiskPart。 そして今…大きな警告が出ています。おそらく S: (Assign で取得したもの) に直行して、Boot パーティションがあることに気づくでしょう。”AHA!と言うでしょう。”ここには BCD ファイルがない!まず…そのファイルは隠されていることを覚えておいてください。次に…もう少し調べてみると、S:\EFI\BootS:\EFI\Microsoft\Bootがある一方で、問題がないかどうかを両方ともチェックする必要があることに気づくでしょう。S:\EFI\Boot はマザーボード用のもので、Windows Boot LOADER (および他のオペレーティングシステム用の他のものが含まれている可能性があります) が含まれています。これは、マザーボードが Windows を使おうとしているかどうかを知らず、意味のある固定パスを必要とするため、この名前が付いています
  9. S:\EFI\Bootを検査します。Windows 7 Professional, 64ビットの場合、S:\EFI\Bootが表示されているはずです。bootx64.efi EFI シェルをインストールしている場合 (常に良いアイデアです)、追加で shellx64.efi が表示されるかもしれません。 注意: chainloader+1 を使っているデュアルブート Linux ユーザは、ここに追加の項目は表示されません
  10. S:\EFI\Microsoft\Bootdirdir a:hの両方を使って検査します。Windows 7 Professional, 64ビットの場合、言語テンプレートの束(en_USなど)と以下のファイルが表示されるはずです。
    bootmgr.efi bootmgfw.efi memtest.efi BCD BCD.Backup.001 BCD.Backup.002

    …ただし、BCD はおそらく見ないでしょう?しかし、これらのバックアップファイルは魅力的に見えます

  11. 使用するバックアップファイルを決定します。最近の変更点が欠けていても、システムを起動する能力と同じくらい重要ではありません。おそらく、大きなものとかなり小さなものがあるでしょう。小さい方はすでに壊れていて、修復に失敗した時の成果物です。両方とも大きい場合は、古い方を使ってください。どのような場合でも、どこか他の場所にバックアップの追加のバックアップコピーを作成してください
  12. 使用することにしたバックアップをBCDにコピーします
  13. シェルを終了し、クリーンにシャットダウンし、再起動します
  14. Windowsが正常に起動するように指示します。この時点で起動するはずです

Q: バックアップBCDを持っていない場合はどうすればいいですか?

A: そのようなことが起こるべきではありません。おそらく、間違ったディレクトリにあるか、EFIをサポートしているが実際には使用していなかったか、または何らかの方法で必要なWindows材料をすべて含まないEFIパーティション全体を再構築したかのどちらかでしょう(特に複数のバージョンのWindowsを使用している場合には可能性があります)。その場合、DVD から EFI 素材をコピーして、BCDeditを使ってブート構成データベースを修正するか、再構築する必要があります

Q: EFIシステム上でBCDedit /SysStoreで何でもできるシナリオの例を教えてください

A: 今のところ、ありません

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

長文になってしまって申し訳ありません。いつかはちゃんとした記事にしなくてはいけないのですが、とても多くの人がイライラしているので、自分の経験をできるだけ完全かつ迅速に文書化する必要があると感じました

9  Matt Heck  2012-11-28


Windows 8はまだ最終的な形では出ていないので、問題は予想されます。あなたは私たちのほとんどにとって新しい領域にいて、私たちが使用していたコマンドはもう動作しないかもしれません。soandos さんがリストアップしたコマンドに、BCD を完全に再構築するこのコマンドを追加します

bootrec /rebuildbcd

また、Windows 8からの高度なブートメニューを使用してみて、何が起こっているかを教えてください

何も動かない場合は、Repairing Windows 7 when they fail to boot に、bcdedit を使って起動エラーを修正する方法についてのアドバイスが掲載されています。いずれにしても、お使いのコンピュータの bcdedit の出力が何であるかを見るのは興味深いことでしょう

[EDIT]

これらのリンクには、いくつかの有用なアイデアが含まれているかもしれません

DVDからWindowsブートローダを復元する Windows 7ブートマネージャの復元問題 Windows 7 Suddenly Wonly’t Boot – Repairing the Windows 7 Bootloader >Windows 7 Suddenly Wonly’t Boot – Repairing the Windows 7 Bootloader

5  harrymc  2012-08-25


一番簡単な方法です

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

  • BCDファイルが隠されている場合は、attrib bcd -s -h -rと入力してEnterを押します。これでファイルの変更や上書きが可能になります

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

  • Bootrec /RebuildBCDと入力してEnterを押すと、強制的にWindows 8の起動メニューが一から作り直されます

  • コマンドプロンプトを終了し、シャットダウンします。Windowsリカバリーメディアを削除して再起動します。これで完了です

3  Rodolfo Philipp  2012-11-29


DISKPARTでは、vol 0かD(DVD)とvol 1かC(Windows NTFSパーティション)しか持っていませんでした。vol 1をACTIVEにするまでは何も動作しませんでした

DISKPARTを終了した後、私はタイプするだけでした

bootrec /fixboot
bootrec /rebuildbcd

でしたらきちんと修理されていました。使っていませんでした

bootrec /fixmbr

MBRでGAG(gestor de arrangeque gràfico)をマルチブートで使っていたからです

2  Halberdier  2013-02-06


6時間の格闘の末、なんとかWindows8の起動問題を解決しました

今日、いつものように再起動したら、MBR not foundかそれに似たようなメッセージが出て、もう覚えていません。bootrecコマンド、Windowsの自動修復(インストールされているWindowsを見つけることができませんでした)、その他の方法を試してみましたが、何も出ませんでした

問題は、bootrec /rebuildbcdを実行すると正常に進み、設定を保存したい場合はyesを入力しなければならない時にthe file is not accessible because it is used by a another processというメッセージが出てきたことです

何時間も心を砕いて、ようやく解決しました

この順番で

  • まず、Easyupパーティションマスターを起動して、後でアクティブに割り当てたシステム予約ボリュームをFORMATEDしました(その中に私のブートフォルダがありました)。再起動するとNTLDR missingというエラーが出ました

  • その後、Windowsリカバリーで起動し、コマンドプロンプトを開き、bootrec /fixmbr, /fixboot, /scanos, /rebuildbcd(これで正常に実行されるようになりました :] )と入力しました

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

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

1  Roko  2012-12-05


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

Bcdedit /set {bootmgr} device partition=Z

view with: bcdedit.exe /enum firmware

0  James Risto  2015-12-19


使用する。bootrec /fixmbr (MBR を更新します。この場合、おそらく何もしないでしょうが、何もしないでしょう)

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

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

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

-1  soandos  2012-08-13


リカバリーコンソールで以下のコマンドを実行することでなんとか直りました

 bootcfg C:\Windows /l en-us

-4  Sorin Dumitru  2012-08-25


タイトルとURLをコピーしました