Что делать при ошибке grub rescue?

Перезагрузка компьютера

Выходим из окружения chroot, для этого выполняем команду:

Отмонтируем все разделы, которые мы примонтировали:

Если вы монтировали boot-раздел, то его тоже нужно отмонтировать:

Если вы монтировали EFI-раздел, отмонтируем:

Отмонтируем корневой раздел:

Перезагружаем компьютер. Для этого выполняем команду:

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

  • удерживать клавишу Shift, если у вас классический BIOS;
  • нажать Esc, если у вас UEFI.

Если у вас, при выполнении grub-update, не определился Windows и не был добавлен в меню GRUB, то уже загрузившись в вашу систему Linux (не LiveCD), откройте терминал и выполните:

Мне это помололо на компьютере, который использует UEFI.

Очередность действий

Если нужен суперфункциональный компьютер с работоспособным загрузчиком, вам заранее нужно побеспокоиться о правильной последовательности установки каждой из ОС. Ведь если поставить ту же Vist’у последней, то загрузчик Ubuntu, GRUB, будет стерт с MBR. XP просто не устанавливается поверх Vista, посему она не может быть оставлена напоследок. Исходя из сказанного, все действия производятся на компьютере в следующем порядке:

1) Windows XP. Устанавливается на диск с загрузочным сектором. Все загрузчики в последующем будут автоматически устанавливаться на раздел с этой меткой. Как узнать, на каком диске она находится? В этом помогут специализированные программы для работы с дисковой подсистемой — Norton Partition Manager, Acronis Disc Director, Acronis Partition Expert и многие другие.

Диск, отмеченный как «Active», обязательно имеет загрузочный сектор.

2) Windows Vista. Устанавливаем ее на диск, отличный от того, где расположена XP. После инсталляции Vista в загрузочном меню должны присутствовать два пункта: собственно, Vista и «Earlier operating systems» («Предыдущая операционная система»), под которой подразумевается XP. То есть, если XP была установлена до Vista, она успешно будет определена и добавлена в список.

3) Ubuntu (это правило применимо к любой ОС семейства Linux). Поскольку данная операционная система ставится последней, то загрузчик, устанавливаемый ею, станет основным. На последнем этапе установки Ubuntu не меняйте настройки (кнопка «Advanced»), чтобы GRUB, как и положено, установился на диск с загрузочной меткой.

Нужно сказать, GRUB весьма «толерантен» по отношению к своим «конкурентам»: он корректно определяет имеющиеся на компьютере системы и вносит их в собственный список. При наличии XP и Vista GRUB не удаляет загрузчик Windows. И при выборе пункта меню, который идет после надписи «Other operating systems» («Windows Vista/Longhorn loader»), появится второй экран, где можно выбрать одну из ОС Windows.

Впоследствии созданный GRUB’ом список можно подкорректировать, поменяв названия, удалив лишние пункты загрузки или сменив их очередность. Благо, документация к GRUB присутствует в достаточном объеме. Общими словами, это отлично конфигурируемый, документированный, user-friendly (дружелюбный по отношению к пользователю) загрузчик.

Где скачать и как установить Груб

Исходники GRUB можно скачать с сервера ftp://alpha.gnu.org/pub/gnu/grub. 
Далее распакуйте скачанный дистрибутив, используя команду “tar -xvzf filename.tar.gz”. Если взять в расчет название файла grub-
0.5.96.1.tar.gz, перечень операций будет выглядеть следующим образом: 

Итак, мы распаковали содержимое в директорию под названием “grub-0.5.96.1”. Выполняем следующие шаги:

Можно изменить определенные опции в процессе компиляции: 

При этом отобразятся все доступные опции. Можно использовать префикс –enable или -
disable
, что обеспечивает поддержку определенных устройств загрузчиком.  

Чтобы начать компилирование, введите

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

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

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

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

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

Что все это значит

Четыре первые строки в файле menu.lst выполняют следующие функции.

Команда Timeout = 10 устанавливает временной промежуток, в течении которого загрузчик Grub будет ожидать действий пользователя, которые укажут ему, какой пункт меню загружать. Если он не дождется такого указания в течении установленного времени, то будет произведена загрузка пункта меню, установленного по умолчанию. А если такой не определен в конфигурационном файле, то первого по списку пункта меню. Чтобы остановить счетчик времени, достаточно нажать любую клавишу на клавиатуре.

Команда Color white/blue yellow/blue устанавливает цветовую раскраску текстового меню (в которое можно войти, нажав клавишу «Esc», если в данный момент вы находитесь в графическом меню Grub. Просто иногда бывают случаи, когда вам потребуется войти в текстовое меню загрузчика). Первая пара значений задает цвета переднего (foreground) и заднего (background) фона всего меню, а вторая пара служит для установки цветов выделенного пункта меню.

Команда gfxmenu (hd0,0)/boot/gfxmenu указывает загрузчику Grub, где располагается графическое меню.

Команда default 0 устанавливает пункт меню для загрузки по умолчанию, при этом отсчет ведется с нуля.

Для того, чтобы улучшить слишком упрощенный фрагмент строфы в конфигурационном файле, мы добавим несколько параметров в строку kernel.

Добавление параметра aplash=silent vga=788 в конец этой строки позволит установленной графической теме Plymouth скрыть строки текста, появляющиеся на экране монитора при загрузке системы. Число 788 является разрешением монитора, которое наиболее оптимально для большинства компьютеров.

Если вы намереваетесь использовать режим гибернации («спящий режим») при выключении своей машины, вам необходимо указать загрузчику Grub, где находятся данные, нужные для восстановления сессии. Такие данные хранятся на разделе подкачки (swap), поэтому этот раздел должен быть немного больше оперативной памяти (ОЗУ) компьютера по размеру. В этом случае режим гибернации будет выполняться без ошибок. Если, к примеру, раздел подкачки на вашем жестком диске располагается по адресу /dev/sdb1, то в конце строки kernel необходимо добавить параметр resume=/dev/sdb1. Мы можем указать раздел таким образом, так как Grub распознает файловые системы и записи устройств к тому моменту, когда они появятся в этом конфигурационном файле.

Установка PCLinuxOS по умолчанию предлагает три пункта меню загрузчика.

  • Первый пункт предоставляет полностью графическое меню загрузки, вплоть до окна входа в систему.
  • Второй пункт называется linux-nonfb или каким-либо иным похожим образом. Он выполняет загрузку системы без графической заставки, что позволяет видеть все системные сообщения во время ее загрузки. Такой способ может быть полезен при неполадках в системе. Процесс загрузки можно приостановить в любой момент нажатием клавиши ScrollLock на клавиатуре.
  • Последний третий пункт называется failsafe. Фактически он также служит для контроля неполадок в системе. В этом режиме система загружается в однопользовательскую командную оболочку, внутри которой можно выполнять некоторые административные задачи, такие как проверка файловой системы или смена пароля root. Когда все необходимые задачи будут выполнены, вводим в командной строке init 5, что вернет нас обратно к окну входа в систему.

Все три вышеназванных режима можно включить, добавив одну из перечисленных ниже команд в строку kernel между параметром kernel и параметром корневой раздел root:

BOOT_IMAGE = linux BOOT_IMAGE = linux-nonfb BOOT_IMAGE = failsafe

Когда вы добавляете в конфигурационный файл Grub новый пункт меню, проверьте его работоспособность. Если система успешно загружается через этот пункт, вы можете удалить старый, но перед этим сделайте резервную копию файла так, чтобы в любой момент он был вам доступен. Если перед строкой вы поставите знак решетки #, то пункт меню, в котором находится эта строка, не будет отображаться при загрузке. Grub воспринимает любую строку, начинающуюся с символа # как комментарий и не выполняет ее.

Параметры ядра

Программы загрузчиков LILO и GRUB позволяют передавать ядру параметры ко­мандной строки. Как правило, эти параметры изменяют значения параметров ядра, вынуждают его опросить конкретные устройства, указывают путь поиска демона или назначают конкретное корневое устройство. Несколько примеров этих параметров приведены в табл. 2.

Таблица 2. Примеры параметров ядра времени выполнения 

Параметр

Назначение
Сообщает ядру путь к демону
Заставляет ядро запускать только интерпретатор ; используется при восстановлении системы в случае сбоев
Сообщает ядру о том, что корневым является устройство
Задает режим однопользовательской загрузки

Восстановление в rescue mode

При отсутствии загрузочного диска, можно восстановить Grub из его консоли. Восстановление происходит следующим образом: сначала нужно подгрузить все модули, чтобы стала доступна вся функциональность Grub, а затем уже запуститься с нужного раздела.
Как известно, Grub состоит из двух частей.
Первая часть записана в MBR диска. Она содержит базовую функциональность, то есть в ней есть консоль в rescue mode и ничего больше. Вначале нужно определить, на каком разделе находится вторая часть груба (она лежит в каталоге /boot/grub), подгрузить недостающие модули. И только потом можно будет дать команду запуска с нужного раздела.
В rescue mode доступно всего четыре команды:

 ls
set
unset
insmod

Вначале следует дать команду:

ls

В ответ она выведет, например, следующее:

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

Иногда Grub может неправильно опеределить, какие файловые системы находятся на разделах дисков. В данном случае определяет их как msdos.
Нам нужно постараться угадать, какие диски мы видим. В данном случае видно два диска. Диск с индексом 0 содержит три раздела, диск с индексом 1 содержит два раздела. Зная структуру своих дисков несложно определить нужный диск.

Grub называет разделы в обратном порядке. И становится непонятно, что имеется в виду под (hd0,msdos3) — первый раздел или третий? Тут можно выкрутиться, использовав синтаксис (hd0,1). Нужно помнить, что в Grub счет дисков начинается с 0, а счет разделов — с 1.
Предположим, что Линукс установлен на первый диск в первый раздел, то есть (hd0,1).
Даем команду:

set prefix=(hd0,1)/boot/grub 
set root=(hd0,1)

Этими командами мы указываем использовать диск (hd0,1) для дальнейших команд. После чего нужно проверить, действительно ли на этом разделе есть то, что нам нужно. Даем команду:

ls /boot/grub

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

insmod ext2
insmod normal
normal

Проверьте правильность написания первой команды для файловых систем ext3 и ext4

Если ОС расположена на разделе, отформатированном в btrfs,
то выполняем следующие команды:

set prefix=(hd0,1)/@/boot/grub
set root=(hd0,1)

подгружаем модули:

insmod btrfs
insmod normal

запускаем GRUB:

normal

После чего Grub перейдёт в полнофункциональный режим. Он автоматически найдет все операционки, которые можно подгружать, и покажет своё Grub-меню.

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

grub-install /dev/sdX

Где sdX, диск, на который нужно установить Grub.

Восстановление с помощью LiveCD/USB

Первый способ

gnome-terminal

Далее необходимо узнать Вашу таблицу разделов. Используйте команду:

sudo fdisk -l

На экран должна быть выведена примерно такая таблица:

/dev/sda3     239616 233392328 233152713 111,2G Microsoft basic data
/dev/sda4  233394176 234438655   1044480   510M Windows recovery environment
...
Disk identifier: 0x7d6fe43d

Device     Boot    Start        End    Sectors   Size Id Type
/dev/sdc1  *        2048   29304782   29302735    14G 83 Linux
/dev/sdc2       29304832 1953523711 1924218880 917,6G 83 Linux

Из таблицы видим, что Linux (загрузочный /-корень отмечен звёздочкой) стоит, в нашем случае, на разделе /dev/sdc1.

Теперь подключим этот раздел в /mnt следующей командой (следим за пропусками между кодами и порядковыми номерами разделов):

sudo mount /dev/sdc1 /mnt

Затем, для записи grub в MBR, вводите следующую команду:

sudo grub-install --root-directory=/mnt /dev/sdc

В случае, если нужно только восстановить MBR диска (например, после переустановки Windows), то этого достаточно, закрываем терминал и перезагружаем.

Если нужно обновить и меню grub (например, после установки Windows), то нужно сделать:

sudo update-grub --output=/mnt/boot/grub/grub.cfg

Восстановление закончено!

Восстановление используя chroot

gnome-terminal

Далее необходимо узнать Вашу таблицу разделов. Используйте команду:

sudo fdisk -l

На экран должна быть выведена примерно такая таблица:

/dev/sda1 29 8369 66999082+ 83 Linux
/dev/sda2 * 8370 13995 45190845 7 HPFS/NTFS
/dev/sda3 13996 14593 4803435 5 Extended

Теперь нужно примонтировать Ваш Linux раздел (здесь это sda1) и еще несколько важных директорий:

sudo mount /dev/sda1 /mnt
sudo mount --bind /dev /mnt/dev
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys  /mnt/sys

Если раздел /boot или /var находится отдельно, то Вам необходимо примонтировать их в /mnt/boot и /mnt/var

sudo chroot /mnt

Теперь необходимо установить GRUB, используя команду:

grub-install /dev/sda

Если Вы получили сообщение об ошибке, то используйте команду:

grub-install --recheck /dev/sda

Также в некоторых случаях может помочь вариант:

grub-install --recheck --no-floppy /dev/sda
exit

Теперь необходимо отмонтировать разделы:

sudo umount /mnt/dev
sudo umount /mnt/proc
sudo umount /mnt/sys
sudo umount /mnt

Если Вы монтировали раздел /boot воспользуйтесь командой:

sudo umount /mnt/boot

Затем перезагрузим Ваш компьютер командой:

sudo reboot

При необходимости Вы можете обновить меню загрузчика командой:

sudo update-grub

Ошибка Grub не видит Windows 10

Причин такой ошибки может быть несколько, начиная от того, что система установлена на другом жестком диске, и заканчивая неизвестными глюками пакета os-prober, который и занимается определением операционных систем в Linux. Также, если у вас есть несколько версий Windows на компьютере, то программа может видеть только одну из них.

Сначала можно попытаться сделать наш с Windows раздел более видимым для программы. Для этого примонтируйте его в какую-либо папку. Например, в /mnt/:

sudo mount -t ntfs-3g -o ro /dev/sda1

Я предполагаю, что система Windows установлена на разделе, который определяется в Linux, как /dev/sda1. Дальше запустите утилиту os-prober:

Если программа обнаружит Windows, то вам останется обновить конфигурацию загрузчика Grub:

sudo grub2-mkconfig -o /boot/grub/grub.cfg

Если же этот способ не сработает, а он, скорее всего, не сработает, то вам останется только вручную добавить пункт меню для Windows. Это не самое простое, но зато эффективное решение. Сначала нам нужно узнать UUID раздела диска, на который установлена Windows, например, /dev/sda1:

Затем откройте файл /etc/grub.d/40_custom и добавьте туда такой код:

menuentry «Windows 10» <insmod ntfs set root='(hd0,1)’ search —no-floppy —fs-uuid —set B4A6AEB7A6AE7A0E chainloader +1 >

Если кратко, то здесь мы устанавливаем в качестве корня первый раздел первого диска, а затем указываем загрузчику, что нужно найти раздел с нужным нам UUID. Затем передаем управление загрузчику на этом разделе с помощью chainloader. Дальше осталось обновить конфигурацию Grub:

Мы использовали такой метод потому что теперь настройка не собьется после обновления ядра или другого процесса, инициализирующего обновление конфигурации. Потому что если бы мы добавили эти строки в /boot/grub/grub.cfg, то они были бы перезаписаны если не при первом, то при одном из следующих обновлений системы.

Когда конфигурация обновлена вы можете перезагрузить компьютер и загружать Windows с помощью нового пункта. Таким образом, можно добавить несколько пунктов, только для разных разделов нужно указывать их UUID.

Установка загрузчика Grub в MBR для BIOS

Начнем с самого просто и привычного. Данная инструкция как установить загрузчик Grub подойдет для любого дистрибутива, поскольку команды везде почти одинаковые. Здесь не нужно устанавливать никаких дополнительных пакетов или создавать разделов. Установка Grub на жесткий диск выполняется командой:

sudo grub-install /dev/sda

sudo grub2-install /dev/sda

sudo grub-mkconfig -o /boot/grub/grub.cfg

Готово. По поводу двойки здесь такое же замечание. Если вы хотите установить Grub на флешку в MBR, то тут тоже нет проблем просто примонтируйте флешку и выполните такую команду:

sudo grub-install —root-directory=/mnt/USB/ /dev/sdb

Здесь /mnt/USB — папка, куда была смотирована ваша флешка, а /seb/sdb — сама флешка. Только здесь есть одна проблема, конфигурационный файл придется делать вручную.

Восстановление с помощью LiveCD/USB

Первый способ

Запустите систему с LiveCD/USB и откройте терминал. Для этого можно нажать Alt + F2 и ввести команду:

Далее необходимо узнать Вашу таблицу разделов. Используйте команду:

На экран должна быть выведена примерно такая таблица:

Из таблицы видим, что Linux стоит (в нашем случае) на разделе /dev/sda1

Теперь подключим этот раздел в /mnt следующей командой (следим за пунктуацией, особенно, за пропусками между кодами):

Затем, для записи grub в MBR, вводите следующую команду:

В случае, если нужно только восстановить MBR диска (например, после переустановки Windows), то этого достаточно.

Если нужно обновить и меню grub (например, после установки Windows), то нужно сделать:

Восстановление используя chroot

Запустите систему с LiveCD/USB и откройте терминал. Для этого можно нажать Alt + F2 и ввести команду:

Далее необходимо узнать Вашу таблицу разделов. Используйте команду:

На экран должна быть выведена примерно такая таблица:

Теперь нужно примонтировать Ваш Linux раздел (здесь это sda1) и еще несколько важных директорий:

Теперь перейдем в окружающую среду chroot:

Теперь необходимо установить GRUB, используя команду:

Также в некоторых случаях может помочь вариант:

Если все прошло успешно, выходим из chroot командой:

Теперь необходимо отмонтировать разделы:

Если Вы монтировали раздел /boot воспользуйтесь командой:

Затем перезагрузим Ваш компьютер командой:

При необходимости Вы можете обновить меню загрузчика командой:

Способ первый: утилита Boot Repair

Во-первых, вам нужно добавить репозиторий. Введите:

После установки найдите приложение в меню «Приложения» и кликните, чтобы запустить.

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

Когда утилита завершит работу, вы сможете загрузить свою систему и выбрать либо Windows, либо Linux из меню GRUB. Запуск утилиты также позволит вам изменить или изучить некоторые другие опции, если вам требуется более сложное восстановление загрузки. Кликнув «Restore MBR», вы сможете использовать вкладку MBR.

Если вы застряли, у Ubuntu есть руководство на их сайте.

Boot-Repair

The majority of this guide is devoted to working with the GRUB 2 terminal, which is used to enter commands to attempt to repair a broken bootloader. Boot-Repair is a GUI application which can automatically analyze boot problems and select the proper course of action to repair them. Its simple interface provides beginners as well as experienced Linux users an easy method of repairing the majority of GRUB 2 problems.

Additionally, Boot-Repair contains an automated method to run a boot info script which performs a series of tests and provides a file containing much valuable information regarding the status of the computer’s operating and boot systems. This file can be inspected by community helpers on forums or IRC channels to help diagnose boot problems.

Boot-Repair can be run from a LiveCD or an operating Linux system. To download the package run the following commands:

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

Visit the Boot-Repair community document for more information.

Boot-Repair is available from the Launchpad repositories and can be run from a CD or a working Linux OS.

Использование режима восстановления

В дистрибутивах Linux, построенных на основе Debian (Linux Mint, Ubuntu и т. д.), после завершения загрузки режима восстановления загрузится окно, в котором будет предложен список действий на выбор.
Разберем каждый из этих пунктов:

  • resume — выйти из режима восстановления и продолжить нормальную загрузку системы.
  • clean — автоматическая очистка накопителя, может быть полезна при отсутствии свободного места на жестком диске.
  • dpkg — исправление ошибок в пакетах dpkg (может потребоваться включение сети).
  • failsafeX* — включение графической оболочки
  • fsck — проверка на наличие ошибок смонтированных файловых систем.
  • grub — обновление конфигурации загрузчика grub.
  • network — включить работу сети.
  • root — перейти к консоли, запущенной под пользователем root. Для выполнения различных консольных команд в режиме восстановления, следует выбрать именно этот пункт.
  • system-summary — общая информация о системе.

Добавление параметров ядра в меню GRUB 2

Добавлять параметры ядра можно не только редактируя файл /etc/default/grub, но и в самом меню GRUB 2. Для этого нужно отредактировать выбранный пункт меню нажав клавишу “e”, после чего у вас откроется вот такой редактор:

Добавление параметров загрузки ядра

Опции загрузки добавляются в строке начинающейся с linux, это строка выделена на рисунке выше.

Редактируя здесь параметры ядра можно например сбросить пароль root пользователя в системе. Для этого нужно ro изменить на rw, и дописать init=/bin/bash:

Добавление параметров загрузки ядра

Дальше нажимаем Ctrl+x или F10 для загрузки и попадаем в систему под пользователем root, без ввода пароля.

Осталось только поменять пароль и перезагрузить сервер.

Рейтинг
( Пока оценок нет )
Editor
Editor/ автор статьи

Давно интересуюсь темой. Мне нравится писать о том, в чём разбираюсь.

Понравилась статья? Поделиться с друзьями:
IP-файл
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: