2012-08-12 18:06:22 +0000 2012-08-12 18:06:22 +0000
123
123
Advertisement

Jak mogę naprawić Bootloader Windows 8 EFI?

Advertisement

Kilka dni temu zainstalowałem Windows 7 i Windows 8 w trybie EFI na dysku twardym. Dzisiaj bootloader został uszkodzony.

Obecnie mam instalator Windows 8 na pendrive'ie i próbowałem użyć opcji Automatycznej Naprawy aby naprawić bootloader, ale nic nie zrobił. W instalatorze Windows 8 brakuje również opcji Startup Repair.

Jak mogę naprawić/odtworzyć bootloader EFI z Prompt'a Poleceń?

BCDEDIT zwraca następującą wiadomość:

The requested system device cannot be found.
Advertisement

Odpowiedzi (10)

182
182
182
2012-11-12 00:27:03 +0000

Spędziłem wiele czasu na próbach ponownego uruchomienia komputera z systemem Windows 8 po sklonowaniu go na nowy dysk SSD i próbowałem podsumować, jak w końcu to wszystko działa -

Po pierwsze, uruchomienie z dysku odzyskiwania systemu UEFI Windows 8 (CD/DVD/USB) - stwierdziłem, że automatyczny proces odzyskiwania nie znalazł właściwej partycji Windows, ani gdy udało mi się dodać ją do ustawień BCD, czy uczyniłoby ją niezawodną e. g. korzystając z BCDEDIT otrzymałem go do znalezienia i uruchomienia partycji Windows, ale odmówił zimnego startu lub nie “zachowałby” ustawień po drugim restarcie lub wyłączeniu zasilania.

Przejdź do opcji zaawansowanych i uruchom Prompt Command.

Wprowadź diskpart, aby skorzystać z narzędzia DiskPart i upewnić się, że masz wszystkie właściwe partycje oraz zidentyfikować partycję EFI - kluczową rzeczą jest to, że partycja EFI jest sformatowana jako 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

Następnie przypisz literę dysku do partycji EFI:

DISKPART> sel vol 3

Volume 3 is the selected volume.

DISKPART> assign letter=b:

DiskPart successfully assigned the drive letter or mount point.

Wyjdź z narzędzia DiskPart wpisując exit i wykonując polecenie zachęty:

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

bootrec /fixboot

Usuń lub zmień nazwę pliku BCD:

ren BCD BCD.bak

Użyj bcdboot.exe do odtworzenia pliku BCD:

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

Parametr /f ALL aktualizuje ustawienia BIOS-u, w tym firmware UEFI/NVRAM, /l en-gb ma na celu lokalizację dla UK/GB locale. Lokalizacja jest domyślnie ustawiona na US English, lub użyj en-US.

Reboot i skrzyżuj palce.

To dało mi ból głowy. Długo kręciłem się w kółko. Nie ma zbyt wielu wiarygodnych informacji o naprawie UEFI/Windows 8 w momencie pisania.

[EDIT]

Aby ponownie włączyć Hyper-V, musiałem również uruchomić z Administrator Command Prompt w Windows po ponownym uruchomieniu:

bcdedit /set {default} hypervisorlaunchtype Auto
bcdedit /set {default} nx OptIn
22
22
22
2012-12-12 06:01:57 +0000

Pozostałe odpowiedzi są pomocne, ale to jest to, co musiałem zrobić, aby naprawić moje.

Miałem 1,5 TB dysk twardy z zainstalowanym systemem Windows 7. Następnie zainstalowałem system Windows 8 na zakupionym przeze mnie dysku SSD o pojemności 150 GB. Dysk twardy o pojemności 1,5 TB zawiódł i słyszałem jak hałasował, mój komputer nie chciał już wystartować, mówiąc “proszę włożyć dysk systemowy”. Myślałem, że brakuje bootloadera, bo musiał być na dysku 1,5 TB. Okazuje się, że tak było, ale problem polegał na tym, że wytyczne, którymi się kierowałem nie odbudowały bootloadera, czy jakkolwiek to się nazywa, ponieważ nie miałem partycji EFI na mniejszym dysku 150 GB (mogła ona istnieć na uszkodzonym dysku), miałem tylko 1 partycję, która wypełniała cały dysk.

Nie chciałem stracić wszystkich swoich danych, więc wszedłem do Command Prompt uruchamiając z mojego systemu Windows 8 zainstalowany dysk USB (zauważając, że nie można uruchomić wersji UEFI, jeśli to się pojawi, wybierz, aby uruchomić z samego dysku USB bez UEFI pojawiające się przed nim).

Po wejściu do Command Prompt (patrz inne odpowiedzi na instrukcje) musisz zmniejszyć partycję. Aby to zrobić, wprowadź następujące komendy, naciskając Enter po każdej z nich:

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

Komendy te tworzą partycję EFI. Podwójnie zaznacz wszystko wpisując list vol. Powinieneś zobaczyć partycję 200 MB. Musisz teraz przypisać jej literę. Zrób to wpisując assign, a następnie ponownie list vol, aby zobaczyć, jaka litera została przypisana.

Teraz musisz skopiować pliki startowe na nowo utworzoną partycję:

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

Uwaga: musisz zastąpić C: literą dysku partycji, która zawiera system Windows, oraz B: literą przypisaną do utworzonej właśnie partycji EFI.

Wprowadziłem również następujące komendy:

bootrec /fix

bootrec /fixmbr

Oba wróciły z powodzeniem, nie wiem czy naprawdę coś zrobiły, ale kogo to obchodzi. Windows jest teraz w pełni odzyskany.

9
Advertisement
9
9
2012-11-28 03:14:27 +0000

Dobra, miałem czas, żeby przygotować tu odpowiedni zarys. Jest długi, ale jest całkiem kompletny i powinien pomóc ci zobaczyć, co się dzieje.

Po pierwsze, jeden sposób, w jaki to może się zdarzyć:

  1. Twój BIOS traci swoje ustawienia.
  2. Nie ma problemu, wszystkie te rzeczy są przechowywane na partycji EFI.
  3. …z wyjątkiem ustawienia SATA IDE vs AHCI, z oczywistych powodów.
  4. Używaliście SATA-AHCI? Prawdopodobnie używasz teraz SATA-IDE.
  5. Czy próbowałeś uruchomić komputer zanim to odkryłeś?
  6. Jeśli tak, to się nie udało. Czy pozwoliłeś, aby Windows próbował to naprawić?
  7. Jeśli to zrobiłeś, BLAM, mogło to zniszczyć Bazę Danych Konfiguracji Boota.
  8. Upewnij się, że używasz właściwego ustawienia SATA, którego używałeś ostatnio.

Oto co prawdopodobnie zrobiłeś do tej pory. JEŚLI KIEDYŚ z nich NIE ZGADZA SIĘ, UWAŻNIE OCENIAJ JAKIEGOŚ ZASTOSOWANEGO PROBLEMU i PRZYGOTUJ to dla pomysłów, ale nie WYPEŁNIAJ ich bez wcześniejszego zastanowienia.

  1. Masz DOMOWO zignorowałeś wszystkie bzdury o naprawianiu głównego rekordu startowego (MBR), tablicy partycji, flag partycji i innych śmieci, które nie mają zastosowania do scenariusza startowego EFI. AT ALL. W najlepszym przypadku, będziesz w stanie całkowicie przebudować nowe, unrelated, NON-EFI boot solution. Może to jednak nie być trywialne, ponieważ:
  2. Odkryłeś, że Windows jest pewny, że nie posiada Bazy Danych Konfiguracji Boota, ale niestety jest albo całkowicie bezsensowny, albo BARDZO pewny dokąd zmierza - nie do końca możesz powiedzieć który.
  3. Jesteś świadomy, że sklepem startowym jest normalnie (somewhere)\Boot\BCD i że plik jest Ukryty; zobacz go używając dir /a:hs.
  4. Zapoznałeś się nieco z BCDedit.exe i doszedłeś do wniosku, że pozwoli Ci to “wykpić” Bazę Danych Konfiguracji Uruchomienia w pliku inscenizacyjnym za pomocą /CreateStore (i proszę nie nazywać go “BCD”), że możesz wyraźnie użyć pliku inscenizacyjnego z opcją /Store, że możesz dodać pozycję menu dla programu Windows Boot Manager za pomocą /Create {bootmgr}, i że POWINNYś mieć możliwość zaimportowania go za pomocą /Import
  5. …ale kiedy próbujesz to zrobić, nie możesz. Patrzysz na opcję /SysStore, która brzmi dobrze, ale nie możesz jej użyć do innego sklepu, ponieważ jest “niejednoznaczna”. Masz przeczucie, że wie, gdzie jest sklep - lub powinien być - ale nie możesz go znaleźć.
  6. Próbowałeś użyć MountVol do zamontowania partycji EFI, ale nawet nie pokazuje się na liście, więc nie możesz.

Jeśli WSZYSTKO to dotyczy dość blisko Ciebie, oto co MOŻE się dziać:

  1. Windows może powiedzieć, że jesteś ustawiony na EFI (uruchomiłeś DVD poprzez UEFI boot, masz partycję EFI, itd.
  2. Dlatego też wie, gdzie szukać pliku BCD - jednak albo ma on jakoś złą lokalizację (nie ten problem, ale podobny), albo BCD został usunięty.
  3. Najwyraźniej, ponieważ wie, gdzie powinien być, to łamie /SysStore - i właściwie, to prawdopodobnie jest prawidłowe zachowanie, ponieważ w przeciwnym razie umieściłbyś go w złym miejscu.
  4. Tak blisko jak mogę powiedzieć, MountVol celowo ukrywa partycję EFI (lub jest w jakiś sposób niezdolny do zauważenia jej). Zapobiega to montowaniu systemu plików, co uniemożliwia odnalezienie właściwego podkatalogu, sprawdzenie, czy baza danych istnieje itd.

Więc w końcu to jest to, co musisz z tym zrobić. Dobrą wiadomością jest to, że jest to prawdopodobnie dużo prostsze niż się spodziewasz.

  1. Naprawdę musisz zamontować partycję EFI.

Właściwie mam przeczucie, że to nie jest ściśle poprawne– Zdecydowanie podejrzewam, że partycja EFI jest already zamontowana przez jakiś wewnętrzny podsystem, dlatego też BCDedit dostaje korbkę– nie widzi bazy danych, ale wie gdzie powinna się udać. Czegokolwiek jednak nie ma, jest to litera dysku. Więc - co robić?

Cóż… jak daleko wstecz sięgają twoje korzenie DOS-u? Pamiętasz komendę Assign? Zgadnij co. 2. Start DiskPart. 3. Jeśli nie znasz DiskPart, sposób jego działania jest w zasadzie hierarchią zbiorów; musisz wybrać dokładnie jeden element na jednym poziomie, aby przejść do następnego. Tak więc, List Disk, a następnie Select Disk n gdzie n jest tym, co jest dla Ciebie odpowiednie. 4. Użyj List Partition i List Volume (uwaga niepluralna), aby uzyskać wgląd i zidentyfikować swoją partycję EFI.

Zazwyczaj jest to partycja 100MB FAT32 oznaczona System. Pamiętaj, że Twój dysk powinien już teraz korzystać z tablicy partycji GPT, więc możesz zobaczyć całkiem sporo partycji. Niektóre z nich są przeznaczone do awaryjnego odzyskiwania - wiele dobrego robią dla problemów z EFI, co? Oh dobrze.

Zauważ, że partycja EFI i kilka innych nie ma liter dysku. Jeśli jesteś tak skłonny, możesz również wyświetlić atrybuty partycji GPT, które mogą dać Ci kilka stycznie związanych z “Aha” momentów, jak również. 5. Select Partition n gdzie n jest partycją EFI. (Spodziewam się, że możesz wybrać wolumin zamiast tego, jeśli trzeba.) 6. Assign. To jest to. Nie podawaj litery dysku, tylko Assign. 7. List Volume. Powinieneś teraz zobaczyć literę dysku przypisaną do partycji EFI. 8. Exit DiskPart.

A teraz… duże, grube ostrzeżenie. Prawdopodobnie będziesz Przejdź bezpośrednio do S: (lub cokolwiek dostałeś z Assign) i zauważysz partycję Boot. “AHA!” Powiesz. “Nie ma tu pliku BCD!” Po pierwsze… pamiętaj, że plik jest ukryty. Po drugie… wykopać trochę więcej, i zauważysz, że podczas gdy jest S:\EFI\Boot, a także S:\EFI\Microsoft\Boot

Musisz sprawdzić oba te problemy.S:\EFI\Boot jest dla motherboard, i zawiera Windows Boot LOADER (i ewentualnie inne rzeczy dla innych systemów operacyjnych). Ma to nazwę, ponieważ płyta główna nie ma pojęcia czy będziesz miał Windows czy nie i potrzebuje stałej ścieżki, która ma sens. 9. Inspekcja S:\EFI\Boot. Dla Windows 7 Professional, 64-bitowy, powinieneś zobaczyć: bootx64.efi Jeśli masz zainstalowaną powłokę EFI (zawsze dobry pomysł), możesz dodatkowo zobaczyć shellx64.efi.

UWAGA: Użytkownicy Linuksa używający chainloader+1 NIE zobaczą tu dodatkowego wpisu. 10. Sprawdź S:\EFI\Microsoft\Boot używając both dir i dir a:h. Dla Windows 7 Professional, 64-bitowego, powinieneś zobaczyć kilka szablonów językowych (en_US, etc.) oraz następujące pliki: bootmgr.efi bootmgfw.efi memtest.efi BCD BCD.Backup.001 BCD.Backup.002 …z tym że prawdopodobnie nie widzisz BCD, prawda? Ale te pliki kopii zapasowych na pewno wyglądają kusząco. 11. Określ, jakiego pliku kopii zapasowej chcesz użyć. Bez względu na to, jakich zmian ostatnio brakuje, nie są one tak ważne jak możliwość uruchomienia systemu, więc wybierz ten, który jest najbardziej nienaruszony. Prawdopodobnie zobaczysz jeden duży i jeden dość mały plik. Ten mały jest już uszkodzony i jest artefaktem nieudanego procesu naprawy - nie używaj go. Jeśli oba są duże, użyj starszego. W KAŻDYM PRZYPADKU, zrób DODATKOWE KOPIECZKI TŁUMACZENIA O BACKUPS gdzieś indziej. 12. Skopiuj kopię zapasową, której postanowiłeś użyć do BCD. 13. Wyjdź z powłoki, zamknij się czysto i zrestartuj. 14. Powiedz Windows, aby uruchomił się NORMALLY. W tym momencie powinien się uruchomić.

P: Co jeśli nie masz kopii zapasowej BCD?

A: Cóż, to really nie powinno się zdarzyć. Prawdopodobnie oznacza to, że albo jesteś w złym katalogu, wspierasz EFI, ale tak naprawdę go nie używałeś, albo w jakiś sposób przebudowałeś całą partycję EFI bez wszystkich wymaganych materiałów Windows (możliwe, zwłaszcza gdy używasz wielu wersji Windows). W takim przypadku należy skopiować materiały EFI z płyty DVD, a następnie zmodyfikować lub przebudować Bazę Danych Konfiguracji Boota za pomocą BCDedit.

P: Czy możesz mi podać przykład scenariusza, w którym BCDedit /SysStore może być użyte do zrobienia czegokolwiek w systemie EFI?

O: Jak dotąd, nie.

W każdym razie, mam nadzieję, że pomoże to rozwiązać pewne problemy dla ludzi, lub przynajmniej zmusi ich do myślenia. Jako bardzo ważny punkt końcowy, proszę zauważyć, że możesz zamontować i sprawdzić swoją partycję EFI _ pod Windows normalnie_ używając powyższej techniki DiskPart: Assign. Powinieneś zrobić to przynajmniej raz, aby uzyskać kompletną kopię zapasową swojej partycji EFI, _Zanim napotkasz tego typu problemy. Polecam jedną kopię zapasową do podkatalogu na twoim dysku C: i jedną na USB flash.

Przepraszam, że to tak długo trwa. Muszę zmienić to w odpowiedni artykuł w pewnym momencie, ale jest tak wiele osób, które są tak sfrustrowane, że poczułem potrzebę udokumentowania mojego doświadczenia tak szybko i całkowicie, jak to możliwe.

5
5
5
2012-08-25 20:45:34 +0000

System Windows 8 nie jest jeszcze w ostatecznej formie, więc należy się spodziewać problemów. Jesteś w obszarze nowym dla większości z nas, gdzie komendy, których używaliśmy mogą już nie działać. Do komend wymienionych przez @soandos dodaję tę, która całkowicie przebudowuje BCD :

bootrec /rebuildbcd

Spróbuj także użyć menu Advanced boot z Windows 8 i daj nam znać, co się stanie.

Jeśli nic nie działa, artykuł Repairing Windows 7 when they fail to boot ma kilka rad dotyczących użycia bcdedit do poprawienia błędów bootowania. W każdym razie byłoby interesujące zobaczyć, jaki jest wynik bcdedit na twoim komputerze.

[EDIT]

Te linki mogą zawierać kilka pomocnych pomysłów : Odzyskiwanie Bootloadera Windows z płyty DVD Windows 7 Boot Manager Recovery Problem Windows 7 Suddenly Won’t Bootloader - Naprawa Bootloadera Windows 7

3
Advertisement
3
3
2012-11-29 01:17:10 +0000

Najprostszy sposób:

  • Wykonaj kroki z powyższego postu, aby zlokalizować plik BCD i przejść do jego katalogu.

  • Jeśli plik BCD jest ukryty, wpisz attrib bcd -s -h -r i naciśnij Enter. Pozwoli to na zmodyfikowanie i nadpisanie pliku.

  • Wpisz ren bcd bcd.old i wciśnij Enter. Zmiana nazwy bieżącego pliku BCD.

  • Wpisz Bootrec /RebuildBCD i wciśnij Enter, aby zmusić system Windows 8 do przebudowania menu startowego od nowa.

  • Wyjdź z polecenia i zamknij. Usuń Windows Recovery Media i uruchom ponownie. Skończyłeś!

2
2
2
2013-02-06 11:50:32 +0000

Pod DYSKRETEM I miałem tylko wolumin 0 lub D (DVD) i wolumin 1 lub C (partycja Windows NTFS). Nic nie działało dla mnie dopóki nie zrobiłem tomu 1 ACTIVE.

Po wyjściu z DISKPARTU wpisałem tylko:

bootrec /fixboot
bootrec /rebuildbcd

wtedy system był poprawnie naprawiony. Nie używałam

bootrec /fixmbr

ponieważ używałam GAG (gestor de arranque gràfico) na MBR dla multiboota.

1
Advertisement
1
1
2012-12-05 14:29:49 +0000

Po 6 godzinach zmagań, udało mi się naprawić problem z uruchomieniem systemu Windows 8.

Dzisiaj, po zwykłym restarcie, dostałem wiadomość MBR not found lub podobną, nie pamiętam już. Próbowałem komend bootrec, automatycznej naprawy Windows (nie udało się znaleźć żadnego zainstalowanego Windows), milion innych sposobów i nic.

Problem polegał na tym, że kiedy wykonałem bootrec /rebuildbcd to poszło normalnie, a następnie, gdy musiałem wpisać yes, jeśli chcę zapisać konfigurację, dostałem wiadomość, the file is not accessible because it is used by a another process.

Po wielogodzinnym załamywaniu się umysłu, w końcu udało mi się to rozwiązać.

W tej kolejności…

  • Najpierw uruchomiłem macierzą partycji easeup, a następnie FORMATOWANO zarezerwowałem systemowy wolumen, który później przypisałem jako aktywny (w którym był mój folder startowy). Po ponownym uruchomieniu systemu pojawił się błąd NTLDR missing.

  • Następnie uruchomiłem w systemie Windows Recovery, otworzyłem polecenie zachęty i wpisałem bootrec /fixmbr, /fixboot, /scanos, /rebuildbcd(które teraz wykonało się poprawnie :] )

  • Wychodziłem z cmd i kliknąłem na automatyczną naprawę.

  • Następnie mogłem wybrać Windows 8. Po ponownym uruchomieniu systemu widziałem logo Windows 8.

0
0
0
2015-12-19 14:57:30 +0000

Mój scenariusz; nie straciłem partycji systemowej EFI, ale przełączanie dysków i instalowanie systemu Windows najwyraźniej pokręciło wpis UEFI menedżera uruchamiania systemu Windows dla pierwszego dysku; musiałem użyć wpisu UEFI, który wskazuje na dysk bezpośrednio do uruchomienia. Myślę, że naprawiłem go poprzez poprawienie/dodanie ustawienia “device partition=\Device\HarddiskVolumeX” (X=2 w moim przypadku; moja druga partycja to partycja systemowa EFI, zmapowana na Z: z diskpart.exe):

Bcdedit /set {bootmgr} device partition=Z:

widok z: bcdedit.exe /enum firmware

-1
Advertisement
-1
-1
2012-08-13 00:06:38 +0000

Use:bootrec /fixmbr (updates the MBR, probably won’t do anything in this case, but won’t hurt either)

bootrec /fixboot to re-write the boot sector of the system partition.

bootrec /scanos to scan for the OSes that are on the drive and add them to bootloader.

Just run the commands in order.

-4
-4
-4
2012-08-25 20:41:13 +0000

Udało mi się to naprawić za pomocą następującej komendy w konsoli odzyskiwania:

bootcfg C:\Windows /l en-us
Advertisement
Advertisement