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

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

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

12 ответов

Решение

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

Вот как:

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

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

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

    sudo mount /dev/sda2 /mnt  #Replace sda2 with the partition from step 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 ( см. Этот ответ, если вы не уверены), используйте sudo fdisk -l | grep -i efi или GParted, чтобы найти ваш раздел EFI. Это будет иметь ярлык EFI, Смонтируйте этот раздел, заменив sdXY с фактическим номером раздела для вашей системы:

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

    sudo chroot /mnt
    
  7. На данный момент вы находитесь в вашей установке, а не в сеансе live и работаете от имени пользователя root. Обновление grub:

    update-grub
    

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

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

    grub-install /dev/sda
    update-grub # In order to find and add windows to grub menu.
    
  9. Если Ubuntu установлен в режиме EFI и UUID раздела EFI изменился, вам может потребоваться обновить его в /etc/fstab, Сравните это:

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

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

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

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

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

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

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

Вам нужно отремонтировать MBR. Сделайте следующее

Загрузитесь с использованием живого 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

использование Recomended Repair,

введите описание здесь

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

Загрузитесь с живого Ubuntu USB Pendrive или CD и
Установите Boot-Repair на Ubuntu, выполнив следующие действия

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

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

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

Способ 1

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

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

  • Отметьте опции, показанные ниже

расширенный вариант

  • Измените вкладку на Grub Location Tab и отметьте опции, показанные на рисунке

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

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

Способ 2

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

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

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

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

  • EasyUEFI - Самый простой способ настроить порядок загрузки, если система загружается прямо в Windows, - это использовать EasyUEFI, который является бесплатным (для базовой версии) сторонним инструментом графического интерфейса для управления порядком загрузки EFI. Это довольно очевидно - найдите ubuntu запись в списке параметров загрузки и переместить его в начало списка. При следующей перезагрузке должен появиться GRUB. (Если вы используете что-то кроме GRUB, вам нужно найти его запись.)
  • bcdedit -- Окна bcdedit Инструмент может быть использован для установки GRUB в порядок загрузки по умолчанию. Команда bcdedit /set {bootmgr} path \EFI\ubuntu\grubx64.efi, введенный в окне командной строки администратора, сделает это; однако, если ваш компьютер загружается с активной загрузкой, bcdedit /set {bootmgr} path \EFI\ubuntu\shimx64.efi будет требоваться вместо этого. Фактически, последняя команда обычно будет работать, даже если Secure Boot не используется, поэтому я бы сначала использовал эту команду. Обратите внимание, что есть более продвинутый инструмент оболочки 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. Зайдите в меню Boot и выберите Boot Device Priority
  3. Проверьте, находится ли диспетчер загрузки Windows над основным загрузочным диском (обычно это жесткий диск SATA… или жесткий диск IDE…). Если это так, переместите приоритет загрузочного диска выше приоритета диспетчера загрузки Windows.
  4. Сохраните настройки BIOS и выйдите (обычно F10).

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

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

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

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

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

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

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

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

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

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

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

    sudo mount /dev/sda2 /mnt  #Replace sda2 with the partition from step 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. Удалить текущую личинку.
    sudo apt purge -y grub*-common grub-common:i386 shim-signed
    Это может дать вам предупреждение о том, что ваше устройство не будет иметь загрузчика и может не загрузиться в следующий раз. Давай, прими это.
  4. sudo apt install -y grub-pc
    После выполнения этой команды она попросит вас указать текущий sdXY установить загрузчик. Найдите, где установлена ​​ваша текущая ОС, используя sudo fdisk -l команда. Это будет помечено как Linux, Перейдите в это окно, используя клавишу Tab, и выберите опцию, используя клавишу пробела.
  5. Если все пойдет правильно, grub будет установлен правильно. Вы также можете сделать sudo grub-update для двойной проверки.

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

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

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

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

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

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

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

Перейти к Settings и выбрать Update & Security:

Перейти к Recovery:

Из Advanced Startup выбирать Restart Now

Тогда выбирай Use a Device и все варианты загрузки должны быть представлены вам. Выберите раздел "Ubuntu", и ваш компьютер должен загрузиться с этого раздела.

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

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

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

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

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

Device     Boot   Start       End   Sectors  Size Id Type
/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 часов боли
Другие вопросы по тегам