Ubuntu не грузится, как исправить
В данной статье постараюсь рассмотреть некоторые типовые ошибки, связанные с загрузкой системы. Бывает так, что сервер с Ubuntu по какой-то причине не загружается из-за поврежденного загрузчика или еще каких-то проблем. Я покажу методику, как решать подобные проблемы с запуском, а заодно расскажу, как можно быстро восстановить систему.
Содержание
Система Ubuntu не загружается
Рассмотрим, с чем в первую очередь может быть связана проблема с загрузкой системы. Вот список наиболее вероятных причин:
- Первое самое очевидное — у вас сломался жесткий диск, на который установлена система. Тут все ясно и починить вряд ли что-то получится. Надо менять диск и переустанавливать на новый диск систему. Далее не буду рассматривать этот случай.
- Возникли проблемы с загрузчиком grub, который запускается перед загрузкой основной системы. Вы в него попадаете, но дальше видите какие-то ошибки, чаще всего связанные с тем, что не найден корневой раздел системы, поэтому загрузка невозможно. С этими же проблемами вы можете оказаться в режиме recovery mode, где можно выполнить какие-то действия.
- У вас поврежден загрузчик, с которого начинается загрузка системы после старта компьютера. Это небольшая область в начальных секторах жесткого диска. Если с загрузчиком проблемы, то загрузка даже не начинается и вы сразу получаете ошибку на тему того, что с данного жесткого диска невозможно загрузиться.
Далее я отдельно рассмотрю второй и третий случаи. Начнем со стандартного режима восстановления grub.
Entering rescue mode
Итак, в случае проблем с загрузкой Ubuntu вы можете оказаться в режиме grub rescue.
Machine UUID... Booting from Hard Disk... error: no such partition. Entering rescue mode... grub rescue>
Это может символизировать как простую ошибку, которую легко исправить, так и серьезные проблемы. Рассказываю, что нужно делать в таком случае и как починить загрузку системы.
Первым делом запускаем команду ls и смотрим, какие разделы у нас доступны.
> ls (hd0) (hd0,gpt3)
В моем случае доступен только один 3-й раздел, скорее всего корневой. Раздела /boot, который обычно 1-й или 2-й нет. Проверим это наверняка. Смотрим содержимое доступного раздела:
> ls (hd0,gpt3)/
По содержимому раздела видно, что это корневой. Самого раздела /boot, с которого должна начинаться загрузка ubuntu тут не видно. Если его никто специально не удалял и не затирал, то он пропал в результате какого-то сбоя или ошибки. Можно попробовать это исправить. Сделаем это отдельно ниже, а пока рассмотрим случай, когда boot раздел тут все же присутствует и имеет имя, к примеру, (hd0,gpt2). Тогда там же в консоли grub продолжаем.
> set prefix=(hd0,gpt2)/grub > set root=(hd0,gpt2)
Далее загружаем некоторые модули. Какие будут нужны, точно не известно и зависит от типов разделов диска. Показываю самые популярные:
> insmod ext2 > insmod lvm > insmod part_msdos
Можно для начала попробовать вообще без модулей, а потом добавлять по одному. В самом конце загружаем модуль normal.
> insmod normal > normal
После этого у вас должно открыться стандартное меню загрузки Ubuntu. Если это так, то вам повезло. Дальше загрузится система. Вам нужно будет в нее зайти и далее перейти в раздел по восстановлению grub в этой статье. Получилось так, что у вас сам загрузочный раздел жив, но сбились его настройки, поэтому он сам не смог загрузить основную систему. Это не трудно исправить и ниже я показываю как.
Восстановление поврежденных разделов ubuntu
Если же у вас вообще не найден раздел для загрузки, надо попробовать его восстановить. Для этого загружаемся с установочного диска Ubuntu и на первом экране инсталлятора выходим в консоль через раздел Help.
Вы окажетесь в консоли системы, которая по сути является livecd сервера. В целом, тут подойдет любой livecd дистрибутив с linux. Эта система видит все подключенные диски и вообще все оборудование. Первым делом вам надо настроить выход в интернет на сервере так же, как вы это делаете обычно. После этого нужно обновить пакеты и установить утилиту testdisk. С ее помощью мы попробуем найти исчезнувший загрузочный раздел.
sudo apt update sudo apt install 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 почему-то не работает и система не грузится. Загружаемся опять с установочного диска и переходим в консоль. Напомню, что у меня такая картина по разделам:
Device Boot Start End Sectors Size Id Type /dev/sda1 * 4096 2101247 2097152 1G 83 Linux /dev/sda2 2101248 20969471 18868224 9G 83 Linux
Первый раздел это /boot, второй корень / . Смонтируем их в /mnt, а так же добавим несколько системных директорий.
sudo mount /dev/sda2 /mnt sudo mount /dev/sda1 /mnt/boot sudo mount --bind /dev /mnt/dev sudo mount --bind /proc /mnt/proc sudo mount --bind /sys /mnt/sys
Теперь чрутимся в /mnt, чтобы оказаться в нашей системе:
sudo chroot /mnt
И уже отсюда восстанавливаю загрузчик grub:
grub-install /dev/sda sudo update-grub --output=/mnt/boot/grub/grub.cfg
По идее, ошибок получить не должны. Если получили, то гуглите их. Надо обязательно их решить, иначе система так и не начнет загружаться корректно.
Теперь выходим отсюда и перезагружаем сервер. Вынимаем установочный диск и загружаемся с основного диска. У меня пошла загрузка.
Давайте еще раз повторим все, что мы сделали:
- Мы увидели, что система не грузится и валится в grub rescue. Загрузчик не может найти раздел, с которого продолжить загрузку. Мы попробовали в rescue console посмотреть все имеющиеся разделы и не нашли там boot. Если же нашли, то сразу же загрузились с него.
- После этого загрузились с загрузочного диска ubuntu, перешли в консоль. Установили утилиту testdisk и просканировали наш диск. Нашли пропавший раздел, восстановили /boot. Если раздел не нашли, то создали вручную.
- После этого смонтировали к livecd системе локальные диски, зачрутились в эту систему и штатно восстановили grub загрузчик.
- После этого система нормально загрузилась.
Заключение
В целом, мы выполнили типовую процедуру восстановления загрузки любого linux сервера, в том числе ubuntu. Если бы раздел boot не получилось восстановить, его нужно было бы создать вручную и проделать все то же самое с восстановлением grub. Это ключевой элемент загрузки linux. Система перестает загружаться чаще всего из-за проблем с ним. Он может быть поврежден установкой рядом других систем или неправильной разбивкой диска.
Важно понимать, что если корневой раздел системы жив, то восстановление непосредственно загрузки — дело техники. Чаще все это все исправляется и система продолжает работать.
Здравствуйте! А testdisk нельзя установить с установочного образа? Дело в том что сервер, может оказаться маршрутизатором и соединение с интернетом может быть в примеру pppoe, а насторойка его в «полевых условиях» не тривиальна.
Есть проблема потери раздела boot с ядром системы, подскажите как действовать в этом случае?