Установленный / обновленный Windows 8 UEFI после Ubuntu - восстановить GRUB
Итак, у меня был ноутбук с 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 ответа
Использование Boot Repair, как предлагает MariusMatutiae, может работать; однако, эта программа иногда делает больше, чем разумно, поэтому я предпочитаю избегать этого. Есть как минимум три менее радикальных решения:
Решение 1. Используйте прошивку
Многие EFI предоставляют встроенный менеджер загрузки, который позволяет вам настроить порядок загрузки. Ваша запись Ubuntu/GRUB, вероятно, все еще существует, поэтому все, что вам нужно сделать, это настроить порядок загрузки с помощью прошивки. Проблема с этим подходом заключается в том, что утилиты настройки EFI настолько различаются, что невозможно предоставить универсально применимые инструкции, как это сделать. Если ваша прошивка поддерживает эту функцию, то, вероятно, это будет самый простой способ сделать это - как только вы поймете, как добраться до опции!
Решение 2. Используйте bcdedit
в винде
Окна bcdedit
инструмент может добавить не-Windows загрузчик в список загрузки. Хитрость в том, чтобы выяснить, что это за файл. Вы можете сделать это следующим образом:
- Загрузка в Windows
- Откройте окно командной строки администратора. (Также не используйте стороннюю оболочку для этого; я видел сообщения о том, что
bcdedit
не будет работать правильно с некоторыми из них.) - Тип
mountvol S: /S
смонтировать ESP какS:
, (Ты можешь изменитьсяS:
к чему-то еще, если хотите.) - Используя командную строку, проверьте
S:
найти свой загрузчик Ubuntu. Это наверное либоS:\EFI\ubuntu\grubx64.efi
или жеS:\ubuntu\shimx64.efi
, Если вы видите последнее, его можно использовать безопасно, и может потребоваться его использование - shim - это то, как Ubuntu работает с Secure Boot (SB), но на компьютере без SB это будет иметь небольшой эффект. Если Secure Boot неактивен, то shim может быть установлен или не установлен, поэтому вам, возможно, придется обратиться кgrubx64.efi
непосредственно. - Тип
bcdedit /set {bootmgr} path \EFI\ubuntu\shimx64.efi
меняетсяshimx64.efi
вgrubx64.efi
еслиshimx64.efi
нет Измените путь, если это что-то другое, что маловероятно. - При желании введите
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
настроить порядок загрузки:
- Откройте окно терминала.
- Тип
sudo efibootmgr -v
получить список загрузочных программ. Один будет для Linux, и запустит либо shim, либо GRUB. Обратите вниманиеBootOrder
список. Скорее всего, запись Windows теперь первая, а запись Ubuntu - позже в списке. Некоторые записи могут сбивать с толку. Просто игнорируйте их; сосредоточиться на поиске записи Ubuntu и определении ее номера (вBoot####
запись в начале строки). - Тип
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
.)
Есть много разных решений для этого. Один набор решений, безусловно, требует использования живого дистрибутива 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.