Предустановленная двойная загрузка Windows 8 и Linux UEFI на ноутбуке

10

Я пытаюсь настроить Windows 8 и Arch Linux на новый Sony Vaio E14 с предустановленной Windows 8.

Так далеко:

  • установил W8 на мой новый SSD (переключен на оригинальный HDD) с помощью Recovery Media
  • сжал раздел W8, удалил раздел восстановления, отключил своп
  • подтвердил загрузку W8 просто отлично

На Арке:

  • отключена безопасная загрузка в биосе
  • подтвердил загрузку W8 просто отлично
  • Загрузил Arch с CD и установил все на 4-й и 5-й раздел
  • настроить rEFInd для загрузчика ядра EFIstub

После этого стало еще хуже. Я не смог загрузить ничего, кроме Windows 8 (хотя я был рад, что они, по крайней мере, продолжали работать просто отлично).

Пытался:

  • создание EFI \ refind \ и помещение туда .efi (согласно руководству по Arch
  • перезапись EFI \ boot \ bootx64.efi
  • перезапись EFI \ Microsoft \ Boot \ bootmgr.efi
  • перезаписывать EFI \ Microsoft \ Boot \ bootmgfw.efi --- YAY rEFInd!

Все идет нормально. Я сохранил весь каталог W8 Boot \ в EFI \ windows8 и настроил для него пункт меню загрузки; и он загрузился просто отлично.

Но при перезагрузке все было не так - «Операционная система не найдена» вместо любого загрузчика (refind или w8).

Загрузился обратно в Arch, используя live CD, чтобы узнать, что раздел EFI имеет ошибочную таблицу FAT. fsck.vfat исправил это, и я обнаружил, что EFI \ Microsoft \ Boot вернулся в исходное состояние (все файлы refind удалены и заменены на загрузчики W8). Я переписал их снова и вернулся к REFInd, который отображается правильно, и Arch полностью загружается.

После этого я попытался переименовать только EFI \ Microsoft \ Boot \ bootmgfw.efi в bootmgfw.001.efi (затем скопировать .efi из refind в bootmgfw.efi и сохранить КАЖДЫЙ ДРУГОЙ файл), но с тем же результатом. Попытка пометить раздел GPT EFI только для чтения, тот же результат.

Теперь мне немного не повезло. Arch отлично загружается, как и W8, но в процессе уничтожает раздел EFI.

Спасибо за любые идеи, Googling завел меня так далеко, и я не могу найти ничего лучше.

PS - windows 8 МОЖЕТ уничтожить раздел при выключении - когда я заказываю выключение в W8, это занимает необычно много времени (около полминуты вместо ~ 5 секунд). Так что теоретически я мог бы решить эту проблему путем жесткого сброса ноутбука вместо обычного выключения, но это просто нехорошо.

itchy355
источник
Боюсь, я не могу здесь помочь, у меня нет машины UEFI для тестирования. Хотя это может быть не самый желательный способ сделать это, вы можете попробовать добавить запись Linux в загрузчик Windows и загрузиться там, но я не пробовал это на машине с UEFI. См. Здесь для процедуры: superuser.com/a/499652/18050 Кроме того, я всегда использую Archboot для установки Arch, попробуйте, если вы используете официальные образы, потому что при установке учитываются системы UEFI: bbs.archlinux. org / viewtopic.php? id = 150833
Xandy
Это звучит как конфликт между Arch Linux и тем, что делает Windows 8. Вы пробовали другой дистрибутив, чтобы управлять им, но не Arch Linux, в котором есть проблема?
Ramhound
Спасибо за предложение easyBCD, я обязательно попробую. Мне все равно, какой менеджер загрузки используется, поэтому, если Windows сможет это сделать, я буду более чем счастлив. Завтра опубликую результаты, когда снова будет свободное время, чтобы что-то испортить :) @Ramhound, в данный момент было бы немного больно, и я не думаю, что это связано с Arch - rEFInd - это отдельный проект, и я установил все это вручную (следуя за человеком).
itchy355

Ответы:

5

Возможно, стоит выполнить холодное отключение (нажать кнопку питания) в Windows, чтобы проверить, можно ли выполнить загрузку впоследствии, просто в качестве теста. Очевидно, что вы не захотите делать это на регулярной основе, но может быть полезно подтвердить, что Windows перезаписывает ваши пересмотренные данные ESP. Если это действительно повреждает файловую систему при завершении работы Windows, то это звучит как ошибка Windows, о которой следует сообщить в Microsoft. Если это просто замена bootmgfw.efiфайла, то это технически в рамках Microsoft, так что на самом деле это не ошибка.

Если говорить более широко, пытались ли вы использовать efibootmgrпрограмму linux для регистрации rEFInd в EFI под его собственным именем (скажем, EFI/refindв ESP)? Это описано в документации rEFInd, в разделе по ручной установке Linux. Кроме того, вы можете установить с помощью install.shсценария. Любой метод потребует загрузки в режиме EFI для успешного выполнения, но вы должны быть в состоянии сделать это с помощью rEFInd CD или выполнить загрузку с аварийного диска в режиме EFI.

Если efibootmgrне работает, попробуйте использовать bcfgв программе оболочки EFI, как описано на этой вики-странице Arch.

Если эти процедуры не работают, попробуйте использовать efibootmgrили bcfgдля удаления записи для bootmgfw.efiиз NVRAM , а затем установить rEFInd , как EFI/BOOT/bootx64.efi. Теоретически, компьютер может затем запустить rEFInd, который должен нормально работать и включать загрузку любой ОС. Есть два возможных подводных камней, хотя: Встроенное программное обеспечение может благоприятствовать EFI/Microsoft/boot/bootmgfw.efiболее EFI/BOOT/bootx64.efi; и Windows может проверить свои параметры загрузки и добавить собственный загрузчик обратно в NVRAM при загрузке. Тем не менее, этот метод стоит попробовать.

Спецификация EFI требует, чтобы компьютеры соблюдали свои настройки NVRAM (которые управляются efibootmgrв Linux, bcfgв оболочке EFI или аналогичных программах), поэтому, если эти утилиты не работают, ваша прошивка не работает, и вы можете рассмотреть возможность возврата компьютер для другой модели. (Обязательно сообщите Sony, почему вы вернули компьютер, если вы это сделаете, хотя!) Этот тип проблемы на самом деле довольно распространен; Например, у меня есть плата Gigabyte с «гибридным EFI», которая постоянно забывает свои настройки NVRAM. По крайней мере, с этой платой, однако, можно обойти проблему, назвав мой загрузочный менеджер / загрузчик по выбору EFI/BOOT/bootx64.efi.

Если вы не можете заставить его работать и не хотите или не можете заменить компьютер, у меня есть два других предложения для обходных путей:

  • Вы можете держать загрузочный CD или USB-флеш-накопитель под рукой с rEFInd и использовать его, когда хотите загрузить Linux. Для этого может потребоваться использование функциональной клавиши, чтобы компьютер загружался со съемного носителя, а не с жесткого диска при загрузке.
  • Вы можете стереть разделы с диска, переразбить с помощью MBR и переустановить обе ОС в режиме BIOS, а не в режиме EFI. Это удалит любую нестабильность EFI с картинки и позволит вам использовать GRUB в режиме BIOS в качестве загрузчика. Для этого, вероятно, потребуется розничная версия установщика Windows 8; по крайней мере для Windows 7, OEM-копии были негибкими в отношении режима установки (BIOS против EFI). В качестве альтернативы, можно выполнить преобразование из загрузки в режиме EFI в загрузку в режиме BIOS без переустановки. Возможен противоположный вариант (я собирался опубликовать ссылку на сайт, на котором он описан, но этот сайт не позволит мне опубликовать более двух ссылок; извините), и я, кажется, вспоминаю, как наткнулся на описание выполнения EFI- преобразование в BIOS где-нибудь, но у меня нет удобного URL. Поиск Google может что-то поднять.

Я наткнулся на эту страницу после публикации своего первого ответа, и у него есть еще одна возможная причина, по крайней мере, для части вашей проблемы: Очевидно, Windows 8 использует метод завершения работы, который больше похож на операцию приостановки на диск. В результате подключенные разделы могут быть повреждены, если вы выключите Windows, а затем загрузите Linux. Хотя ESP, обычно не устанавливается в Windows 7, AFAIK, это может быть , что Windows 8 делает вещи по- другому, или , может быть, ESP будет установлен в Windows 7 и просто , кажется, скрыт. В любом случае вы можете отключить эту функцию Windows 8, введя следующую команду в окне командной строки администратора:

powercfg /h off
Род Смит
источник
Действительно, Windows 8 ничего не ломается при холодном выключении. Мне не хочется публиковать сообщение об ошибке, потому что в конце концов я
испортил
Я пытался возиться с efibootmgr; это показало, что есть необычно большое количество загрузочных менеджеров (больше, чем 3, которые я ожидал), что привело меня к лучшему взгляду на мой диск; и я обнаружил, что на самом деле у меня есть два раздела EFI: -x Только второй (/ dev / sda2) был показан как EFI system partitionGDisk, так что я подумал, что он правильный. Другой - просто раздел FAT (sda1) с тем же размером и стандартной файловой структурой EFI.
itchy355
Если я изменяю порядок загрузки, чтобы сначала загрузить rEFInd, затем что-то под названием «sony original» и затем другие, он перезаписывает себя обратно на значение по умолчанию (windows, sony original, others (refind)) PS; что все сказанное, учитывая, что "окна" мой перезаписанbootmgfw.efi
itchy355
1
В то же время, я попробовал powercfg /h offв w8, и это исправило W8, ломая раздел EFI .. это святой Грааль, который я искал, кажется :) СПАСИБО, СПАСИБО, СПАСИБО!
itchy355
Я рад слышать, что это powercfg /h offрешило твою главную проблему. Возможно, вам будет интересно услышать, что я натолкнулся на информацию о том, что некоторые реализации UEFI, по-видимому, закодированы для перемещения загрузчика под названием «Диспетчер загрузки Windows» в начало их списков. Таким образом, переименование ваших загрузчиков с помощью efibootmgrможет позволить вам установить rEFInd (или что угодно) под более разумным именем файла.
Род Смит