Как восстановить grub? (Как вернуть Ubuntu после установки Windows?)

Вопрос или проблема

Я установил Windows 7, которая перезаписала загрузочный файл Ubuntu. Теперь при запуске компьютера он сразу загружается в Windows, не давая мне возможности загрузиться в Ubuntu.

Как я могу вернуть Ubuntu?

Когда вы устанавливаете Windows, она предполагает, что является единственной операционной системой (ОС) на машине, или, по крайней мере, не учитывает Linux. Поэтому она заменяет GRUB на свой собственный загрузчик. Вам нужно заменить загрузчик Windows на GRUB. Я видел различные инструкции по замене GRUB с помощью команд GRUB или подобного, но для меня самый простой способ – это просто chroot в вашу установку и выполнение update-grub. chroot великолепен, потому что позволяет работать с вашей фактической установкой, вместо того, чтобы пытаться перенаправлять вещи сюда и туда. Это действительно чисто.

Вот как:

  1. Загрузитесь с live CD или live USB в режиме «Попробовать Ubuntu».

  2. Определите номер раздела вашего основного раздела. sudo fdisk -l, sudo blkid или GParted (который должен быть уже установлен по умолчанию в живом сеансе) могут помочь вам здесь. Я предполагаю, что это /dev/sda2, но убедитесь, что вы используете правильный номер раздела для вашей системы!

    Если ваш основной раздел находится в LVM, устройство, скорее всего, будет находиться в /dev/mapper/, скорее всего, /dev/mapper/{volume}--{os}-root, где {volume} – это имя LVM-объема, а {os} – это операционная система. Выполните ls /dev/mapper для получения точного имени.

  3. Смонтируйте ваш раздел:

     sudo mount /dev/sda2 /mnt  #Замените sda2 на раздел из шага 2
    

    Если у вас есть отдельные разделы /boot, /var или /usr, повторите шаги 2 и 3, чтобы смонтировать эти разделы на /mnt/boot, /mnt/var и /mnt/usr соответственно. Например,

     sudo mount /dev/sdXW /mnt/boot
     sudo mount /dev/sdXY /mnt/var
     sudo mount /dev/sdXZ /mnt/usr
    

    заменив sdXW, sdXY и sdXZ на соответствующие номера разделов.

  4. Смонтируйте некоторые другие необходимые файлы:

     for i in /sys /proc /run /dev; do sudo mount --rbind "$i" "/mnt$i"; done
    
  5. Если Ubuntu установлена в режиме EFI (посмотрите этот ответ, если вы не уверены), используйте sudo fdisk -l | grep -i efi или GParted, чтобы найти ваш EFI-раздел. У него будет метка EFI. Смонтируйте этот раздел, заменив sdXY на фактический номер раздела вашей системы:

     sudo mount /dev/sdXY /mnt/boot/efi
    
  6. chroot в вашу установку Ubuntu:

     sudo chroot /mnt
    
  7. На этом этапе вы находитесь в своей установке, а не в живом сеансе, и действуете как root. Обновите grub:

     update-grub
    

    Если вы получите ошибки, или если переход к шагу 7 не решил вашу проблему, переходите к шагу 8. (В противном случае это необязательно.)

  8. В зависимости от вашей ситуации вам, возможно, придется переустановить grub:

     grub-install /dev/sda
     update-grub # Для нахождения и добавления Windows в меню grub.
    
  9. Если Ubuntu установлена в режиме EFI, и UUID EFI-раздела изменился, вам может потребоваться обновить его в /etc/fstab. Сравните:

     blkid | grep -i efi
     grep -i efi /etc/fstab
    

    Если текущий UUID EFI-раздела (из blkid) отличается от того, что в /etc/fstab, обновите /etc/fstab с текущим UUID.

  10. Если все прошло без ошибок, то вы готовы:

    exit
    sudo reboot
    
  11. На этом этапе вы должны быть способны загружаться нормально.

Если вы не можете загружаться нормально и не сделали шаг 8, потому что не было сообщений об ошибках, попробуйте снова выполнить шаг 8.

  • Иногда предоставление GRUB2 правильной конфигурации для ваших разделов недостаточно, и вам нужно фактически установить его (или переустановить) в основной загрузочный сектор, что делает шаг 8. Опыт помощи пользователям в чате показал, что шаг 8 иногда необходим, даже если ошибок не было.

Установщик Windows не заботится о других ОС в системе. Поэтому он записывает свой собственный код в главный загрузочный сектор. К счастью, решение тоже просто.

Вам нужно восстановить MBR. Выполните следующее

Загрузитесь, используя live usb/cd Ubuntu.
Используйте boot-repair для решения проблемы.

После загрузки с live usb/cd выполните следующую команду в терминале:

sudo add-apt-repository ppa:yannubuntu/boot-repair && sudo apt-get update
sudo apt-get install -y boot-repair && boot-repair

Используйте Рекомендуемое восстановление.

введите описание изображения здесь

Дополнительная информация – https://help.ubuntu.com/community/Boot-Repair

Загрузитесь с live USB-накопителя или CD с Ubuntu и
Установите Boot-Repair на Ubuntu, следуя шагам

Откройте терминал и выполните следующие команды

sudo add-apt-repository ppa:yannubuntu/boot-repair
sudo apt-get update
sudo apt-get install boot-repair

После завершения установки вы можете запустить его из меню Система-> Администрирование -> Boot-Repair, если вы используете Gnome, или найдите “boot-repair” в панеле поиска, если вы используете Unity. Затем следуйте приведенным ниже скриншотам:

Метод 1

  • Нажмите на дополнительные параметры

Начальный экран

  • Установите галочки на показанных ниже параметрах

дополнительная опция

  • Перейдите на вкладку Место загрузки и установите галочки на показанных на изображении вариантах

введите описание изображения здесь

Нажмите Применить и перезагрузите систему

Метод 2

  • Выберите рекомендуемые параметры восстановления загрузки, как показано на первом скриншоте

Документация:

На системах с EFI (как на большинстве систем, поставляемых с Windows 8 и новее) Windows иногда обновляет свой загрузчик или сбрасывает его, чтобы он стал загрузчиком по умолчанию. Это особенно распространено при переустановке ОС или выполнении крупного обновления системы (например, при обновлении до последней версии Windows). Обратите внимание, что Windows, вероятно, не удалит никаких файлов GRUB на компьютере с EFI. Все, что нужно для загрузки Ubuntu, все еще на месте; просто его обходят. В таких случаях полная переустановка GRUB является чрезмерной, и на самом деле это несет (небольшой) риск создания новых проблем.

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

  • EasyUEFI — самый простой способ изменить порядок загрузки, если система загружается прямо в Windows, это использовать EasyUEFI, бесплатный (для базовой версии) сторонний графический инструмент для управления порядком загрузки EFI. Это довольно самоочевидно — найдите элемент ubuntu в списке вариантов загрузки и переместите его на верх списка. В следующий раз при перезагрузке должен появиться GRUB. (Если вы используете что-то другое, кроме GRUB, вам нужно будет найти его запись.)
  • bcdedit — инструмент Windows bcdedit можно использовать, чтобы установить GRUB в порядок загрузки по умолчанию. Команда bcdedit /set {bootmgr} path \EFI\ubuntu\grubx64.efi, введенная в окне командной строки с правами Administrator, сделает это; однако, если ваш компьютер загружается с активной безопасной загрузкой, потребуется использовать bcdedit /set {bootmgr} path \EFI\ubuntu\shimx64.efi. На самом деле, последняя команда будет обычно работать, даже если безопасная загрузка не используется, поэтому я сначала бы использовал эту команду. Обратите внимание, что есть более продвинутый инструмент командной строки Windows, который требует немного другой синтаксис, чем я представил, но я не помню деталей.
  • Однократная загрузка в Ubuntu — большинство EFI поставляют с встроенным менеджером загрузки, который можно вызвать, нажав функциональную клавишу, Esc или Enter на раннем этапе запуска системы. Скорее всего, элемент ubuntu для загрузки Ubuntu появится в меню этого менеджера загрузки, что позволит вам загрузиться в Ubuntu. В противном случае вы можете загрузиться в аварийный диск Ubuntu, например, установочный диск, загруженный в режиме «попробовать перед установкой». В любом случае, вы можете использовать efibootmgr, чтобы настроить порядок загрузки:
    1. Введите sudo efibootmgr, чтобы увидеть записи загрузки.
    2. Запомните текущую строку BootOrder.
    3. Найдите запись для ubuntu и запомните ее номер Boot####.
    4. Введите sudo efibootmgr -o xxxx[,yyyy,zzzz,....], чтобы изменить порядок загрузки, сделав xxxx номером для Ubuntu. То, что будет дальше, вероятно, не так важно, хотя я заметил, что Windows, похоже, добавляет себя обратно в начало порядка загрузки, если ее нет в списке. Поэтому вам, вероятно, следует убедиться, что Windows находится в списке, и может быть безопаснее изменить порядок, чтобы все оригинальные записи были там, просто с перемещением записи ubuntu на верх списка.
  • Утилита настройки прошивки — некоторые утилиты настройки EFI позволяют вам изменить порядок загрузки. Подробности могут сильно варьироваться от одной EFI к другой, поэтому я не буду углубляться в специфику, но вы можете поискать такую опцию в вашей утилите настройки.

Существуют и другие варианты этих процедур, такие как использование bcfg в EFI-оболочке, использование bless в macOS, использование моего rEFInd для однократной загрузки и т.д. Я бы начал с EasyUEFI, это, вероятно, будет самым простым решением. Иногда Windows настаивает на том, чтобы каждый раз делать себя загрузчиком по умолчанию, и сообщения указывают на то, что bcdedit может лучше справиться с этой проблемой.

Обратите внимание, что ничего из вышеперечисленного не относится к установкам в режиме BIOS; однако, поскольку большинство компьютеров, поставляемых с Windows 8 и новее, загружаются в режиме EFI, установки в режиме BIOS становятся все более редкими, поэтому во многих случаях лучше решать проблему в режиме EFI, а не слепо переустанавливая GRUB.

Просто установите easyBCD в Windows 7 и выполните

Добавить новую запись > Linux/BSD > (выберите) Grub2 > (нажмите) Добавить запись

Тогда вы сможете выбрать Ubuntu в загрузчике Windows 7, чтобы перейти к Grub2 (предыдущий загрузчик).

Теперь есть более простое решение:

  1. Перезагрузите и войдите в настройки BIOS вашего компьютера (F2, или иногда F11).
  2. Перейдите в меню Загрузка и выберите Приоритет загрузки устройств
  3. Проверьте, если Диспетчер загрузки Windows выше основного загрузочного устройства (обычно SATA HDD … или IDE HDD …). Если это так, переместите приоритет загрузочного диска выше загрузчика Windows.
  4. Сохраните ваши настройки BIOS и выйдите (обычно F10).

Это было протестировано на ноутбуке Samsung Series 7 Chronos с двойной загрузкой Windows 8 и Ubuntu 13.10, безопасная загрузка отключена, UEFI и режим наследия включены.

Boot-Repair сработал для меня. Это очень простое в использовании графическое приложение, вам не нужно использовать командную строку, вам просто нужно нажать одну кнопку 🙂

Все доступные варианты восстановления описаны в документации Ubuntu, также есть отдельная страница, объясняющая, как запустить Boot-Repair (создавая загрузочный диск или устанавливая его на существующий живой диск Ubuntu) и как его использовать.

Просто загрузитесь с CD Ubuntu, установите Boot-Repair и запустите его.

Когда GRUB поврежден, пользователи обычно не имеют доступа к системам, поэтому восстановление необходимо выполнять из живого сеанса (live-CD или live-USB).

Существует много возможных причин поломки GRUB: Windows записывает на MBR, DRM препятствует правильной установке GRUB, ошибка установщика, изменение оборудования…
Обновление GRUB, как предложил изначально Скотт, обычно недостаточно, переустановка GRUB, как предложил Марко, более эффективна, но по-прежнему бывают различные ситуации, требующие других правок (добавление опций к ядру, раскрытие меню GRUB, изменение опций GRUB, выбор правильной архитектуры…) Другими трудностями для восстановления GRUB являются использование chroot и выбор правильных разделов/дисков.

Все это было упрощено в небольшом графическом инструменте: Boot-Repair. Он
должен быть интегрирован в CD Ubuntu 12.04 для упрощения использования, но для людей, которым это нужно сейчас, уже есть некоторые дистрибутивы с интеграцией: Ubuntu-Secured-Remix (CD с интегрированным Boot-Repair), Boot-Repair-Disk (CD, запускающий Boot-Repair при старте), …

Надеюсь, это поможет.

Ответы, данные Скоттом и Web-E, достаточно хороши и помогали много раз. Но во многих случаях инструмент boot-repair не может восстановить grub из-за проблем, связанных с платформой i386 и amd64, или ситуаций, когда grub не может найти efi директорию.
То, что решило мою проблему более чем 10 раз, – это ручное удаление старых установок grub и установка новой.

Поэтому сначала выполните первые 6 шагов из ответа Скотта где вы можете пропустить шаг 5, если он выдает ошибку:

  1. Загрузитесь с живого CD или USB в режиме «Попробовать Ubuntu».
  2. Определите номер раздела вашего основного раздела. sudo fdisk -l, sudo blkid или GParted (который должен быть уже установлен по умолчанию в живом сеансе) могут помочь вам здесь. Я предполагаю
    в этом ответе, что это /dev/sda2, но убедитесь, что вы используете
    правильный номер раздела для вашей системы!

    Если ваш основной раздел находится в LVM, устройство, скорее всего, будет находиться в /dev/mapper/, скорее всего,
    /dev/mapper/{volume}--{os}-root, где {volume} – это имя LVM-объема,
    а {os} – это операционная система. Выполните ls /dev/mapper для
    получения точного имени.

  3. Смонтируйте ваш раздел:

    sudo mount /dev/sda2 /mnt  #Замените sda2 на раздел из шага 2
    

    Если у вас есть отдельные разделы /boot, /var или /usr, повторите шаги 2 и 3, чтобы смонтировать эти разделы на /mnt/boot,
    /mnt/var и /mnt/usr соответственно. Например,

    sudo mount /dev/sdXW /mnt/boot
    sudo mount /dev/sdXY /mnt/var
    sudo mount /dev/sdXZ /mnt/usr
    

    заменив sdXW, sdXY и sdXZ на соответствующие номера разделов.

  4. Смонтируйте некоторые другие необходимые файлы:

    for i in /sys /proc /run /dev; do sudo mount --bind "$i" "/mnt$i"; done
    
  5. Если Ubuntu установлена в режиме EFI ([смотрите этот ответ, если вы не уверены][efi]), используйте sudo fdisk -l | grep -i efi или GParted, чтобы найти
    ваш EFI-раздел. У него будет метка EFI. Смонтируйте этот
    раздел, заменив sdXY на фактический номер раздела для вашей
    системы:

    sudo mount /dev/sdXY /mnt/boot/efi
    
  6. chroot в вашу установку Ubuntu:

    sudo chroot /mnt
    

Затем выполняйте следующие шаги:

  1. Настройте все ожидающие пакеты.
    sudo dpkg --configure -a
  2. Исправьте поврежденные пакеты.
    sudo apt install -fy
  3. Удалите текущий grub.
    sudo apt purge -y grub*-common grub-common:i386 shim-signed
    Это может выдать вам предупреждение о том, что ваше устройство не будет иметь загрузчика
    и может не загрузиться в следующий раз. Продолжайте и примите это.
  4. sudo apt install -y grub-pc
    После выполнения этой команды вам будет предложено указать текущий sdXY для установки загрузчика. Найдите, где установлена ваша текущая ОС, используя команду sudo fdisk -l. Она будет помечена как Linux. Перемещайтесь по этому окну с помощью клавиши Tab и выбирайте опцию с помощью клавиши Space.
  5. Если все пройдет правильно, grub будет установлен корректно. Вы также можете выполнить sudo grub-update для дополнительной проверки.

Если проблема все еще сохраняется, вы можете прочитать вики Arch, чтобы на самом деле понять grub и решить многие другие разновидности проблем. (Да, это также помогает для Ubuntu!).

Оказывается, grub можно исправить и из Windows. Выполнение следующей команды (от имени администратора) из CMD вернуло меню grub для меня.

bcdedit /set {bootmgr} path \EFI\ubuntu\grubx64.efi

Ответ Скотта Северенса является действительным и подробным, но есть решение, которое не требует внешнего загрузочного устройства и, таким образом, нет необходимости идентифицировать и вручную монтировать все ваши разделы Ubuntu перед chroot.

В Windows 10 вы можете использовать Расширенное восстановление, чтобы выбрать устройство (раздел?), с которого загружаться.

Перейдите в Настройки и выберите Обновление и безопасность:

введите описание изображения здесь

Перейдите в Восстановление:

введите описание изображения здесь

Из Расширенного запуска выберите Перезагрузить сейчас

введите описание изображения здесь

Затем выберите Использовать устройство, и все варианты загрузки должны быть вам представлены. Выберите раздел ‘ubuntu’, и ваш ПК должен будет загрузиться с этого раздела.

После загрузки в свою обычную среду Ubuntu я попробовал просто запустить grub-update, но это ничего не изменило.

Затем я нашел свой /boot/efi раздел, который был /dev/nvme0n1p1, и выполнил sudo grub-install /dev/nvme0n1p1, а затем sudo update-grub.

Это восстановило мой основной загрузочный сектор множество раз, поскольку, похоже, у Windows 10 есть новая политика перезаписи загрузочной информации при мелких обновлениях.

Windows не видит разделы с форматом Linux. Вам нужно использовать gparted с liveCD и создать первичный раздел, отформатированный в NTFS с флагом загрузки.

Некоторые столкнулись с проблемами, если новый первичный раздел находится после расширенного раздела, так как Windows не всегда корректно сбрасывает таблицу разделов. Лучше всего иметь хорошие резервные копии и отдельную резервную копию таблицы разделов.

Резервное копирование таблицы разделов в текстовый файл и сохранение на внешнем устройстве.

sudo sfdisk -d /dev/sda > PTsda.txt

Это только для систем MBR (msdos). Если ваша установка Ubuntu находится на диске с GPT-разделом, вы можете установить Windows только в режиме UEFI или конвертировать диск обратно в MBR (msdos).

Только команда fsck исправила экран grub-rescue для меня.

Используйте Boot-Repair, чтобы загрузиться с Live-CD, затем откройте терминал

Получите правильное устройство:

sudo fdisk -l

Необходимо найти загрузочное устройство, у загрузочного устройства под категорией Boot стоит *, как здесь:

Устройство     Boot   Начало       Конец   Секторы  Размер Id Тип
/dev/sda1          2048   2000895   1998848  976M 82 Linux swap / Solaris
/dev/sda2  *    2000896 943716351 941715456  449G 83 Linux

Теперь восстановите диск, используя:

sudo fsck /dev/sda2 -y

Примечание: /dev/sda2 является загрузочным устройством в этом примере.

Перезагрузитесь, когда завершите. Готово.

У меня была другая проблема, вызванная (вероятно) тем, что boot-repair удалил мои шаблоны /etc/grub.d/, как указано в моем вопросе здесь: Ubuntu 18.04 не загружается после установки Windows 10

Как указал комментарий @karels, конфигурация grub генерируется с использованием файлов в /etc/grub.d. Мой каталог содержал только /etc/grub.d/25_custom, который содержал странные меню, указывающие на несуществующие .efi образы. Казалось, что мои шаблоны /etc/grub.d могли быть повреждены boot-repair.

Я исправил это следующим образом:

  1. Загрузитесь с Live CD (вероятно, важно использовать ту же версию Ubuntu)
  2. sudo mount /dev/sdxx /mnt
  3. sudo cp /etc/grub.d/* /mnt/etc/grub.d/
  4. sudo update-grub
  5. Перезагрузитесь и расслабьтесь после 48 часов мучений

Ответ или решение

Как восстановить GRUB после установки Windows и вернуть доступ к Ubuntu

После установки Windows, загрузчик GRUB для Ubuntu может быть перезаписан, и при загрузке системы вы окажетесь непосредственно в Windows без возможности выбора Ubuntu. Чтобы восстановить GRUB, следуйте пошаговым инструкциям, приведенным ниже.

Способ 1: Использование Live CD/USB и командной строки

  1. Загрузитесь с Live CD/USB Ubuntu. Выберите режим "Попробовать Ubuntu".

  2. Определите номер раздела вашей основной Ubuntu установки. Используйте команды:

    sudo fdisk -l
    sudo blkid

    Или используйте GParted для визуализации разделов. Предположим, что ваш основной раздел – это /dev/sda2, но убедитесь, что вы используете правильный номер для вашей системы.

  3. Смонтируйте ваш раздел:

    sudo mount /dev/sda2 /mnt  # Замените sda2 на ваш раздел

    Если у вас есть отдельные разделы для /boot, /var или /usr, смонтируйте их следующим образом:

    sudo mount /dev/sdXW /mnt/boot  # Замените sdXW на ваш актуальный раздел
  4. Дополнительно смонтируйте необходимые системные каталоги:

    for i in /sys /proc /run /dev; do sudo mount --bind "$i" "/mnt$i"; done
  5. Если Ubuntu установлен в режиме EFI, найдите и смонтируйте раздел EFI:

    sudo fdisk -l | grep -i efi  # Найдите раздел EFI
    sudo mount /dev/sdXY /mnt/boot/efi  # Замените sdXY на актуальный номер
  6. Используйте chroot для перехода в вашу установку:

    sudo chroot /mnt
  7. Обновите GRUB для обнаружения всех установленных систем:

    update-grub
  8. (Опционально) Если обновление не решило проблему, переустановите GRUB:

    grub-install /dev/sda  # Установите на MBR или на основной диск
    update-grub  # Обновите конфигурацию
  9. Выход из chroot:

    exit
  10. Перезагрузите систему:

    sudo reboot

После этого вы должны увидеть меню GRUB с опциями загрузки Ubuntu и Windows.

Способ 2: Использование Boot-Repair

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

  1. Загрузитесь с Live CD/USB Ubuntu и запустите терминал.

  2. Введите следующие команды:

    sudo add-apt-repository ppa:yannubuntu/boot-repair
    sudo apt-get update
    sudo apt-get install -y boot-repair
    boot-repair
  3. Выберите опцию "Рекомендуемое восстановление".

Boot-Repair автоматически обнаружит и исправит проблемы с загрузчиком.

Альтернативные методы

Если ваша система использует UEFI, вы также можете изменить параметры загрузки в Windows:

  • Используйте bcdedit:
    Запустите командную строку от имени администратора и выполните:

    bcdedit /set {bootmgr} path \EFI\ubuntu\grubx64.efi

    Это добавит GRUB в качестве загрузчика по умолчанию.

  • EasyUEFI: Если вашему компьютеру доступен этот инструмент, вы можете легко изменить порядок загрузки, перетаскивая записи.

Заключение

Если ни один из предложенных способов не помог, возможно, стоит обратиться к сообществу Ubuntu за дополнительной помощью, так как могут быть специфические проблемы с вашей конфигурацией оборудования или настройками BIOS/UEFI.

Оцените материал
Добавить комментарий

Капча загружается...