Як я можу відремонтувати завантажувач 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, але нещодавно ми випустили автоматизований інструмент для ремонту EFI для Windows 8: neosmart.net/blog/2013/…
Махмуд Аль-Кудсі

1
Я не очікував, що люди матимуть стільки проблем з вікнами UEFI 8 ... Як системний розділ просто зникає чи корумпований? Він навіть не встановлений у Windows зазвичай, тому пошкодження файлової системи не може бути. І всі поточні ОС без помилок, щоб не вимкнути існуючу установку Windows. Насправді навіть Windows не замикає Linux на UEFI, несподівано сюрпризи.
Milind R

Це не застосовується, якщо ви використовуєте динамічні диски
rainabba

Відповіді:


183

Я витратив багато часу, намагаючись змусити комп'ютер Windows 8 знову завантажитися після клонування на новий SSD і спробувати підсумувати, як я нарешті все працював -

По-перше, завантажтеся з диска для відновлення UEFI Windows 8 (CD / DVD / USB) - я виявив, що автоматизований процес відновлення не знайшов правильний розділ Windows, а також коли мені вдалося додати його до налаштувань BCD, це зробить його надійним завантаженням наприклад, використовуючи BCDEDIT, я отримав його для пошуку та запуску розділу Windows, але він відмовився від холодного завантаження або не "збереже" налаштування після другої перезавантаження або відключення живлення.

Зайдіть у Додаткові параметри та запустіть командний рядок.

Увійдіть, 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.

Вийдіть із інструмента DiskPart, ввівши exitта в командному рядку запустіть наступне:

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Параметр оновлює параметри BIOS , включаючи UEFI прошивки / NVRAM, /l en-gbє локалізація для UK / GB локалі. За умовчанням для локалізації використовується англійська мова США або використовується en-US.

Перезавантажте і схрестіть пальці.

Це дало мені головний біль. Я довго ходив по колах. Немає багато достовірної інформації про виправлення UEFI / Windows 8 під час написання.

[EDIT]

Щоб повторно включити Hyper-V, мені також довелося виконати наступне з командного рядка адміністратора в Windows після перезавантаження:

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

1
Зробив це з Windows 10, завантаживши ISO. спочатку не працював, але після цього запустив ремонт запуску в меню GUI, і це зробило, дякую Gd. :-) Я ціную допомогу :-)
Abbafei

цей рецепт відчував себе найперспективнішим, але я вразив BFSVC Error: Could not open the BCD template store. STatus = [c000000f ]:(
Душан Босняк 'Pailhead'

21

Інші відповіді корисні, але це те, що я повинен був зробити, щоб виправити свою.

У мене був жорсткий диск на 1,5 ТБ із встановленою на ньому Windows 7. Потім я встановив Windows 8 на придбаний вами SSD розміром 150 Гб. Жорсткий диск 1,5 ТБ не вдався, і я чув, як він шумить, мій комп'ютер більше не запускається, кажучи "будь-ласка, вставте системний диск". Я подумав, що завантажувач відсутній, як це, мабуть, було на диску 1,5 ТБ. Виявляється, це було, але проблема тоді полягала в тому, що керівництво, за яким я дотримувався, не відновило б завантажувач або все, що воно називається, оскільки у мене не було розділу EFI на меншому диску в 150 Гб (це, можливо, існувало на невдалому диску), це мав лише 1 розділ, який заповнив весь диск.

Я не хотів втрачати всі свої дані, тому я ввійшов до командного рядка, завантажившись з мого USB-накопичувача Windows 8 (зауваживши, що ви не можете завантажувати 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 Мб. Тепер вам потрібно призначити йому лист. Зробіть це, набравши assign, а потім list volзнову, щоб побачити, яка літера була призначена.

Тепер це зроблено, вам потрібно скопіювати завантажувальні файли в цей новостворений розділ:

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

Примітка. Ви повинні замінити C:літеру диска розділу, який містить Windows, і B:буквою, присвоєною тільки що створеному розділу EFI.

Я також ввів наступні команди:

bootrec /fix

bootrec /fixmbr

Вони обидва повернулися успішними, не маючи уявлення, чи справді вони робили щось, окрім кого це байдуже. Зараз Windows повністю відновлено.


2
bootrec / fix doesnt є дійсною командою для Windows 8, але в іншому випадку інструкції спрацювали і вирішили всі мої проблеми. Дякую!
Ciaran Fisher

i: мій розділ EFI (спочатку на диску), але він порожній. Коли я запускаю, bcdboot c:\windows /s i: /f ALLя отримую "Помилка BFSVC: Не вдалося встановити пристрій програми emement. Status = [c00000bb]" Я боюсь із цією битвою місяцями і з кожною спробою продовжуйте закінчуватися флеш-накопичувачем, який, здається, містить моє завантаження EFI файли, тому що II може завантажуватися з нього, але якщо я його видалюю, я не можу завантажуватися.
rainabba

Дуже дякую! Це врятувало мені день. Я спробував практично все там, і нічого не вийшло. Крок, який мені не вистачало, - це форматування тома EFI. Після форматування тома EFI. Команда завантаження bcd успішно працювала, і у мене Windows 10 резервного копіювання та запуск знову.
Сахіл

+1 за те, що мені сказали вибрати літер диска Windows замість звичайного C:
ptetteh227

9

Гаразд, я встиг скласти тут правильний контур. Це довго, але він досить повний і повинен допомогти вам побачити, що відбувається.

По-перше, це може статися одним із способів:

  1. Ваш BIOS втрачає налаштування.
  2. Немає проблем, усі речі зберігаються в розділі EFI.
  3. ... за винятком параметрів SATA IDE і AHCI, з очевидних причин.
  4. Чи використовували ви SATA-AHCI? Напевно ви зараз використовуєте SATA-IDE.
  5. Ви намагалися завантажитися, перш ніж ви зрозуміли це?
  6. Якщо ви це зробили, це не вдалося. Ви дозволили Windows спробувати це виправити?
  7. Якщо ви зробили це, BLAM, це може дуже зруйнувати Базу даних конфігурації завантаження.
  8. Переконайтеся, що ви використовували правильний параметр SATA, який ви використовували минулого разу.

Ось що ви, мабуть, зробили до цього часу. ЯКЩО НІЧОГО ЦЕ НЕ МАЄ ЗБІРИТИ, Дбайливо оцінюйте, ЯКЩО ЦЕ ФАКТУЄ ВАШУ ПРОБЛЕМУ, і читайте це для ідей, але не дотримуйтесь цього, не думаючи спочатку.

  1. Ви ВІДОМО проігнорували всі лайно щодо виправлення запису Master Boot Record (MBR), таблиці розділів, прапорів розділів та іншого сміття, яке НЕ застосовується до сценарію завантаження EFI. НА ВСІХ . У кращому випадку ви зможете повністю відновити нове, не пов’язане між собою , завантажувальне рішення NON-EFI. Однак це може бути не банальним, оскільки:

  2. Ви зрозуміли, що Windows впевнена, що у неї немає бази даних конфігурації завантаження, але це, на жаль, або абсолютно незрозуміло, або ДУЖЕ визначено, куди йде - ви не можете точно сказати, до якого.

  3. Ви знаєте, що завантажувальний магазин зазвичай (десь) \ Boot \ BCD і що файл прихований; переглянути його за допомогою "dir / a: hs".

  4. Ви трохи ознайомилися з BCDEDIT.EXE і зрозуміли, що це дозволить вам "знущатися над" базою даних конфігурації завантаження у файлі інсценізації за допомогою "/ CREATESTORE" (і, будь ласка, не називайте його "BCD"), ви можете явно використовувати файл інсценізації за допомогою параметра "/ STORE", що ви можете додати запис меню для диспетчера завантаження Windows за допомогою "/ CREATE {bootmgr}", і щоб ви мали змогу імпортувати його за допомогою "/ IMPORT" ...

  5. ... але коли ви намагаєтесь це зробити, ви не можете. Ви дивитесь на параметр / SYSSTORE, який звучить правильно, але ви не можете змусити його використовувати інший магазин, оскільки він "неоднозначний". Ви маєте уявлення про те, що він знає, де знаходиться магазин - або має бути - але ви не можете його знайти.

  6. Ви намагалися використовувати "MOUNTVOL" для монтажу розділу EFI, але він навіть не відображається в списку, тому ви не можете.

Якщо ВСЕ це стосується вас досить близько, ось що МОЖЕ тривати:

  1. Windows може сказати, що ви налаштовані на EFI (ви завантажили DVD за допомогою завантажувача UEFI, у вас є розділ EFI тощо).

  2. Тому він знає, куди шукати файл BCD, однак це або якимось чином неправильне розташування (не ця проблема, але схожа), або BCD видалено.

  3. Мабуть, тому що він знає, де воно повинно бути, це порушує / SYSSTORE-- і насправді, це, мабуть, правильна поведінка, тому що в іншому випадку ви поставите його в неправильне місце.

  4. Наскільки я можу сказати, MOUNTVOL навмисно приховує розділ EFI (або якимось чином не в змозі його помітити). Це запобігає встановленню файлової системи, що запобігає знаходженню правильного підкаталогу, перевірці наявності бази даних тощо.

Отже, ось, нарешті, те, що вам потрібно зробити з цього приводу. Хороша новина полягає в тому, що це, мабуть, набагато простіше, ніж ви зараз сподіваєтесь.

  1. Ви дійсно повинні змонтувати розділ EFI.

Насправді у мене є думка, яка не є строго правильною - я дуже підозрюю, що розділ EFI вже змонтований якоюсь внутрішньою підсистемою, через що BCDEDIT стає химерним - він не бачить базу даних, але він знає, куди він повинен піти. Однак у нього цього немає, але це лист. Отже-- що робити?

Ну ... як далеко заходять коріння DOS? Ви пам’ятаєте команду ASSIGN? Вгадай що.

  1. Почніть DISKPART.

  2. Якщо ви не знайомі з DISKPART, спосіб його роботи в основному є ієрархією наборів; Ви повинні вибрати саме один елемент на одному рівні, щоб перейти до наступного. Отже, "СПИСОК ДИСКІВ", а потім "ВИБРАТИ ДИСК n", де n - це все, що вам підходить.

  3. Використовуйте "СПІЛЬНЕ ПАРТІЯ" та "СПІЛЬНИЙ ОБ'ЄМ" (зверніть увагу на множину), щоб отримати деяку інформацію та визначити свій розділ EFI.

Зазвичай це розділ 100MB FAT32 з позначкою "СИСТЕМА". Майте на увазі, що ваш диск вже повинен використовувати таблицю розділів GPT, тому ви можете побачити досить багато розділів. Деякі з них призначені для екстреного одужання - багато жиру, яке вони роблять для проблем із ІФІ, так? Ну добре.

Зауважте, що на розділі EFI та на кількох інших файлах немає літер диска. Якщо ви так схильні, ви також можете переглядати атрибути розділів GPT, що також може дати вам декілька тангенціально пов'язаних моментів "Ага".

  1. "ВИБІР ПАРТІЯ n", де n - розділ EFI. (Я думаю, ви можете замість цього вибрати гучність, якщо вам потрібно.)

  2. "ЗВ'ЯЗКА". Це воно. Не вказуйте букву диска; просто "ЗВ'ЯЗКА".

  3. "СПИСОК". Тепер ви повинні побачити літеру диска, призначеного для розділу EFI.

  4. DISKPART "ВИХІД".

А тепер ... велике жирове попередження. Ви, ймовірно, перейдете безпосередньо до S: (або що ви отримали від ASSIGN) і помітите розділ / Boot. "АГА!" Ви скажете. "Тут немає файлу BCD!" Спочатку ... запам'ятайте, що файл прихований. По-друге ... копайте ще трохи, і ви помітите, що поки є:

S: \ EFI \ Boot

Є також:

S: \ EFI \ Microsoft \ Boot

Вам потрібно перевірити обидва ці проблеми.

S: \ EFI \ завантаження є для материнської плати , і містить Windows Boot навантажувач (і , можливо , інші речі для інших операційних систем). Це ім'я має тому, що материнська плата не має уявлення, чи буде у вас Windows чи ні, і потрібен фіксований шлях, який має сенс.

  1. Перевірте S: \ EFI \ Boot. У 64-розрядному Windows 7 Professional ви повинні побачити:

bootx64.efi

Якщо ви встановили оболонку EFI (завжди хороша ідея), ви можете додатково побачити "shellx64.efi".

ПРИМІТКА. Користувачі Linux з двома завантаженнями, що використовують "ланцюговий завантажувач + 1", НЕ побачать тут додатковий запис.

  1. Перевірте S: \ EFI \ Microsoft \ Boot, використовуючи і "dir", і "dir a: h". У 64-розрядному Windows 7 Professional ви повинні побачити купу мовних шаблонів ("en_US" тощо) та такі файли:

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

... за винятком того, що ви, мабуть, не бачите BCD, чи не так? Але ті файли резервного копіювання, безумовно, виглядають заманливо.

  1. Визначте, який файл резервної копії ви хочете використовувати. Яких би останніх змін не було, ніде не настільки важливі, як ваша здатність завантажувати систему, тому перейдіть до тієї, яка є найбільш недоторканою. Напевно, ви побачите одну велику і одну досить маленьку. Малий вже пошкоджений, і є артефактом невдалого процесу ремонту - не використовуйте його. Якщо вони обоє великі, використовуйте старіший. У будь-якому випадку складіть ДОДАТКОВІ КОПІЇ З РЕКЛАМИ де-небудь ще.

  2. Скопіюйте резервну копію, яку ви вирішили використати, на "BCD".

  3. Вийдіть із оболонки, вимкніть чисто та перезавантажте.

  4. Скажіть Windows почати НОРМАЛЬНО. У цей момент він повинен початись.

З: Що робити, якщо у вас немає резервного копіювання BCD?

A: Ну, це справді не повинно статися. Це, ймовірно, означає, що ви перебуваєте в неправильному каталозі, підтримуєте EFI, але насправді його не використовували, або якимось чином перебудували весь розділ EFI без усіх необхідних матеріалів Windows (можливо, особливо при використанні декількох версій Windows). У цьому випадку вам потрібно буде скопіювати матеріали EFI з DVD, а потім змінити або відновити Базу даних конфігурації завантаження за допомогою BCDEDIT.

Питання: Чи можете ви надати мені приклад сценарію, коли "BCDEDIT / SYSSTORE" можна використовувати взагалі що-небудь у системі EFI?

A: Поки ні.

У будь-якому випадку, сподіваюся, що це допоможе вирішити деякі проблеми для людей або, принаймні, змушує їх задуматися. Як дуже важливий заключний момент, зауважте, що ви можете монтувати та перевіряти свій розділ EFI під Windows зазвичай, використовуючи вищезазначену техніку DISKPART ASSIGN. Ви повинні зробити це принаймні один раз, щоб отримати повне резервне копіювання свого EFI-розділу, перш ніж ви зіткнетеся з подібними проблемами. Я рекомендую одну резервну копію у підкаталозі на вашому C: накопичувачі та одну на флеш-накопичувачі USB.

Вибачте, що так довгодушно. Мені потрібно в якийсь момент перетворити це на належну статтю, але є так багато людей, настільки розчарованих, що я відчув необхідність документувати свій досвід якнайбільше та швидше, наскільки я міг.

Ура, Метт "Точка розриву" Гек


1
Насправді MOUNTVOL дозволяє вам встановити ESP. Ви використовуєте лист MOUNTVOL: / S.
Yuhong Bao

Отже, коли ви змонтуєте цей розділ EFI і взагалі нічого не знайдете, як діяти далі? Я думав, що bcdboot c:/windows /s i: /f ALLмене або так запустить, але це мене просто "Помилка BFSVC: Не вдалося встановити пристрій програми елементів. Статус = [c00000bb]"
rainabba

Незважаючи на те, що я бачив цю помилку жодного разу, тепер, здається, у мене на цьому диску є папка EFI, де раніше не було. Ще не можна зробити багато іншого без помилок і не може завантажитися, але це принаймні щось.
rainabba

Вирішив спробувати інший маршрут цілком. Я підключив іншу флешку, витер її, дав їй лист диска, а потім повторив, використовуючи її як ціль замість свого EFI-розділу. Коротше кажучи, я не завантажуюся в установку Windows, а відключаю флешку. Мені НЕ вдалося отримати завантаження з мого розділу EFI, незважаючи на те, що в ньому є файли, це перший розділ (EFI, fat32, має файли) на моєму першому диску. Угору це цікавий спосіб уберегти когось із моя система. Я просто виймаю цей «ключ» із своєї системи, і він не завантажиться.
rainabba

5

Windows 8 досі не виходить у остаточному вигляді, тому проблем слід очікувати. Ви знаходитесь у зоні, новій для більшості з нас, де команди, якими ми користувалися, можуть більше не працювати. До команд, перелічених @soandos, я додаю цю, яка повністю відновлює BCD:

bootrec /rebuildbcd

Спробуйте також скористатися розширеним меню завантаження з Windows 8 та повідомте нам, що відбувається.

Якщо нічого не працює, у статті « Ремонт Windows 7, коли вони не завантажуються», є поради щодо використання bcdedit для виправлення помилок завантаження. У будь-якому випадку було б цікаво подивитися, який вихід bcdedit на вашому комп'ютері.

[EDIT]

Ці посилання можуть містити корисні ідеї:

Відновлення завантажувача Windows з DVD
Windows 7 Проблема відновлення завантажувача
Windows 7 Windows 7 раптом не завантажиться - Відновлення завантажувача Windows 7


Я додав декілька посилань, які можуть бути корисними, хоча стосуються Windows 7
harrymc

3

Найпростіший спосіб:

  • Виконайте кроки з публікації вище, щоб знайти файл BCD та перейти до його каталогу.

  • Якщо файл BCD приховано, введіть attrib bcd -s -h -rі натисніть Enter. Це дозволить вам змінити і перезаписати файл.

  • Введіть ren bcd bcd.oldі натисніть Enter. Це перейменовує поточний файл BCD.

  • Введіть Bootrec /RebuildBCDі натисніть, Enterщоб змусити Windows 8 відновити меню завантаження з нуля.

  • Вийдіть і вимкніть командний рядок. Видаліть носії для відновлення Windows та перезавантажте. Ви закінчили!


2

У розділі DISKPART у мене було тільки vol 0 або D (DVD) і vol 1 або C (розділ Windows NTFS). Ніщо не працювало для мене, поки я не зробив том 1 АКТИВНО.

Після виходу з DISKPART я лише набрав:

bootrec /fixboot
bootrec /rebuildbcd

тоді систему належним чином відремонтували. Я не користувався

bootrec /fixmbr

тому що я використовував GAG (gestor de arranque gràfico) на MBR для багатозавантаження.


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 дискpartpart.exe повертає це повідомлення під час позначення активного гучності: "Команда ACTIVE може використовуватися лише на фіксованих дисках MBR."
зачардл

0

Мій сценарій; Я не втратив системний розділ EFI, але комутація накопичувачів та встановлення Windows, схоже, перекрутили запис завантаження UEFI для завантажувача Windows для першого диска; довелося використовувати запис UEFI, який вказує на диск безпосередньо для завантаження. Я думаю, що я це виправив, виправивши / додавши налаштування "пристрій розділ = \ Пристрій \ HarddiskVolumeX" (X = 2 в моєму випадку; мій другий розділ - це системний розділ EFI, зіставлений на Z: з diskpart.exe):

Bcdedit / set {bootmgr} розділ пристрою = Z:

переглянути за допомогою: вбудованого програмного забезпечення bcdedit.exe / enum


-1

Використання: bootrec /fixmbr(оновлення MBR, ймовірно, нічого не зробить у цьому випадку, але також не зашкодить)

bootrec /fixboot переписати завантажувальний сектор системного розділу.

bootrec /scanos сканувати наявні ОС, які є на диску, і додати їх до завантажувача.

Просто запускайте команди в порядку.


Доречні коментарі хочуть коментувати?
soandos

1
bootrec /fixmbrКоманда не відноситься до проблеми автора або ситуації.
Рамхаунд

-4

Мені вдалося виправити це за допомогою наступної команди в консолі відновлення:

 bootcfg C:\Windows /l en-us

2
Цей інструмент призначений лише для boot.ini, який призначений для Windows XP та старих осей.
Елмо

1
Це не стосується завантажувачів EFI.
Махмуд Аль-Кудсі
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.