Grub

Введение

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

Machine UUID...
Booting from Hard Disk...
error: disk 'lvmid/....' not found.
Entering rescue mode...
grub rescue>

Для тех, кто еще не знаком с подобным, поясню. Начальный загрузчик не смог найти /boot раздел для продолжения загрузки. Вместо этого он сообщил, что раздел с указанным lvmid, где располагается boot, он не видит и дальше загрузиться не может. Машина находится в режиме grub rescue. Причин появления этого режима может быть много. Мне всегда приходится с чем-то новым сталкиваться, но методика решения проблемы примерно одна, и я дальше о ней расскажу. А потом поясню, что было с этой конкретной виртуалкой.

grub rescue – что делать?

Итак, мы находимся консоли загрузчика. Она имеет небольшой командный интерпретатор наподобие Bash. Список всех доступных команд можно получить, набрав:

Введите команду для просмотра существующих разделов:

В данном примере всего один раздел msdos1 на жёстком диске hd0.

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

Находим файл grub.cfg значит всё в порядке, продолжаем. Если каталог не обнаружен, то перебираем остальные разделы дисков пока не найдём.

Следующая команда создаёт префикс для каталога загрузчика:

Установим раздел в качестве корневого:

После успешной загрузки в Linux не забудьте переустановить загрузчик командой:

(вместо «_» введите букву загрузочного жёсткого диска).

Далее выполните команду обновления конфигурации файла grub.cfg:

Обычно grub2 автоматически определяет установленные системы, в том числе Windows, и добавляет их в список загрузки.

Восстановление ubuntu с флешки

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

Лучше подготовить USB или CD носитель с Ubuntu той же версии и разрядности что и восстанавливаемая система. Я покажу на примере системы Ubuntu 18.04 LTS x64. Загрузитесь в Live режиме и откройте терминал комбинацией Ctrl+Alt+T.

Для удобства сразу активируйте права суперпользователя root. Знак минус в конце команды означает перемещение в домашний каталог:

Теперь нужно посмотреть список дисков и разделов программой fdisk:

Обнаруживаем раздел с установленной системой Linux. В этом примере раздел /dev/sda1 единственный, он же корневой и загрузочный.

ВНИМАНИЕ: выбирайте раздел аккуратно, буква диска может отличаться от моих примеров. Не потеряйте свои данные!. Смонтируем его в каталог /mnt/:

Смонтируем его в каталог /mnt/:

Убедитесь, что каталог /boot/ находится на этом же разделе диска выполнив команду:

В случае отсутствия каталога монтируйте его отдельно. Для этого нужно найти раздел в результате вывода утилиты fdisk (на скриншоте выше) и смонтировать командой:

X = номер вашего раздела с файлами каталога /boot/.

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

Переходим в окружение chroot, то есть заходим под пользователем root в систему, установленную на жёстком диске:

Всё, мы в системе. Можно устанавливать загрузчик и обновлять его конфигурацию. Будьте внимательны, используется именно корневой раздел диска /dev/sda без цифры:

Посмотрите, чтобы не было ошибок в результате выполнения команд. Далее набираем один раз exit, или комбинацию Ctrl+D и выходим в консоль Live системы.

На всякий случай размонтируем корректно разделы и перезагружаемся:

Процедура восстановления загрузчика grub2 на этом завершена.

Послеустановочный GRUB: настройка и полезный в работе софт

Основным конфигурационным файлом в GRUB2, в отличие от предыдущей версии Legacy, является не /boot/grub/menu.lst
, а уже /boot/grub/grub.cfg.
Однако напрямую его редактировать бессмысленно — он будете генерироваться с каждым сохранённым изменением в файле настроек /etc/default/grub и в директории скриптов /etc/grub.d.

В /etc/default/grub
настройка в основном ограничена изменением стандартного пункта загрузки и/или времени показа меню:

  • За первый пункт изменений отвечает параметр GRUB_DEFAULT
    , значением которого обозначается номер пункта в меню загрузки. Выбирая какой-либо другой пункт, пользователь должен знать его очерёдность из общего списка (для этого нужно просмотреть содержимое /boot/grub/grub.cfg
    и найти по счёту нужную запись). При этом не стоит забывать правила нумерации: первому пункту присваивается значение 0, второму — 1, третьему — 2 и так далее.
  • За задержку отображения меню загрузки отвечает параметр GRUB_TIMEOUT
    , чьё присвоенное значение в кавычках обозначает количество секунд, в течение которых эта заставка появится. В редактировании этого параметра есть одна хитрая особенность: выставив значение «-1», заставка будет висеть ровно до тех пор, пока пользователь не выберет какой-либо пункт.

Набор скриптов в /etc/grub.d
находят на компьютере все установленные системы и ядра, формируя загрузочное меню в grub.cfg. За поиск ядер и других ОС соответственно отвечают два основных: 10_linux и 30_os-prober

Файл 40_custom позволяет изменить GRUB путём добавления собственных пунктов загрузки, что полезно для работы с особыми типами запуска системы (обратите внимание, что при любых изменениях он должен заканчиваться пустой строкой, иначе последний пункт загрузки из всех предложенных банально не будет отображён)

Однако ещё более простой способ отредактировать GRUB в системе Ubuntu — утилита Grub-Customizer. Благодаря своей простоте и интуитивно понятному интерфейсу, это наилучший вариант для настройки загрузчика, более всего подходящий неопытным новичкам. Для установки запускаем терминал (Ctrl+Alt+T), затем поочерёдно вводим в нём следующие команды:

Sudo add-apt-repository ppa:danielrichter2007/grub-customizer,

Sudo add-get update,

Sudo add-get install grub-customizer.

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

  • List configuration
    — настройки меню при загрузке системы. Тут осуществляется изменение очерёдность его пунктов.
  • Основные настройки
    — выбор системы, загружаемой по умолчанию, а также определение времени ожидания.
  • Внешний вид — редактирование внешнего оформления загрузочного меню.

Помимо всего разнообразия настроек, пользователю непременно стоит обратить внимание и на отлично зарекомендовавший себя софт для работы с GRUB, настройка и диагностика которого станет существенно комфортнее:

  • Super Grub Disk
    — простой и удобный инструмент для быстрого восстановления загрузчика. При этом умеет работать не только лишь с GRUB и LILO, но даже и с самой Windows. Запускается с CD, флешки или же дискеты.
  • GParted
    — редактор разделов дисковых разделов, запускающийся непосредственно с CD. С её помощью можно проводить такие операции с разделами и файловыми системами на них, как: создание, удаление, изменение размера, проверка, перемещение и копирование.
  • SystemRescueCD
    — дистрибутив Linux, специальным образом предназначенный для аварийного восстановления.
  • TestDisk
    — утилита, позволяющая диагностировать и восстанавливать как отдельные разделы, так и загрузочные диски целиком.

7 ответов

Как уже указывал Гилл, в grub rescue есть несколько команд, которые позволяют загружать модули (например, с диска спасения grub).

В моем случае загрузка из другого источника была невозможна — единственным вариантом было удаление hdd с компьютера и использование дешевого внешнего hd-футляра для подключения диска к другому компьютеру через USB. На этом компьютере я использовал MbrFix , чтобы исправить mbr.

Когда GRUB ушел, так же как и возможность загрузки в Windows. Теперь вам нужно будет загрузиться с компакт-диска Windows, чтобы восстановить главную загрузочную запись (MBR). Вы также можете использовать другие загрузочные компакт-диски, такие как Конечный загрузочный компакт-диск для Windows , Bart PE или Загрузочный компакт-диск Hiren , если у вас нет средств установки Windows. Вот шаги:

Загрузите с компакт-диска Windows и выберите «Восстановить». Кроме того, загрузитесь с одного из других вышеупомянутых загрузочных компакт-дисков и запустите командную строку.

Для компьютеров под управлением Windows 8:

Добавьте дополнительные учебники для операционных систем.

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

Еще один инструмент для добавления к тому, что должен сказать Ricky и preufsumme: boot-repair-disk .

Вы можете использовать grub rescue , чтобы снова запустить Windows.

Список команд будет похож на

NB: для этого требуется наличие модулей, которые реализуют все эти команды!

Отчитавшись над комментариями о спасении grub, похоже, что это сработает, тогда вы можете попасть в окна и переустановить загрузчик Windows в MBR. Это работает, однако, если ваш раздел Windows является первым разделом на диске, и он находится на первом диске, который видит компьютер. Если у вас несколько дисков или дисков SATA вместо дисков PATA, вам может потребоваться использовать другую команду для rootnoverify (попробуйте sd0 вместо hd0)

Установка Grub на флешку

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

И создать конфигурационный файл:

Но если вам нужен загрузчик без операционной системы, то дело немного усложняется. Вы не можете использовать просто grub-install, а конфигурация вообще не будет создана, так как утилита не понимает где находятся файлы загрузчика и файлы конфигурации для него. Но есть решение.

Важно заметить, что при любом способе установки загрузчика, желательно, чтобы на флешке использовалась таблица разделов MBR. Конечно, я не встречал флешек с GPT, но вы сами можете ее создать при желании, а тогда с установкой загрузчика возникнут проблемы

Второе, что важно заметить, фшелку желательно отформатировать в файловую систему fat32. Это важно, чтобы там можно было разместить файлы Grub. Потому что если флешка будет форматирована в NTFS, то ничего не выйдет, а в ext4 — то вы не сможете подключить ее в Windows и использовать для обмена файлами.

Далее подключите флешку в какую-нибудь папку, например, mnt:

Имя устройства /dev/sdb1 — это адрес первого раздела на вашей флешке. Обычно там есть только один раздел, так и должно быть. Если больше, то берите первый. А имя флешки может отличаться — sdb, sdc, sdd или другие. Смотрите как флешка называется у вас с помощью fdisk:

Когда устройство подключено мы можем перейти к установке загрузчика:

Здесь мы указываем параметр —root-directory, это та папка, которая будет считаться корнем системы, и откуда будут браться файлы загрузчика при старте. Установщик автоматически скопирует их туда. Устройство /dev/sdc — ваша флешка. После того, как установка будет завершена, можно перейти к настройке пунктов меню. Забегая наперед, если эта команда не работает, используйте опцию —boot-directory вместе с —root-directory, разные версии Grub работают по разному:

Теперь нужно создать конфигурационный файл. Если вы используете grub-mkconfig, то получите такое же меню, как в вашей основной системе. Меня это вполне устраивает, только укажите правильное расположение файла, в папке /mnt:

Теперь нам осталось протестировать как все работает. Для этого лучше использовать qemu:

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *