3

Итак, у меня был ноутбук с OEM-копией Windows 8, явно установленной в конфигурации UEFI с разделением GPT. Некоторое время назад я установил Ubuntu 13.xx(последний) вместе с ним, и GRUB, к счастью, обнаружил Windows, и до сих пор все было хорошо.

Итак, вчера я обновился до Windows 8.1, и он, видимо, переписал загрузчик, и вполне естественно, что я не могу загрузиться в Ubuntu. Это берет меня прямо к Windows.

Как мне отремонтировать GRUB? Большинство справочных страниц / статей рассказывают о разделении MBR, что совершенно отличается от UEFI+GPT AFAIK. А статьи, в которых говорится об UEFI, касаются исправления не загружаемой установки Windows после установки Linux, что не в моем случае.

Какой-нибудь проверенный метод, чтобы вернуть Ubuntu снова?

PS: прежде чем рекомендовать его, нет; EasyBCD или аналогичные инструменты не могут добавить linux в загрузчик Windows, если Windows установлена с UEFI.

2 ответа2

9

Использование Boot Repair, как предлагает MariusMatutiae, может работать; однако, эта программа иногда делает больше, чем разумно, поэтому я предпочитаю избегать этого. Есть как минимум три менее радикальных решения:

Решение 1. Используйте прошивку

Многие EFI предоставляют встроенный менеджер загрузки, который позволяет вам настроить порядок загрузки. Ваша запись Ubuntu/GRUB, вероятно, все еще существует, поэтому все, что вам нужно сделать, это настроить порядок загрузки с помощью прошивки. Проблема с этим подходом состоит в том, что утилиты настройки EFI настолько различны, что невозможно предоставить универсально применимые инструкции, как это сделать. Если ваша прошивка поддерживает эту функцию, вероятно, это будет самый простой способ сделать это - как только вы поймете, как добраться до опции!

Решение 2. Используйте bcdedit в Windows

Средство bcdedit для Windows может добавить не-Windows загрузчик в список загрузки. Хитрость в том, чтобы выяснить, что это за файл. Вы можете сделать это следующим образом:

  1. Загрузка в Windows
  2. Откройте окно командной строки администратора . (Также не используйте стороннюю оболочку для этого; я видел сообщения, что bcdedit не будет корректно работать с некоторыми из них.)
  3. Введите mountvol S: /S чтобы установить ESP как S: (Вы можете изменить S: на что-то другое, если хотите.)
  4. Используя командную строку, проверьте S: чтобы найти загрузчик Ubuntu. Вероятно, это либо S:\EFI\ubuntu\grubx64.efi либо S:\ubuntu\shimx64.efi . Если вы видите последнее, его можно использовать безопасно, и может потребоваться его использование - именно так Ubuntu работает с Secure Boot (SB), но на компьютере без SB это будет иметь небольшой эффект. Если Secure Boot неактивен, то shim может быть установлен или не установлен, поэтому вам может потребоваться обратиться непосредственно к grubx64.efi .
  5. Введите bcdedit /set {bootmgr} path \EFI\ubuntu\shimx64.efi , изменив shimx64.efi на grubx64.efi если shimx64.efi отсутствует. Измените путь, если это что-то другое, что маловероятно.
  6. При желании введите bcdedit /set {bootmgr} description "Ubuntu" чтобы задать имя, которое будет отображаться в собственном списке менеджера загрузки EFI. Измените Ubuntu на то, что вам нравится.

Если вы уже знаете имя файла для вашего загрузчика, вы можете пропустить шаги # 3 и # 4. (ESP не нужно монтировать, чтобы использовать bcdedit таким образом.)

Преимущество этого метода заключается в том, что он не позволяет Windows портить порядок загрузки - иногда Windows пытается изменить порядок загрузки без разрешения. Я не знаю, предотвратит ли это повторение этой проблемы, если / когда вы обновитесь до того, что появилось после Windows 8.1, однако.

Решение 3. Загрузите Linux и используйте efibootmgr

Вероятно, вы можете загрузиться в Linux, используя собственный менеджер загрузки прошивки, к которому вы можете получить доступ на большинстве компьютеров, нажимая клавишу Esc или функциональную клавишу во время загрузки, хотя эта клавиша варьируется от одного компьютера к другому. Кроме того, вы можете использовать rEFInd на флэш-накопителе USB или CD-R в качестве менеджера загрузки, если у вас недостаточно данных. Вы также можете загрузиться с живого компакт-диска Linux или аварийного диска, но убедитесь, что вы загружаетесь в режиме EFI - загрузка в режиме BIOS будет недостаточной. В Linux вы можете использовать efibootmgr для настройки порядка загрузки:

  1. Откройте окно терминала.
  2. Введите sudo efibootmgr -v чтобы получить список загрузочных программ. Один будет для Linux, и запустит либо shim, либо GRUB. Обратите внимание на список BootOrder . Скорее всего, запись Windows теперь первая, а запись Ubuntu - позже в списке. Некоторые записи могут сбивать с толку. Просто игнорируйте их; сосредоточиться на поиске записи Ubuntu и определении ее номера (в записи Boot#### в начале строки).
  3. Введите sudo efibootmgr -o {list} , изменив {list} на разделенный запятыми список номеров загрузки, как в sudo efibootmgr -o 5,0 если Boot0005 для Ubuntu и Boot0000 для Windows. Вы можете добавить больше записей, если хотите, но первая из них самая важная, поскольку именно она будет загружаться первой.

Если запись Ubuntu не существует, вы можете создать ее с помощью efibootmgr , например:

efibootmgr -c -d /dev/sda -p 1 -l '\EFI\ubuntu\shimx64.efi' -L "Ubuntu"

Измените -d /dev/sda чтобы указать ваше целое дисковое устройство, и -c 1 чтобы указать номер раздела. (На самом деле /dev/sda и 1 являются значениями по умолчанию, поэтому они вам нужны, только если ваш ESP не /dev/sda1 .)

0

Есть много разных решений для этого. Один набор решений, безусловно, требует использования живого дистрибутива Linux, как, например, Ubuntu. Запишите образ Ubuntu на USB-накопитель, загрузитесь с него, выбрав Попробовать Ubuntu без установки ..., откройте терминал, затем установите и используйте Boot-Repair, следуя инструкциям на веб-странице, которая принадлежит Официальной документации Ubuntu. Этого обычно достаточно, чтобы решить большинство проблем с загрузкой.

В качестве альтернативы, вместо загрузки Boot-Repair, вы можете смонтировать жесткий диск с терминала, например, выполнив команду

   sudo mount /dev/sdaX /mnt

где X - номер раздела, на котором вы разместили Ubuntu /. Если вы не уверены, перед командой выше,

   sudo fdisk -l

скажет вам, какой раздел какой. Затем выполните эти команды:

   cd /mnt
   sudo chroot .
   sudo update-grub

и, когда это будет сделано, Ctrl+D.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .