- Восстановление GRUB
- Подготовка
- Загрузка в Live-режиме
- Открываем терминал
- Определение разделов
- Вывод fdisk для BIOS
- Вывод fdisk для UEFI
- Монтирование разделов
- Монтирование EFI-раздела
- Выполняем chroot на /mnt
- Генерация файла конфигурации GRUB
- Устанавливаем GRUB
- Перезагрузка компьютера
- Шпаргалка
- Ubuntu не грузится, как исправить
- Система Ubuntu не загружается
- Entering rescue mode
- Восстановление поврежденных разделов ubuntu
- Восстановление grub
- Заключение
Восстановление GRUB
В данной статье рассматривается процесс восстановления загрузчика GRUB 2.
Причины, по которым может понадобится восстановить GRUB, могут быть разными.
Очень часто требуется восстанавливать GRUB после установки Windows. Если у вас был установлен Linux и вы установили в соседний раздел или на соседний диск Windows, то после перезагрузки компьютера загрузится Windows, как будто Linux вообще пропал. Загрузчик GRUB даже не появился. Иногда подобное происходит при обновлении существующего Windows.
Иногда требуется восстановление GRUB после установки Linux, когда неверно был выбран раздел для установки загрузчика.
Во всех случаях нужно выполнить восстановление загрузчика GRUB. Существуют разные способы восстановления. В данном руководстве рассматривается процесс использованием загрузочного Live-образа Linux. Загрузившись в Live-систему вам нужно будет ввести несколько команд, чтобы выполнить восстановление. Рассматривается способ восстановления без использования сторонних программ.
Также иногда различают процесс восстановления для систем с BIOS и с UEFI. Описанный ниже способ рассматривает оба этих случая. Я тестировал его как на компьютерах с традиционным BIOS, так и с UEFI.
Подготовка
Для восстановления GRUB потребуется загрузочный диск или флешка с дистрибутивом Linux. Если у вас его нет, то нужно скачать образ с дистрибутивом. Например, можно скачать ISO образ Ubuntu.
Для создания загрузочной флешки можно воспользоваться программой Etcher. Она работает в Linux, Windows и MacOS. Подробная инструкция: Как создать загрузочную флешку.
Загрузка в Live-режиме
Теперь нужно загрузиться с созданного диска или флешки.
Чтобы это сделать сначала нужно в BIOS выбрать приоритет загрузки с CD/DVD или с USB (если вы используете флешку).
На современных компьютерах, где используется BIOS/UEFI, для входа в BIOS нужно при включении компьютера удерживать специальную клавишу. У разных производителей клавиша может быть разной. Обычно это: F2 , Del , F10 , Esc , F11 или F3 .
На старых компьютерах, где используется классический BIOS, чтобы войти в BIOS нужно при загрузке компьютера, в самом начале, когда появляется логотип материнской платы, нажать специальную клавишу. Для разных материнских плат клавиша может быть разной. Обычно это одна из клавиш: Del , F1 , F2 , F8 , F10 или какая-нибудь другая, или даже сочетание клавиш. Подробности: Настройка BIOS для загрузки с CD/DVD-диска или с USB-носителя
Открываем терминал
Итак, вы загрузились в Live-режиме. Теперь нужно открыть терминал.
В Ubuntu и некоторых других дистрибутивах это можно сделать нажатием сочетания клавиш Ctrl+Alt+T . Или запустить терминал через меню программ.
Определение разделов
Теперь нужно определить раздел диска, на котором был установлен GRUB.
Выведем список разделов, для этого выполняем команду (в конце команды стоит строчная буква L):
Вывод fdisk для BIOS
Пример вывода команды:
В моем случае мы видим 2 диска: /dev/sda (SSD диск) и /dev/sdb (флешка, с которой сейчас загружена Live-система).
Нас интересует диск /dev/sda . На диске /dev/sda создано несколько разделов. В моем случае /dev/sda4 , на котором установлен Windows, а также 4 раздела с пометкой Linux (см. последний столбец таблицы). У вас скорее всего может быть один раздел Linux (корневой раздел) или два раздела (корневой и home). На одном из этих разделов установлен GRUB.
То есть из таблицы вы должны определить какой раздел является корневым, на нем скорее всего у вас установлен GRUB. В моем случае GRUB установлен в раздел /dev/sda2 . Далее по тексту я буду его использовать (вы должны будете указывать свой раздел).
Иногда бывает, что для загрузчика GRUB выделен отдельный раздел (он называется boot-раздел). Если это так, то на следующем шаге вам нужно будет примонтировать корневой раздел и раздел с загрузчиком.
Вывод fdisk для UEFI
Для новых компьютеров с UEFI вывод команды fdisk -l может быть примерно следующим:
Нам нужно определить, на каком разделе установлен Linux (корневой раздел), а также определить EFI-раздел. В моем случае это разделы: /dev/nvme0n1p5 и /dev/nvme0n1p1 , которые расположены на диске /dev/nvme0n1 .
Монтирование разделов
Примонтируем корневой раздел. Выполняем команду (вместо /dev/sda2 вы должны указать свой раздел):
Мы примонтировали раздел /dev/sda2 в директорию /mnt .
Если для загрузчика у вас выделен отдельный раздел, то нужно примонтировать еще и его (вместо /dev/sdX укажите ваш boot-раздел):
Теперь можно посмотреть содержимое директории /mnt , чтобы убедиться, что мы примонтировали верный раздел:
Вывод команды должен быть примерно следующим. Обратите внимание есть ли в этом списке каталог /boot , так как именно в нем установлен GRUB.
Также можно проверить, что директория boot не пустая:
У меня вывод команды выглядит следующим образом. Обратите внимание на присутствие каталога с именем grub .
Далее нужно создать ссылки на несколько директорий, к которым GRUB должен иметь доступ для обнаружения всех операционных систем. Для этого выполните команды:
Монтирование EFI-раздела
Если у вас используется UEFI, то еще нужно примонтировать EFI-раздел в директорию /mnt/boot/efi (выше я указал пример вывода команды fdisk -l в котором показан EFI-раздел):
Выполняем chroot на /mnt
На предыдущем шаге мы смонтировали все необходимые директории в директорию /mnt . Теперь переключимся (выполним chroot ) на данную директорию. Выполняем команду:
Генерация файла конфигурации GRUB
Данный шаг нужно выполнять не всем. Если у вас был установлен GRUB и вы уверены, что его конфигурация верная, то можно перейти к следующему шагу.
Для генерации файла конфигурации GRUB используется команда update-grub . Данная команда автоматически определяет файловые системы на вашем компьютере и генерирует новый файл конфигурации. Выполняем команду:
В выводе команды будет показано, какие операционные системы были найдены.
Если вдруг утилита update-grub не определила ваш Windows (у меня такое было для UEFI), то можно будет запустить update-grub повторно уже из вашей Linux-системы, когда вы в нее загрузитесь (мне это помогло и Windows определился).
Устанавливаем GRUB
Осталось выполнить установку GRUB на диск. Мы определили раздел на котором у нас установлен GRUB на первом шаге данного руководства. В моем случае это раздел /dev/sda2 , который расположен на диске /dev/sda .
Для установки GRUB используется команда grub-install , которой нужно передать в качестве параметра диск, на который будет выполняться установка (в моем случае это диск /dev/sda ):
https://askubuntu.com/questions/88384/how-can-i-repair-grub-how-to-get-ubuntu-back-after-installing-windows
If Ubuntu is installed in EFI mode, and EFI partition UUID has changed, you may need to update it in /etc/fstab. Compare it:
blkid | grep -i efi
grep -i efi /etc/fstab
Перезагрузка компьютера
Выходим из окружения chroot, для этого выполняем команду:
Отмонтируем все разделы, которые мы примонтировали:
Если вы монтировали boot-раздел, то его тоже нужно отмонтировать:
Если вы монтировали EFI-раздел, отмонтируем:
Отмонтируем корневой раздел:
Перезагружаем компьютер. Для этого выполняем команду:
Если во время перезагрузки компьютера меню GRUB не появилось, то это еще не значит, что он не восстановился. Возможно, просто установлена нулевая задержка и меню не показывается. Чтобы показать меню GRUB нужно во время загрузки, после того, как появился логотип материнской платы:
- удерживать клавишу Shift , если у вас классический BIOS;
- нажать Esc , если у вас UEFI.
Если у вас, при выполнении grub-update, не определился Windows и не был добавлен в меню GRUB, то уже загрузившись в вашу систему Linux (не LiveCD), откройте терминал и выполните:
Мне это помололо на компьютере, который использует UEFI.
Шпаргалка
Мы рассмотрели процесс восстановления загрузчика GRUB 2. Для удобства привожу краткую шпаргалку по командам, которые мы выполняли. Учитывайте, что названия и имена разделов ( /dev/sd. ) у вас могут отличаться.
Ubuntu не грузится, как исправить
В данной статье постараюсь рассмотреть некоторые типовые ошибки, связанные с загрузкой системы. Бывает так, что сервер с Ubuntu по какой-то причине не загружается из-за поврежденного загрузчика или еще каких-то проблем. Я покажу методику, как решать подобные проблемы с запуском, а заодно расскажу, как можно быстро восстановить систему.
Система Ubuntu не загружается
Рассмотрим, с чем в первую очередь может быть связана проблема с загрузкой системы. Вот список наиболее вероятных причин:
- Первое самое очевидное — у вас сломался жесткий диск, на который установлена система. Тут все ясно и починить вряд ли что-то получится. Надо менять диск и переустанавливать на новый диск систему. Далее не буду рассматривать этот случай.
- Возникли проблемы с загрузчиком grub, который запускается перед загрузкой основной системы. Вы в него попадаете, но дальше видите какие-то ошибки, чаще всего связанные с тем, что не найден корневой раздел системы, поэтому загрузка невозможно. С этими же проблемами вы можете оказаться в режиме recovery mode, где можно выполнить какие-то действия.
- У вас поврежден загрузчик, с которого начинается загрузка системы после старта компьютера. Это небольшая область в начальных секторах жесткого диска. Если с загрузчиком проблемы, то загрузка даже не начинается и вы сразу получаете ошибку на тему того, что с данного жесткого диска невозможно загрузиться.
Далее я отдельно рассмотрю второй и третий случаи. Начнем со стандартного режима восстановления grub.
Entering rescue mode
Итак, в случае проблем с загрузкой Ubuntu вы можете оказаться в режиме grub rescue.
Это может символизировать как простую ошибку, которую легко исправить, так и серьезные проблемы. Рассказываю, что нужно делать в таком случае и как починить загрузку системы.
Первым делом запускаем команду ls и смотрим, какие разделы у нас доступны.
В моем случае доступен только один 3-й раздел, скорее всего корневой. Раздела /boot, который обычно 1-й или 2-й нет. Проверим это наверняка. Смотрим содержимое доступного раздела:
По содержимому раздела видно, что это корневой. Самого раздела /boot, с которого должна начинаться загрузка ubuntu тут не видно. Если его никто специально не удалял и не затирал, то он пропал в результате какого-то сбоя или ошибки. Можно попробовать это исправить. Сделаем это отдельно ниже, а пока рассмотрим случай, когда boot раздел тут все же присутствует и имеет имя, к примеру, (hd0,gpt2). Тогда там же в консоли grub продолжаем.
Далее загружаем некоторые модули. Какие будут нужны, точно не известно и зависит от типов разделов диска. Показываю самые популярные:
Можно для начала попробовать вообще без модулей, а потом добавлять по одному. В самом конце загружаем модуль normal.
После этого у вас должно открыться стандартное меню загрузки Ubuntu. Если это так, то вам повезло. Дальше загрузится система. Вам нужно будет в нее зайти и далее перейти в раздел по восстановлению grub в этой статье. Получилось так, что у вас сам загрузочный раздел жив, но сбились его настройки, поэтому он сам не смог загрузить основную систему. Это не трудно исправить и ниже я показываю как.
Восстановление поврежденных разделов ubuntu
Если же у вас вообще не найдет раздел для загрузки, надо попробовать его восстановить. Для этого загружаемся с установочного диска Ubuntu и на первом экране инсталлятора выходим в консоль через раздел Help.
Вы окажетесь в консоли системы, которая по сути является livecd сервера. В целом, тут подойдет любой livecd дистрибутив с linux. Эта система видит все подключенные диски и вообще все оборудование. Первым делом вам надо настроить выход в интернет на сервере так же, как вы это делаете обычно. После этого нужно обновить пакеты и установить утилиту testdisk. С ее помощью мы попробуем найти исчезнувший загрузочный раздел.
Запускаем утилиту и указываем, что будем создавать новый log файл.
Выбираем диск, на котором у нас установлена система. В моем случае это sda.
В качестве partition table type сначала укажите Intel. Если не получится ничего найти, попробуйте еще раз с другими типами.
Дальше выбираем Analyze.
И запускаем Quick Search.
У меня testdisk нашел 2 раздела, причем первый это boot раздел, который по какой-то причине исчез.
Из-за его отсутствия виртуальная машина с ubuntu не грузилась. Далее выбираю первый раздел и восстанавливаю его с помощью testdisk. Записываю изменения и выхожу в консоль. Проверяю с помощью fdisk разделы диска /dev/sda.
Появился первый загрузочный раздел. По идее я выполнил восстановление boot раздела. Теперь можно проверить, запустится ли система. Для этого отключаем установочный диск и загружаемся с основного.
В случае, если все загрузилось, вам повезло. Отделались малой кровью. Если же ubuntu не загружается, а вы опять попадаете в grub rescue, значит придется еще потрудиться над восстановлением загрузки системы. Будем восстанавливать сам grub.
Восстановление grub
Продолжаем восстановление загрузки ubuntu. Сам /boot раздел мы вернули, но загрузчик grub почему-то не работает и система не грузится. Загружаемся опять с установочного диска и переходим в консоль. Напомню, что у меня такая картина по разделам:
Первый раздел это /boot, второй корень / . Смонтируем их в /mnt, а так же добавим несколько системных директорий.
Теперь чрутимся в /mnt, чтобы оказаться в нашей системе:
И уже отсюда восстанавливаю загрузчик grub:
По идее, ошибок получить не должны. Если получили, то гуглите их. Надо обязательно их решить, иначе система так и не начнет загружаться корректно.
Теперь выходим отсюда и перезагружаем сервер. Вынимаем установочный диск и загружаемся с основного диска. У меня пошла загрузка.
Давайте еще раз повторим все, что мы сделали:
- Мы увидели, что система не грузится и валится в grub rescue. Загрузчик не может найти раздел, с которого продолжить загрузку. Мы попробовали в rescue console посмотреть все имеющиеся разделы и не нашли там boot. Если же нашли, то сразу же загрузились с него.
- После этого загрузились с загрузочного диска ubuntu, перешли в консоль. Установили утилиту testdisk и просканировали наш диск. Нашли пропавший раздел, восстановили /boot. Если раздел не нашли, то создали вручную.
- После этого смонтировали к livecd системе локальные диски, зачрутились в эту систему и штатно восстановили grub загрузчик.
- После этого система нормально загрузилась.
Заключение
В целом, мы выполнили типовую процедуру восстановления загрузки любого linux сервера, в том числе ubuntu. Если бы раздел boot не получилось восстановить, его нужно было бы создать вручную и проделать все то же самое с восстановлением grub. Это ключевой элемент загрузки linux. Система перестает загружаться чаще всего из-за проблем с ним. Он может быть поврежден установкой рядом других систем или неправильной разбивкой диска.
Важно понимать, что если корневой раздел системы жив, то восстановление непосредственно загрузки — дело техники. Чаще все это все исправляется и система продолжает работать.