数日前にハードディスクに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
時間があったので、ここにちゃんとした概要をまとめてみました。長いですが、かなり完成されていて、何が起こっているのかを理解するのに役立つはずです
まず、このようなことが起こる可能性がある一つの方法
- BIOSは設定を失います
- 問題ありません、それらのものはすべてEFIパーティションに保存されています
- …SATA IDE対AHCIの設定を除いては、明らかな理由があります
- SATA-AHCIを使っていましたか?今はSATA-IDEを使っているのではないでしょうか
- それを知る前に起動してみたのか?
- そうすると失敗しました。Windowsに直そうとしたのでしょうか?
- もしそうしたら、BLAMはブート設定データベースを破壊してしまったかもしれません
- 前回使用していたSATAの設定が正しいか確認してください
ここに、あなたが今までにしてきたことがあります。これらのうちどれかが一致しない場合は、これが実際にあなたの問題であるかどうかを慎重に評価し、アイデアを得るためにこれを読みますが、最初に考えずにそれに従わないでください
- マスターブートレコード (MBR)、パーティションテーブル、パーティションフラグ、その他 EFI ブートシナリオには適用されないゴミを修正することについてのたわごとは、うまく無視しています。全くです。せいぜい、新しい、関係のない、非 EFI ブートソリューションを完全に再構築することができるでしょう。しかし、それは些細なことではないかもしれません
- あなたは Windows がブート設定データベースを持っていないことを理解していますが、残念ながら、それは完全に無知か、それがどこに行くのか非常に確実かのどちらかです
- ブートストアは通常
(somewhere)\Boot\BCD
であり、ファイルは隠されていることを認識しています BCDedit.exe
に少し慣れてきて、/CreateStore
を使ってステージングファイルにブート設定データベースを「モックアップ」できること、/Store
オプションを使ってステージングファイルを明示的に使用できること、/Create {bootmgr}
を使って Windows ブートマネージャのメニューエントリを追加できること、/Import
を使ってそれをインポートできるようにすべきであることがわかってきました- …でも、いざやろうとすると、できません。
/SysStore
オプションを調べてみると、それは正しいように聞こえるが、「曖昧」なので、別の店を使うようにはできない。あなたは、その店がどこにあるのか、あるいはあるはずの店がどこにあるのかを知っているような気がしますが、それが見つかりません MountVol
でEFIパーティションをマウントしようとしたけど、リストにも表示されないから無理
そのすべてがあなたにかなり密接に適用される場合は、ここでは何が起こっているかもしれないことがあります
- WindowsはあなたがEFIのためにセットアップされていることを伝えることができます(UEFIブート経由でDVDを起動している、EFIパーティションを持っているなど)
- そのため、BCDファイルがどこにあるかを知っています — しかし、何らかの方法で場所が間違っているか(この問題ではありませんが、似たような問題です)、BCDが削除されているかのどちらかです
- どうやら、あるべき場所を知っているので、
/SysStore
を壊しているようです - 私の知る限りでは、
MountVol
は意図的にEFIパーティションを隠しています(あるいは、それに気づくことができません)。これにより、ファイルシステムのマウントができなくなり、正しいサブディレクトリを見つけられなくなったり、データベースが存在するかどうかの検証ができなくなったりします
だからここで、最後に、あなたがそれについて何をする必要があるかです。良いニュースは、おそらく今頃はあなたが期待しているよりもずっとシンプルになっているということです
- 確かに EFI パーティションをマウントしなければなりません。 実際には、厳密には正しくないような気がします — EFIパーティションは、何らかの内部サブシステムによって既にマウントされているのではないかと強く疑います。しかし、それが持っていないものは、ドライブレターだ。それで…どうすればいい? さて…あなたのDOSのルーツはどこまで遡るのでしょうか?
Assign
コマンドを覚えていますか?何だと思う? - Start
DiskPart
. DiskPart
に慣れていない方は、基本的には集合の階層構造になっています。つまり、List Disk
、そしてSelect Disk n
となり、n
はあなたにとって適切なものであれば何でも構いませんList Partition
とList Volume
(複数ではないことに注意) を使って EFI パーティションを確認してください。 通常はSystem
と書かれた100MBのFAT32パーティションです。ディスクは GPT パーティションテーブルを使用しているはずなので、かなりの数のパーティションがあることを覚えておいてください。これらの中には緊急復旧用のものもあります。まあいいや。 EFIパーティションや他のいくつかのパーティションにはドライブレターがありません。その気になれば、GPTパーティションの属性も見ることができますSelect Partition n
ここで n は EFI パーティションです。(必要であれば、代わりにボリュームを選択することもできると思います)Assign
.これだけです。ドライブレターを指定しないで、Assign
だけList Volume
.これでEFIパーティションに割り当てられたドライブレターが表示されるはずですExit
DiskPart。 そして今…大きな警告が出ています。おそらく S: (Assign
で取得したもの) に直行して、Boot パーティションがあることに気づくでしょう。”AHA!と言うでしょう。”ここにはBCD
ファイルがない!まず…そのファイルは隠されていることを覚えておいてください。次に…もう少し調べてみると、S:\EFI\Boot
とS:\EFI\Microsoft\Boot
がある一方で、問題がないかどうかを両方ともチェックする必要があることに気づくでしょう。S:\EFI\Boot
はマザーボード用のもので、Windows Boot LOADER (および他のオペレーティングシステム用の他のものが含まれている可能性があります) が含まれています。これは、マザーボードが Windows を使おうとしているかどうかを知らず、意味のある固定パスを必要とするため、この名前が付いていますS:\EFI\Boot
を検査します。Windows 7 Professional, 64ビットの場合、S:\EFI\Boot
が表示されているはずです。bootx64.efi
EFI シェルをインストールしている場合 (常に良いアイデアです)、追加でshellx64.efi
が表示されるかもしれません。 注意:chainloader+1
を使っているデュアルブート Linux ユーザは、ここに追加の項目は表示されませんS:\EFI\Microsoft\Boot
をdir
とdir a:h
の両方を使って検査します。Windows 7 Professional, 64ビットの場合、言語テンプレートの束(en_US
など)と以下のファイルが表示されるはずです。bootmgr.efi bootmgfw.efi memtest.efi BCD BCD.Backup.001 BCD.Backup.002
…ただし、
BCD
はおそらく見ないでしょう?しかし、これらのバックアップファイルは魅力的に見えます- 使用するバックアップファイルを決定します。最近の変更点が欠けていても、システムを起動する能力と同じくらい重要ではありません。おそらく、大きなものとかなり小さなものがあるでしょう。小さい方はすでに壊れていて、修復に失敗した時の成果物です。両方とも大きい場合は、古い方を使ってください。どのような場合でも、どこか他の場所にバックアップの追加のバックアップコピーを作成してください
- 使用することにしたバックアップを
BCD
にコピーします - シェルを終了し、クリーンにシャットダウンし、再起動します
- 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