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

314

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

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

    
задан Salahuddin 17.12.2011 в 07:02
источник

12 ответов

321

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

Вот как это сделать:

  1. Загрузитесь с живого компакт-диска или с живого 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  #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. На этом этапе вы находитесь в своей установке, а не в режиме реального времени, и выполняете роль 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
    

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

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

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

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

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

Установщик 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

Используйте Recomended Repair .

Дополнительнаяинформация- Ссылка

    
ответ дан Web-E 01.09.2012 в 06:59
35

У меня не было проблем с использованием этих инструкций:
Ссылка

Прежде всего, вы должны запустить свою систему с живого компакт-диска. Тогда

METHOD 3 - CHROOT

This method of installation uses the chroot command to gain access to the broken system's files. Once the chroot command is issued, the LiveCD treats the broken system's / as its own. Commands run in a chroot environment will affect the broken systems filesystems and not those of the LiveCD.

  1. Boot to the LiveCD Desktop (Ubuntu 9.10 or later). Please note that the Live CD must be the same as the system you are fixing - either 32-bit or 64-bit (if not then the chroot will fail).

  2. Open a terminal (Applications > Accessories > Terminal).

  3. Determine your normal system partition - (the switch is a lowercase "L")

    sudo fdisk -l
    

    If you aren't sure, run

    df -Th  
    

    Look for the correct disk size and ext3 or ext4 format.

  4. Mount your normal system partition:

    Substitute the correct partition: sda1, sdb5, etc.

    sudo mount /dev/sdXX /mnt  
    

    Example: sudo mount /dev/sda1 /mnt

  5. Only if you have a separate boot partition: sdYY is the /boot partition designation (for example sdb3)

    sudo mount /dev/sdYY /mnt/boot
    
  6. Mount the critical virtual filesystems:

    sudo mount --bind /dev /mnt/dev
    sudo mount --bind /dev/pts /mnt/dev/pts
    sudo mount --bind /proc /mnt/proc
    sudo mount --bind /sys /mnt/sys
    
  7. Chroot into your normal system device:

    sudo chroot /mnt
    
  8. If there is no /boot/grub/grub.cfg or it's not correct, create one using

    update-grub
    
  9. Reinstall GRUB 2:

    Substitute the correct device - sda, sdb, etc. Do not specify a partition number.

    grub-install /dev/sdX
    
  10. Verify the install (use the correct device, for example sda. Do not specify a partition):

    sudo grub-install --recheck /dev/sdX
    
  11. Exit chroot: CTRL-D on keyboard

  12. Unmount virtual filesystems:

    sudo umount /mnt/dev/pts
    sudo umount /mnt/dev
    sudo umount /mnt/proc
    sudo umount /mnt/sys
    
  13. If you mounted a separate /boot partition:

    sudo umount /mnt/boot
    
  14. Unmount the LiveCD's /usr directory:

    sudo umount /mnt/usr
    
  15. Unmount last device:

    sudo umount /mnt
    
  16. Reboot.

    sudo reboot
    
    
ответ дан desgua 27.04.2012 в 02:15
19

Загрузка с живого 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» в тире, если вы используете Unity. Затем выполните следующие скриншоты:

Метод 1

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

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

  • Измените вкладку на вкладку «Место схватывания» и отметьте параметры. Показаны на рисунке .

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

Метод 2

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

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

    
ответ дан Stormvirux 30.07.2013 в 19:25
11

Просто установите easyBCD в Windows 7 и сделайте

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

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

    
ответ дан hamed 11.03.2012 в 22:09
5

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

  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 и устаревшая загрузка.

    
ответ дан scruss 15.12.2013 в 13:04
3

В системах на базе 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 , введенная в окне командной строки Администратор , сделает это; однако, если ваш компьютер загружается с активной загрузкой Secure, вместо этого потребуется 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.

    
ответ дан Rod Smith 13.07.2017 в 15:03
2

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

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

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

    
ответ дан lorenzo-s 18.12.2011 в 01:41
1

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

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

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

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

    
ответ дан LovinBuntu 20.12.2011 в 08:58
0

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

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

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

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

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

    
ответ дан oldfred 30.07.2013 в 20:01
0

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

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

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

sudo fdisk -l

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

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

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

Введите Y , чтобы устранить проблемы.

После ввода Y примерно в 2 раза вы можете остановить процесс fsck , введя CTRL + C , потому что критическая часть уже сделанный.

Reboot. Готово.

    
ответ дан Benny 25.07.2018 в 07:51
0

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

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

  1. Boot from the live CD or live USB, in "Try Ubuntu" mode.
  2. Determine the partition number of your main partition. sudo fdisk -l, sudo blkid or GParted (which should already be installed, by default, on the live session) can help you here. I'm going to assume in this answer that it's /dev/sda2, but make sure you use the correct partition number for your system!

    If your main partition is in an LVM, the device will instead be located in /dev/mapper/, most likely, /dev/mapper/{volume}--{os}-root where {volume} is the LVM volume name and {os} is the operating system. Execute ls /dev/mapper for the exact name.

  3. Mount your partition:

    sudo mount /dev/sda2 /mnt  #Replace sda2 with the partition from step 2
    

    If you have a separate /boot, /var or /usr partitions, repeat steps 2 and 3 to mount these partitions to /mnt/boot, /mnt/var and /mnt/usr respectively. For example,

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

    replacing sdXW, sdXY, and sdXZ with the respective partition numbers.

  4. Bind mount some other necessary stuff:

    for i in /sys /proc /run /dev; do sudo mount --bind "$i" "/mnt$i"; done
    
  5. If Ubuntu is installed in EFI mode ([see this answer if you're unsure][efi]), use sudo fdisk -l | grep -i efi or GParted to find your EFI partition. It will have a label of EFI. Mount this partition, replacing sdXY with the actual partition number for your system:

    sudo mount /dev/sdXY /mnt/boot/efi
    
  6. chroot into your Ubuntu install:

    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 для двойной проверки.

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

ответ дан subtleseeker 06.09.2018 в 14:28