Линукс не загружается дальше grub

Ubuntu не грузится, как исправить

В данной статье постараюсь рассмотреть некоторые типовые ошибки, связанные с загрузкой системы. Бывает так, что сервер с Ubuntu по какой-то причине не загружается из-за поврежденного загрузчика или еще каких-то проблем. Я покажу методику, как решать подобные проблемы с запуском, а заодно расскажу, как можно быстро восстановить систему.

Система Ubuntu не загружается

Рассмотрим, с чем в первую очередь может быть связана проблема с загрузкой системы. Вот список наиболее вероятных причин:

  1. Первое самое очевидное — у вас сломался жесткий диск, на который установлена система. Тут все ясно и починить вряд ли что-то получится. Надо менять диск и переустанавливать на новый диск систему. Далее не буду рассматривать этот случай.
  2. Возникли проблемы с загрузчиком grub, который запускается перед загрузкой основной системы. Вы в него попадаете, но дальше видите какие-то ошибки, чаще всего связанные с тем, что не найден корневой раздел системы, поэтому загрузка невозможно. С этими же проблемами вы можете оказаться в режиме recovery mode, где можно выполнить какие-то действия.
  3. У вас поврежден загрузчик, с которого начинается загрузка системы после старта компьютера. Это небольшая область в начальных секторах жесткого диска. Если с загрузчиком проблемы, то загрузка даже не начинается и вы сразу получаете ошибку на тему того, что с данного жесткого диска невозможно загрузиться.

Далее я отдельно рассмотрю второй и третий случаи. Начнем со стандартного режима восстановления 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:

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

Теперь выходим отсюда и перезагружаем сервер. Вынимаем установочный диск и загружаемся с основного диска. У меня пошла загрузка.

Читайте также:  Windows media player and ac3

Давайте еще раз повторим все, что мы сделали:

  1. Мы увидели, что система не грузится и валится в grub rescue. Загрузчик не может найти раздел, с которого продолжить загрузку. Мы попробовали в rescue console посмотреть все имеющиеся разделы и не нашли там boot. Если же нашли, то сразу же загрузились с него.
  2. После этого загрузились с загрузочного диска ubuntu, перешли в консоль. Установили утилиту testdisk и просканировали наш диск. Нашли пропавший раздел, восстановили /boot. Если раздел не нашли, то создали вручную.
  3. После этого смонтировали к livecd системе локальные диски, зачрутились в эту систему и штатно восстановили grub загрузчик.
  4. После этого система нормально загрузилась.

Заключение

В целом, мы выполнили типовую процедуру восстановления загрузки любого linux сервера, в том числе ubuntu. Если бы раздел boot не получилось восстановить, его нужно было бы создать вручную и проделать все то же самое с восстановлением grub. Это ключевой элемент загрузки linux. Система перестает загружаться чаще всего из-за проблем с ним. Он может быть поврежден установкой рядом других систем или неправильной разбивкой диска.

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

Источник

Решение ошибок программы-загрузчика GRUB

Нередко возникает необходимость в установке двух принципиально разных операционных систем на один компьютер: Windows и Linux. Разумеется, подобное «соседство» будет связано с некоторыми неудобствами. Для установки, как правило, используют специальную программу GRUB. Но к сожалению, при её использовании можно столкнуться с рядом ошибок. В этой статье разберёмся с тем, как исправить ошибки загрузчика GRUB. Давайте же начнём. Поехали!

Для начала давайте определимся с тем, что из себя представляет эта программа. GRUB — представляет собой системный загрузчик, устанавливающийся непосредственно с Линукса и записывающий все данные на первый раздел диска (MBR).

Сам rescue mode является отличительной чертой GRUB 2 от его предыдущей версии. Этот режим запускается, если программе-загрузчику не удалось найти файл «grub.cfg» либо не удалось передать управление в kernel (ядро). В итоге не удаётся найти загрузочные файлы и запустить операционную систему. Именно тогда и возникает ошибка.

Следуйте инструкциям ниже, чтобы узнать, как решить проблему с GRUB

Способ 1

Что делать в случае ошибки unknown filesystem grub-rescue? Перед вами окно, в котором можно использовать только 4 команды, их вполне достаточно, чтобы исправить все проблемы и успешно загрузиться:

  • ls — позволяет вывести всё содержимое;
  • set — применяется для установки переменных;
  • unset — очищает переменную;
  • insmod — необходима для загрузки модулей.

Также можно сделать доступным ряд других команд. Сделать их доступными можно, загрузив модуль «normal». Для этого пропишите:

После этого станут доступны:

  • dump — для очистки памяти;
  • exit — команда выхода из загрузчика;
  • chainloader — необходима, чтобы указать последующей команде boot передать управление цепочечному загрузчику;
  • kfreebsd — несколько команд, позволяющих загрузить ядро FreeBSD, его модули;
  • rmmod — позволяет выгрузить указанный модуль ядра;
  • multiboot.

Первым делом нужно отыскать модули, чтобы загрузить их. Для этого введите:

Результатом выполнения команды будет следующее:

(hd0) (hd0,msdos3) (hd0,msdos2) (hd0,msdos1) (hd1) (hd1,msdos2) (hd1,msdos1)

Из этого можно сделать вывод, что загрузчик не может определить файловые системы дисков, поэтому определяет их как msdos. Теперь необходимо угадать видимые диски. В конкретном примере перед вами два диска: hd0 (с тремя разделами) и hd1 (с двумя разделами). Допустим, вы знаете, что Linux инсталлирован на диск, который имеет три раздела. В таком случае вам нужен диск с индексом «0».

GRUB даёт названия разделам в обратном порядке. В связи с этим, неясно как трактовать запись: «(hd0,msdos3)». Ведь можно посчитать это как первым разделом, так и третьим. К счастью, из этой ситуации можно выйти при помощи такого синтаксиса команды: «(hd0,1)». Обратите внимание, что в программе-загрузчике GRUB отсчёт дисков идёт с 0, а разделов с 1.

Допустим, что Линукс хранится в первом разделе, тогда он будет обозначаться (hd0,1). В этом случае команда, которую необходимо прописать, будет иметь вид:

Теперь модули могут быть загружены. Использовать их можно только после загрузки.

После того как вы выбрали нужный диск, проверьте содержится ли там то, что нужно. Для этого пропишите:

В результате выполнения на экране появится список md файлов.

После этого загрузчик будет переведён в режим полной функциональности. Затем автоматически будут найдены разделы с операционной системой, и откроется меню программы.

Теперь остаётся загрузить Linux. Делается это при помощи команды:

Способ 2

Всё сильно упрощается, если использовать Live CD – загрузочный диск с системой Linux. Он может быть записан на флешке, на внешнем винчестере или на обычном диске – это неважно, главное, чтобы с него можно было загрузить компьютер.

После загрузки Linux стандартным способом устанавливается бесплатная утилита Boot Repair. Она предназначена именно для устранения ошибок загрузки с помощью загрузчика Grub и очень проста в использовании – достаточно кликнуть по кнопке.

Заметим, что иметь Live CD для линуксоида всегда полезно и даже необходимо. Это зачастую избавляет от множества проблем, так как позволяет загрузить полноценную систему с внешнего носителя и использовать весь её инструментарий. Скачать такой диск с любой версией Linux не представляет сложностей, в комплекте обычно идёт инструкция по записи его на флешку.

После выполнения всех этих действий ошибка будет устранена. Пишите в комментариях была ли полезна для вас эта статья и задавайте любые интересующие вопросы по рассмотренной теме.

Источник

Восстановление загрузчика GRUB в Linux

Загрузчик GRUB является универсальным, гибким и достаточно надёжным инструментом для организации загрузки операционных систем (ОС). Однако при наличии некоторых обстоятельств и факторов. От которых не застрахована ни одна система. Могут возникать сбои, в результате которых загрузка системы может быть некорректной или вовсе невозможной. Если в данном случае точно установлено, что система не загружается из-за неработоспособности самого загрузчика. То в данной ситуации далеко не всё так сложно и безнадёжно. Как может показаться некоторым неопытным пользователям или системным администраторам. В большинстве случаев загрузку системы можно довольно быстро и относительно легко восстановить, не прибегая к переустановке системы. Для этого существуют давно проверенные способы, о которых будет рассказано в данной статье.

Читайте также:  Dicom viewer mac os free

Почему «ломается» загрузчик GRUB?

Естественно, само по себе ничего не происходит. Если «сломалась» загрузка GRUB – значит что-то на это повлияло. Очень часто в подобных ситуациях пользователи говорят, что системную конфигурацию не изменяли, а GRUB вдруг перестал работать. И они отчасти правы.

На самом деле GRUB довольно чувствителен к любому изменению как своей, так и системной конфигурации, каким бы универсальным и удобным он ни был. Так, например, изменение идентификатора раздела, хранящего ядра (/boot), уже приведёт к невозможности загрузки системы. И GRUB здесь и ни причём. Нужно искать причину, по которой изменился идентификатор раздела. А они могут быть самыми разными. К примеру, даже если компьютер долгое время не использовался и на его платы не подавалось питание. То это также может быть причиной сброса некоторых настроек BIOS (по причине севшей батареи). Что может привести при последующем после длительного перерыва включении переопределению параметров оборудования. От которых зависит, в некоторых случаях, и идентификатор раздела. Это лишь одна из причин неработоспособности GRUB, самая неочевидная, которую не могут предусмотреть ни разработчики GRUB, ни создатели системных плат.

Наличие ошибок на разделах диска, человеческий фактор (особенно среди малоопытных пользователей) также очень часто являются причиной неработоспособности GRUB. Главное, что нужно понимать — это то, что в большинстве случаев причиной является внешний фактор. A GRUB – это довольно уязвимое место, чувствительное практически к любым внешним воздействиям, поскольку это программная среда, организующая передачу управления компьютером от BIOS (UEFI) к ОС.

Способы восстановления GRUB

В данной статье будут рассмотрены два самых эффективных способа восстановления GRUB:

  • с помощью LiveCD/DVD – самый «народный» метод, с ним вполне справляются новички;
  • работа в командной консоли GRUB – ручная загрузка системы и восстановление GRUB «родной» системной среды, очень полезно, когда нет возможности воспользоваться LiveCD/DVD или другим загрузочным устройством.

Как нетрудно догадаться, восстановление GRUB напрямую связано с загрузкой системы. Основная работа по восстановлению именно в этом и заключается — загрузить родную системную среду альтернативными способами или вручную. Далее, в подавляющем большинстве случаев, восстановление GRUB осуществляется одной командой:

Существуют также и другие команды:

Последние стоит использовать, если не помогла команда grub-update. Первая из них устанавливает сам загрузчик GRUB на указанное устройство (не на раздел!). В данном случае вместо sdN может быть sda, sdb, и т. д. Но никак не sda1, sdb2 (т. е. на разделы — числовой индекс в конце означает номер раздела на устройстве) и т. д. — это очень важно, поскольку GRUB устанавливается только на устройство.

Вторая команда создаёт конфигурационный файл GRUB исходя из текущей конфигурации системы. Анализируется информация о количестве имеющихся в системе ядер, их версий и т. д. В результате формируется оптимальная и безопасная конфигурация загрузки системы. Если ядер несколько, то будет сформирован список, который может быть доступен (в меню загрузки GRUB) для выбора определенного ядра для загрузки. По-умолчанию GRUB загружает ядро самой свежей версии.

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

Примечание: вместо команд grub-install и grub-mkconfig могут использоваться команды grub2-install и grub2-mkconfig соответственно. Это зависит от используемой системы (дистрибутива).

Загрузка и восстановление с помощью LiveCD

При использовании любого из альтернативных вариантов загрузки «родной» системы очень полезно сначала узнать (или убедиться), с какого устройства происходит загрузка. Необходимо заранее это выяснить в настройках BIOS компьютера. Это необходимо, если придётся не просто обновить конфигурацию загрузчика, а полностью его переустановить. А для этого очень желательно устанавливать его на то устройство, которому из BIOS передаётся управление для дальнейшей загрузки ОС. Для BIOS материнских плат MSI это выглядит примерно следующим образом:

Рис. 1: BIOS MSI — просмотр и настройка приоритета устройств для загрузки системы.

Как можно видеть, для данной системы загрузочным устройством является SSD-накопитель «Samsung SSD 860 EVO 250 GB». А пока это наименование можно запомнить или где-нибудь записать.

Теперь можно загрузиться с любого Live-образа используя для этого оптический CD/DVD-диск или накопитель USB-Flash. Опуская технические подробности, важно заметить, что для этого должны быть сделаны соответствующие настройки в BIOS компьютера. В качестве Live-образа рекомендуется использовать ту же систему, что и установлена на компьютере.
Итак, загрузившись в Live-режиме, первым делом следует запустить командную консоль. Далее, необходимо определить корневой раздел системы, для которой нужно восстановить загрузчик. Это нужно, чтобы войти в программную среду «родной» системы из непосредственно Live-режима и использовать весь доступный инструментарий, в том числе и команды по восстановлению GRUB.

Монтирование корневого и загрузочного раделов

С помощью команды fdisk определяем какой раздел и на каком устройстве используется родной системой как корневой:

Как можно видеть, в системе два диска — sda и sdb. Тут нужно сориентироваться и вспомнить, как размечался диск изначально при установке системы. И определить по данным вывода, какой раздел является корневым. В данном случае это раздел sda2. Его теперь нужно примонтировать командой mount:

Необходимо также примонтировать и раздел /boot. Но очень важно заметить, что если в качестве /boot используется отдельный раздел (а не подкаталог в корневом разделе, как в большинстве современных дистрибутивов, например Ubuntu), то его монтирование будет выглядеть следующим образом:

В данном случае последняя команда приведена условно, как пример. На самом деле файлы загрузчика для данного примера хранятся в подкаталоге /boot, который уже был примонтирован от sda2, и поэтому в последней команде в данном случае нет необходимости.

Подготовка программной среды для работы

Поскольку в Live-режиме загружено и работает ядро Live-системы, то оно же будет использоваться и для работы с примонтированными разделами (корневой и /boot). Но для этого необходимо к корневому разделу родной системы (которая уже смонтирована в /mnt) также примонтировать и другие файловые системы (ФС), без которых ядро Live-системы не сможет корректно работать — /sys, /dev и /proc, они же необходимы для взаимодействия с ядром. Другими словами, загруженное из Live-образа ядро нужно настроить на полноценную работу с корневой ФС родной системы, добавив к ней ФС из Live-системы:

Читайте также:  Клавиатурный шпион для mac os

Далее необходимо определить программное окружение среды, указав каталог /mnt и интерпретатор команд:

Эта команда указывает, где должны выполняться команды и какое программное окружение для этого должно использоваться. В данном случае, теперь ядро Live-образа может полноценно работать с ФС родной системы. Используя все её пакеты, команды, файлы и прочие доступные ресурсы.

Восстановление загрузчика

Теперь нужно обновить MBR (главную загрузочную запись) диска, установив на него загрузчик GRUB. Здесь и нужно вспомнить, какой диск является загрузочным, исходя из конфигурации BIOS. Поскольку ранее это уже было определено, то теперь остаётся узнать, как это устройство обозначается в системе. Для этого полезно выполнить следующий скрипт:

Данный скрипт отработает, если в родной системе установлена утилита hdparm. Но поскольку в большинстве Linux-дистрибутивов она предустановлена и доступна «из коробки», то беспокоиться не о чем.

Как можно видеть, устройству «Samsung SSD 860 EVO 250GB», который ранее был определён как загрузочный, соответствует его определение в системе как /dev/sda . Именно на него и следует производить установку GRUB:

Создание файла конфигурации GRUB:

Ну и напоследок можно выполнить:

Если при выполнении команды grub-install возникают какие-либо ошибки, то можно выполнить её с ключом —recheck. Если же всё нормально, то можно выйти из режима chroot командой:

Далее необходимо отмонтировать все ранее примонтированные устройства и ФС:

Если /boot монтировался из отдельного раздела, то его также необходимо отмонтировать:

Ну и наконец, необходимо отмонтировать также и корневой раздел:

Далее можно перезагрузиться без Live-образа (сделав соответствующие настройки в BIOS и снова указав в качестве загрузочного «Samsung SSD 860 EVO 250GB»). И проверить, что GRUB загружает родную систему.

Загрузка из командной консоли GRUB

Иногда бывает так, что GRUB установлен, но в результате каких-либо сбоев его рабочая конфигурация была повреждена и загрузка ОС в штатном режиме невозможна. Обычно в таких случаях в меню GRUB появляются сообщения об ошибках с приглашением перейти в режим командной консоли загрузчика по нажатию клавиши «C». В этом режиме GRUB предоставляет довольно большой набор полезных команд. С помощью которых можно, в частности произвести ручную загрузку системы. Эти же команды, кстати, выполняются загрузчиком при чтении его файла конфигурации.

Рис. 2: Внешний вид командной консоли GRUB.

Итак, первое, что нужно сделать после входа в командную консоль GRUB – это выполнить команду ls. В результате будет выведен список всех доступных в системе дисков и разделов.

Определение и выбор раздела загрузки

Однако, обозначает GRUB разделы по-своему. Например вместо привычного sda4 будет (hd0,gpt2), а вместо sdb1 будет (hd1,gpt3). Таким образом, как можно видеть, устройства в формате GRUB нумеруются цифрами, так же как и разделы. Но разделы нумеруются в обратном порядке. Например на устройстве sda с пятью разделами, разделу sda2 в формате GRUB будет соответствовать запись (hd0,gpt4), sda1 – (hd0,gpt5) и т. д. Этот принцип можно и нужно брать на вооружение при работе с разделами в командной консоли GRUB. Ведь для ручной загрузки системы необходимо правильно определить и указать корневой раздел или раздел /boot .

Примечание: префикс «gpt» в обозначении разделов в формате GRUB может быть другим. Например «msdos» (когда GRUB не смог определить тип разметки), но в данном примере разделы размечены в формате GPT.

Если известно, что /boot находится на разделе sda2, у которого пять разделов. То с большой степенью вероятности это будет (hd0,4) в формате GRUB. Префикс «gpt» для раздела можно не указывать. Ну а если же изначальную структуру разделов вспомнить или определить не представляется возможным. То остаётся только перебирать или угадывать.
Команда ls выведет примерно следующее:

Эта информация и должна помочь быстрее угадать, на каком разделе находится /boot .

Важно заметить, что если «угадано» верно, то будет загружена родная система так, как она загружалась в штатном режиме.

Ручная загрузка ядра

Пусть для ручной загрузки выбран раздел (hd0,4) — т. е. sda2. Нужно задать этот раздел в качестве корневой файловой системы:

Подключение модулей для работы с ФС Ext2/3/4:

Для других типов ФС нужно подключать соответствующие модули: bfs, xfs или zfs.
Подключение модуля normal для полноценного запуска и работы GRUB:

Если после этих команд штатная загрузка не начнётся, то остаётся её продолжить вручную. Для этого нужно попытаться найти доступные ядра и выбрать нужное для загрузки. Для этого следует ввести команду linux /boot/vmlinuz и нажать клавишу :

Рис. 3: Определение доступных ядер и выбор нужного для загрузки с помощью команды «linux».

Как можно видеть, команда linux обнаружила в системе два ядра. И автоматически подготовила следующую команду для выбора нужного. Остаётся только дописать «1-generic», если нужно загрузить ядро версии 4.18.0-21-generic. Указать корневой раздел и выполнить команду:

Важно заметить, что указывается тот же корневой раздел, что и в команде set root, только уже в классическом формате.

Далее, нужно указать соответствующий образ ядра. В котором содержится всё необходимое для инициализации и создания программной среды для его работы, с помощью команды initrd:

Теперь всё готово, можно выполнить загрузку:

Если всё сделано правильно и выбран нужный раздел загрузки, то будет загружена «родная» система так, как это происходит в штатном режиме. Ведь всё, что было проделано вручную — это основной набор команд, хранящихся в файле /boot/grub/grub.cf g и выполняемых GRUB автоматически.

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

Заключение

В заключение необходимо напомнить, что были рассмотрены наиболее распространённые неполадки в работе загрузчика GRUB, а также причины их появления. На примерах были подробно рассмотрены основные и самые доступные способы восстановления работы GRUB.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Источник

Оцените статью