Руководство пользователя GRUB2

Материал из LUWRAIN Wiki
Перейти к: навигация, поиск

Обзор

Grub 2- загрузчик по-умолчанию для большинства операционных систем семейства гну-линукс. После старта компьютера GRUB 2 может предложить как пользовательское меню для ожидания выбора пользователя, так и автоматически передать управление на загрузку ядра ОС. GRUB 2 - прямой потомок GRUB. Он был полностью переписан для предоставления более адаптивной архитектуры и производительности. GRUB 2 является свободным ПО. В этом руководстве описывается версия 1.96 или старше. Отсылки в тексте на прежнюю версию (0.97) выглядят как "GRUB". Для определения установленной у вас версии используйте команду:

grub-install -v

Улучшения

Наиболее важные изменения GRUB 2 по сравнению с оригинальным GRUB включают:

  • Поддержку скриптов с условными определениями и функциями
  • Динамическую загрузку модулей
  • Режим восстановления (Rescue mode)
  • Пользовательские меню
  • Темы
  • Поддержку графических меню и расширенные возможности работы со сплешами
  • Загрузку образов LiveCD ISO прямо с жесткого диска
  • Новую структуру конфигурационных файлов и каталогов
  • Поддержку не-x86 платформ (таких как PowerPC)
  • Универсальную поддержку идентификаторов блочных устройств UUID (а не только в Ubuntu)

GRUB vs GRUB 2

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

  • Если операционная система одна, GRUB 2 после установки операционной системы загрузит ОС до системного приглашения. Меню отображаться не будет.
  • Чтобы принудительно вывести меню во время загрузки, необходимо нажать SHIFT (ранее был ESC в GRUB).
  • Больше нет /boot/grub/menu.lst. Заменен на /boot/grub/grub.cfg.
  • Команды вида "/find boot/grub/stage1" из командной строки grub> больше не имеют смысла. Стадия 1.5 была удалена.
  • Файл /boot/grub/grub.cfg не подлежит редактированию, в том числе и пользователем 'root'.
  • Файл grub.cfg перезаписывается всякий раз при выполнении обновления, добавлении/удалении образа ядра, при запуске пользователем команды update-grub .
  • Пользователю доступен файл /etc/grub.d/40_custom, в котором он может добавлять собственные записи. Этот файл не перезаписывается в случаях, указанных в предыдущем пункте.
  • Файл, редактируемый для изменения пунктов меню - /etc/default/grub.
  • Несколько файлов для конфигурирования меню: /etc/default/grub, отмеченный выше, а также все файлы в каталоге /etc/grub.d/ .
  • Нумерование разделов дисков изменено. Теперь первый раздел - 1 (в GRUB был 0). Нумерация дисков осталась прежней, то есть первый диск - 0.
  • Автоматизирован поиск прочих операционных систем всякий раз при запуске команды update-grub.
  • Никакие изменения в конфигурационных файлах не ведут к действительным изменениям до запуска команды update-grub.

Структура файлов

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

sudo grub-probe -t device /boot/grub

для идентификатора UUID.

sudo grub-probe -t fs_uuid /boot/grub

Список файлов и каталогов, которые использует GRUB 2, включают: /boot/grub/grub.cfg Этот файл наиболее близок по назначению к файлу /boot/grub/menu.lst. Подобно основному файлу меню grub.cfg содержит записи о загружаемых системах, но он не подлежит редактированию.

  • Каждая секция файла отделена меткой "(### BEGIN)" и генерируется из соответствующего ей файла в каталоге /etc/grub.d.
  • grub.cfg обновляется с помощью запуска команды-

sudo update-grub

Команда является оберткой для инструкции-

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

Форма update-grub выбрана для стандартизации.

  • Этот файл автоматически обновляется после установки/удаления ядра или других обновлений, которые могут влиять на меню загрузчика.
  • По умолчанию, когда бы ни выполнялась команда update-grub, этот файл получает права "только для чтения", то есть его нельзя отредактировать вручную.

Кроме этого файла пользователь видит множество файлов *.mod в каталоге /boot/grub. Эти файлы отражают модульную структуру GRUB 2 и используются по мере необходимости самим загрузчиком.

/etc/default/grub

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

а также информацию, помещаемую в прежней версии GRUB в конце строк загрузки ядер. Этот файл может редактироваться суперпользователем и информация из него попадает в grub.cfg при запуске команды grub-update.

/etc/grub.d/ (каталог)

  • Файлы из этого каталога читаются во время выполнения команды update-grub и инструкции, в них содержащиеся, транслируются в синтаксис файла /boot/grub/grub.cfg и помещаются в него.

Порядок расположения блоков зависит от порядка обработки файлов в каталоге /etc/grub.d/ . Поскольку они обрабатываются в порядке сортировки, файл 10_linux будет обработан перед файлом 20_linux и блоки в /boot/grub/grub.cfg будут расположены соответствующим образом. Если в каталоге окажутся файлы с буквенными именами, они будут обработаны после файлов, имеющих цифровые префиксы.

  • Пользовательские записи могут быть добавлены в файл 40_custom или в другой созданный пользователем файл.

В соответствии с именем 40_custom записи из этого файла попадут в конец меню. Пользовательский файл с именем, например, 06_ позволит поместить инструкции в начало меню.

  • Обрабатываются только файлы с правами выполнения.

Содержание каталога /etc/grub.d/ по умолчанию:

файл 00_header устанавливает значения по умолчанию для таких параметров, как графический режим, пункт меню по умолчанию, таймаут перед загрузкой и тому подобных. Обычно эта информация экспортируется из /etc/default/grub и пользователям нет нужды ее редактировать.

файл 05_debian_theme . Установки в этом файле задают изображение для slpash-темы, текстовые цвета, цвета подстветки и имя темы. Если изображение для slpash-темы отсутствует, тогда устанавливается монохромная тема для дисплея начального меню.

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

файл 20_memtest86+ используется для поиска исполняемого файла /boot/memtest86+.bin и помещения этой опции как отдельного пункта в меню загрузки. В настоящее время не существует опции для удаления этого пункта из меню, поэтому самый простой путь - сбросить для файла memtest86+.bin бит исполнимости, например с помощью команды-

sudo chmod -x /etc/grub.d/20_memtest86+

и затем выполнить sudo update-grub.

файл 30_os-prober используется для запуска os-prober, который ищет установленные Линуксы и другие операционные системы во всех разделах. Результат помещается в grub.cfg с помощью скриптов из обсуждаемого файла. Файл разбит на четыре части, каждая из которых отвечает за поиск одной из систем: Windows, Linux, OSX, и Hurd. Переменные в этом файле определяют формат отображаемых имен в /boot/grub/grub.cfg и в графическом меню. Пользователи, хорошо знакомые с bash-скриптингом, могут изменять эти переменные с целью изменения формата отображаемых в меню имен. Альтернативно можно отключить влияние на имена этого скрипта в файле /etc/default/grub.

файл 40_custom является шаблоном для добавления пользовательских записей в меню, они будут помещены в grub.cfg после запуска команды-

update-grub

Содержимое этого файла будет помещено непосредственно в /boot/grub/grub.cfg. (все содержание, ниже строки "exec tail -n +3 $0" и комментариев по умолчанию) без изменения. Все файлы этого каталога должны быть исполняемыми для использования командой update-grub.

Конфигурирование умолчаний GRUB 2

Изменения в конфигурации вносятся пользователем в файл /etc/default/grub

и в файлы в каталоге /etc/grub.d . Файл /boot/grub/grub.cfg создается конфигурационными скриптами и не подлежит ручному редактированию.

Большая часть изменений может быть внесена через GUI-приложение, которое называется StartUp-Manager. Для ознакомления следует заглянуть на сайт сообщества StartUpManager , чтобы больше узнать об установке и использовании этого приложения.

• Файл /etc/default/grub Основной файл для хранения установок по умолчанию. В нем после инсталляции можно поменять следующие установки: GRUB_DEFAULT - устанавливает запись для запуска по умолчанию. Указание записи может быть по номеру, полному имени в кавычках или "saved". Пример установки по номеру-

GRUB_DEFAULT=0

В случае установки по номеру, Первая запись под номером 0, вторая - под 1 и так далее. Пример установки по полному имени-

GRUB_DEFAULT="Ubuntu, Linux 2.6.31-9-generic"

GRUB_DEFAULT="saved" Эта установка возможна только в GRUB 1.98 и позднее. Благодаря этой установке становятся доступны команды "grub-reboot" и "grub-set-default" для указания ОС умолчанию. Никакой интерактивный выбор из меню не будет возможен. "grub-set-default" устанавливает ОС по умолчанию до следующего изменения, "grub-reboot" - только для следующей загрузки. Формат обоих команд может принимать номер записи или полное имя в кавычках, например:

sudo grub-set-default "Ubuntu, Linux 2.6.32-15-generic"

Строка-

GRUB_SAVEDEFAULT=true

автоматом сохранит последнюю выбранную для загрузки запись для следующей загрузки. При этом нет необходимости выполнять какие-либо команды. Любой следующий выбор из меню автоматически становится той ОС, которая будет запуском по умолчанию для следующего старта системы.

GRUB_HIDDEN_TIMEOUT=0 Эта установка определяет, как долго будет отображаться пустой экран без меню. Пока экран пустой, пользователь может нажать любую клавишу для вывода меню. Поведение по умолчанию: если в меню только одна операционная система, меню будет скрываться. Если GRUB 2 обнаружит много записей в меню, тогда поведение будет зависеть от установки. Возможны варианты:

GRUB_HIDDEN_TIMEOUT=X

X - целое количество секунд для таймаута. GRUB_HIDDEN_TIMEOUT= Если значение не указано, тогда действует установка, определяющая время отображения меню, GRUB_TIMEOUT. GRUB_HIDDEN_TIMEOUT_QUIET=true Если установлено true, тогда меню не будет выведено, экран будет пустой. Если установлено false, тогда меню будет выведено после интервала GRUB_HIDDEN_TIMEOUT.

GRUB_TIMEOUT=10 Эта инструкция откладывает действие инструкции GRUB_HIDDEN_TIMEOUT до тех пор, пока она закоментирована. Если инструкция активна, GRUB_TIMEOUT действует однократно и только если меню было выведено. Установка значения в -1 приведет к тому, что меню будет висеть до тех пор, пока пользователь не выберет запись. Меню будет скрыто, если обнаружена только одна система. Если система одна, данная инструкция может быть закоментирована. Для вывода меню в каждой загрузке раскоментируйте эту установку и установите задержку 1 или более.

GRUB_DISTRIBUTOR=lsb_release -i -s 2> /dev/null || echo Debian Выводит описательное имя касаемо конкретной записи меню.

GRUB_CMDLINE_LINUX Если присутствует, эта строка импортирует любую указанную последовательность опций в конец командной строки запуска ядра как для обычного так и для восстановительного режима. Подобна "altoptions" в бывшем menu.lst .

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" Эта строка импортирует опции в конец командной строки запуска ядра. Опции добавляются только к нормальному режиму. Подобна "defoptions" в бывшем menu.lst . Если вы хотите, чтобы при загрузке на черном экране выводились сообщения ядра и инитскриптов, удалите "quiet splash" .

  1. GRUB_TERMINAL=console

Эту строку нужно раскоментировать, чтобы отключить графический терминал.

  1. GRUB_DISABLE_LINUX_UUID="true"

Эту строку нужно раскоментировать, чтобы отключить определение разделов по их UUID. Здесь должны быть добавлены кавычки из-за пока не устраненной ошибки, иначе раскоментирование не произведет эффекта.

  1. GRUB_GFXMODE=640x480

Раскоментируйте для указания разрешения экрана меню. При совпадении с разрешением, в котором будет работать ОС, несколько уменьшит время загрузки. Также в этой строке может быть указана цветовая глубина, например: 640x480x32. Может быть указано несколько режимов, сработает первый пригодный, например 1280x1024x16,800x600x24,640x480. Если используется splash, нужно убедиться, что разрешение экрана меню и размер сплеша совместимы. Если используется запись, которая может вернуть сообщение "not found" при запуске update-grub, добавьте или измените цветовую глубину. Разрешения, доступные GRUB 2, могут быть обнаружены с помощью команды vbeinfo, запущенной из командной строки GRUB 2. Командная строка вызывается нажатием "с" в режиме меню. Если строка закоментирована или разрешение не поддерживается, используются установки по умолчанию из /etc/grub.d/00_header.

  1. GRUB_DISABLE_LINUX_RECOVERY=true

Эта строка раскоментируется или добавляется, если вы хотите отключить "Recovery" режим для всех запускаемых ядер. Если нужно запускать режим с каким-то одним ядром, следует добавить специальную запись в файл /etc/grub/40_custom .

  1. GRUB_INIT_TUNE="480 440 1"

Когда эта строка раскоментирована или добавлена, звучит однократный сигнал перед появлением меню. Формат задания звука: "скорость_прокрутки высота_тона кратность_продолжительности". Время, в течение которого будет звучать однократный сигнал, равно 60/скорость_прокрутки. Таким образом, если скорость_прокрутки = 60, а кратность_продолжительности = 1, сигнал будет звучать 1 секунду.

• Дополнительные инструкции могут включать:

GRUB_DISABLE_OS_PROBER=true Если эта строка задана, на наличие запускаемых операционных систем проверяются все разделы диска. Если задано false - не проверяются.

Поведение загрузочного дисплея

GRUB 2 загружается перед операционной системой. Его компоненты-модули загружаются по мере необходимости. Поведение экрана меню определяется установками в файле /etc/default/grub .

Инициализация по умолчанию GRUB 2 будет непосредственно загружать ОС по умолчанию, если не обнаружено других операционных систем. Меню не отображается. Если обнаружены иные системы, отобразится меню.

ВременнЫе установки задержек меню Меню появляется на предустановленное количество секунд. Запись по умолчанию выделяется подсветкой. Другие записи меню могут быть выбраны только в течение интервала появления меню. Чтобы деактивировать таймаут, можно нажать любую клавишу.

Скрытие меню Если установлено скрывать меню, оно не появляется до нажатия любой клавиши, если последнее произошло в течение интервала по умолчанию. Вместо меню появляется сплеш-экран, если он настроен. GRUB 2 может отображать счетчик секунд для визуализации оставшегося до загрузки ОС времени.

Сохраненные загрузки Сохранение в памяти загрузчика последней загруженной ОС возможно, если задана опция SAVEDEFAULT=true в файле /etc/default/grub. Если нужно выбрать эту запись вручную, запускается команда grub-set-default при заданной опции DEFAULT=saved .

Ошибка последней загрузки, загрузка в режиме восстановления Если последняя загрузка не состоялась, завершившись ошибкой, или пользователь выбрал последней загрузкой Recovery Mode, при следующей загрузке меню будет отображаться без таймаутов, до тех пор, пока пользователь не сделает выбор. Это поведение может быть изменено в файле /etc/grub.d/00_header в определении опознания ошибки загрузки в конце файла.

Записи меню, создаваемые пользователем

GRUB 2 позволяет пользователю создавать собственные записи в меню. Они автоматически добавляются в меню после выполнения команды sudo update-grub . Файл /etc/grub.d/40_custom служит образцом и тренировочным полигоном для внесения таких записей пользователем. Ниже представлены некоторые соглашения для пользовательских меню. Имя файла определяет порядок внесения его в очередь записей. Файлы с номерным обозначением в начале имени помещаются ближе к началу меню, затем в порядке сортировки - файлы с буквенными именами. Если пользователь желает расположить свое пользовательское меню в начале меню, он может назвать файл записей как-нибудь вроде 06_xxx, тогда все записи из этого файла попадут в верхнюю часть меню. Файл должен быть сделан выполнимым:

sudo chmod +x /etc/grub.d/filename

Содержимое файла будет помещено в grub.cfg неизменным при выполнении команды update-grub . В отличие от файла меню grub.cfg пользовательские файлы не являются файлами только для чтения и могут быть изменены пользователем в любой момент. Пользовательские файлы статичны. Содержимое не меняется при установке, например, нового ядра. Пользователь должен следить за счетом записей: если он поместит свои записи в начало меню, может потребоваться изменить DEFAULT= setting в файле /etc/default/grub, так как теперь номер записи 0 указывает на другую запись.


Создание пользовательской записи в меню

При создании записей пользователь может отредактировать файл /etc/grub.d/40_custom или создать свой собственный файл. Наилучший способ создать запись - скопировать работающую запись из /boot/grub/grub.cfg . Скопированную запись можно отредактировать под пользовательские нужды. Согласно примеру пользовательского меню, первые строки в файле пользователя, это:


  1. !/bin/sh

exec tail -n +3 $0


• Если пользователь хочет скопировать записи из меню GRUB (файл menu.lst): возможно, копия menu.lst находится в каталоге /boot/grub (если пользователь обновлял установку с GRUB на GRUB 2); необходимы следующие изменения в записи: - титул должен быть изменен на желаемое название пункта меню, а строка должна заканчиваться скобкой {; - директива root должна быть заменена на директиву set root=; - директива kernel должна быть заменена на директиву linux; - все номера разделов должны быть заменены, так как GRUB 2 считает дисковые разделы по-другому, не с нуля, а с единицы, в то же время номера дисков по-прежнему идут начиная с нуля. Основные правила конструирования записей: - первая строка начинается названием записи и заканчивается открывающей фигурной скобкой; - последняя строка должна быть закрывающей фигурной скобкой; - в конце строк не должно быть пробелов; - директива set root= должна указывать на раздел, в котором лежит каталог /boot, в формате (sdXY); - если GRUB 2 не может найти нужное ядро, следует UUID заменить на системное имя раздела, например /dev/sda6 . Далее приведены примеры пользовательских записей. Взятая из menu.lst и адаптированная запись:


menuentry "My Default Karmic" { set root=(hd0,1) search --no-floppy --fs-uuid --set cb201140-52f8-4449-9a95-749b27b58ce8 linux /boot/vmlinuz-2.6.31-11-generic root=UUID=cb201140-52f8-4449-9a95-749b27b58ce8 ro quiet splash initrd /boot/initrd.img-2.6.31-11-generic }

Пример записи для дисковой версии SystemRescueCD, установленной по инструкции с официального сайта (на sda8):


menuentry "System Rescue CD" { set root=(hd0,8) linux /sysrcd/rescuecd subdir=sysrcd setkmap=us initrd /sysrcd/initram.igz

Пример записи для передачи управления другому GRUB.

menuentry "Grub 1 Bootloader" { set root=(hd0,8) chainloader +1


Командная строка и режим Rescue

У пользователя существует несколько путей для исправления ситуации сбойной загрузки. Если меню все еще доступно, записи могут быть просмотрены и изменены пользователем. Кроме того, если GRUB 2 обнаруживает ошибки в процессе загрузки и не может передать управление указанному в записи ядру из-за ошибки в grub.cfg, он переходит в режим Rescue. Оба метода позволяют пользователю восстановить работоспособную систему через урезанный интерфейс командной строки. Если вверху экрана появляется только слово "Grub", без меню или приглашения командной строки, тогда пользователь будет вынужден обратиться к процедуре переустановки. Для поиска на разделах диска в сложных случаях применяются следующие соображения. Каталог /boot должен содержать как минимум один файл ядра (vmlinuz) и один образ RAM-диска (initrd.img). Каталог /boot/grub должен содержать grub.cfg и различные файлы с расширением .mod. X - это номера дисков, начинаются с 0. Y - номера разделов, начинаются с 1. Для двойной загрузки Windows и Linux с одного диска нормальной ситуацией является расположение /boot на разделе hd0,5 . Используйте команду ls для обнаружения разделов, которые известны GRUB 2. Для перехода в командную строку (если приглашение еще не появилось) используется команда "c" . В командной строке:

ls

используется для просмотра всех дисков и разделов, которые смог распознать GRUB 2.

ls (hdX,Y)/

- для просмотра содержимого раздела Y на диске X.

ls (hdX,Y)/boot

- для просмотра содержимого каталога /boot на диске X в разделе Y.

ls (hdX,Y)/boot/grub

- отображает содержимое каталога /boot/grub на диске X в разделе Y. Например: ls (hd0,5)/boot/grub


Редактирование записей в процессе загрузки Если меню не появляется обычным образом, нажмите и удерживайте клавишу SHIFT до появления меню GRUB 2 . Если меню появилось, достаточно нажать любую клавишу кроме ENTER для отключения таймера, по истечении таймаута которого произойдет автоматическая загрузка. Для выбора записи используются стрелки "Вверх" и "Вниз". Для редактирования выбранной секции нажмите "e". Для перемещения курсора используется клавиатура. В этом примере курсор был перемещен к символу 9, который пользователь может изменить или удалить. Для перемещения между строками не используйте клавишу Enter. В одной или многих строках можно сделать необходимые изменения. Для автодополнения записей можно использовать клавишу Tab, как в командной строке bash. Когда редактирование закончено, используются следующие возможности:

    • CTRL-x - загрузка с измененными параметрами;
    • CTRL-c - переход в командную строку для производства диагностики, загрузки модулей, изменения установок;
    • Esc - отмена произведенных изменений и возврат в главное меню.

Эти возможности представлены внизу экрана для напоминания.


Режим командной строки Из главного меню можно перейти в режим командной строки путем нажатия клавиши "с". Полезные возможности при работе с командной строкой:

1. Отключение фонового изображения меню может облегчить просмотр вывода на терминал. Нажмите "с" для выхода в командную строку и далее введите:

set color_normal=white/blue

или комбинацию цветов, которая вам больше нравится. При редактировании фоновое изображение больше не будет отвлекать. 2. Для предотвращения быстрой прокрутки экранов введите-

set pager=1

Это работает подобно "| more" в командной строке ОС. Теперь можно переключать экраны далее по выводу с помощью клавиши Enter. 3. Для вывода списка команд введите help . Для помощи по командам, начинающимся на "x", введите help x . 4. Автодополнение ввода с помощью Tab может помочь при вводе записи, если вводимый элемент уникален, или может вывести все возможности, если есть альтернативы. Полезные команды включают: Команда Назначение


background_image Загружает имеющийся фоновый рисунок. Введите background_image=/usr/share/images/grub/ и затем нажмите Tab для получения доступных рисунков

cat Выводит содержимое указанного файла, например cat /boot/grub/grub.cfg или cat /etc/fstab

help Показывает все доступные команды. Полезно перед вводом help ввести "set pager=1", помогает в случае многоэкранной справки

ls Использованная в одиночестве, выводит список устройств, доступных GRUB 2. Для просмотра состава каталогов используйте их имена в качестве параметров

initrd Загружает initrd

linux Загружает ядро

loopback Монтирует файл как устройство, например loopback loop (hd0,2)/iso/my.iso

lsmod Выводит список загруженных модулей

reboot Перезагружает машину

rescue Переводит в режим восстановления

set Выводит переменные окружения. В комбинации с параметрами устанавливает значения системных переменных, например set gfxmode=640x480, set color_normal=cyan/black

vbeinfo Выводит доступные монитору разрешения


Использование интерфейса командной строки в процессе загрузки Если меню видно, но имеются проблемы при загрузке, наиболее простой способ отладки - редактирование записей. Если GRUB 2 не находит правильный grub.cfg, он переходит в режим восстановления. Приглашение командной строки режима восстановления будет выглядеть как grub-rescue> , меню показываться не будет. Из этой командной строки пользователь может задать рабочие параметры загрузки. Если режим восстановления не запустился, необходимо перейти в приглашение командной строки с помощью "с". Возникнет приглашение grub> или grub-rescue> . Если в любой момент нажать Esc, то все произведенные изменения отменятся и будет выведено меню. Для поиска устройств (дисков) и разделов, которые GRUB 2 обнаружил, как известные ему разделы, используется две команды: set и ls. Если ввести set без параметров, будут выведены текущие установки GRUB 2. Команда ls без параметров выведет список "знакомых" GRUB 2 дисков и партиций, например, (hd0) (hd0,1) (hd1,5) будут соответствовать диску sda и его разделам sda1, sdb5.

Для экспресс-загрузки системы нужно ввести следующую последовательность команд:

set root=(hdX,Y) linux /vmlinuz root=/dev/sdXY ro initrd /initrd.img boot

Каждая строка завершается нажатием Enter. Некоторые команды ничего не выводят и это нормально. Если вернулось "file not found" или что-то подобное, следует внимательно проверить значения X и Y, которые, естественно, должны соответствовать текущей ситуации. Верные значения поможет определить команда ls. Затем вводится корректирующая команда:

set prefix=(hdX,Y)/boot/grub


Значения команд: set root=(hdX,Y) - устанавливает корневым разделом раздел Y на диске X. Помните, что диски нумеруются с нуля, партиции - с единицы; linux /vmlinuz root=/dev/sdXY ro - указывает название файла ядра на корневой файловой системе; initrd /initrd.img - указывает название файла образа рам-диска инициализации; boot - производит загрузку с последней указанной версией ядра и с последней указанной версией файла образа инит-диска. Файлы vmlinuz и initrd.img могут быть ссылками в корневом каталоге файловой системы. Если есть необходимость обратиться непосредственно к файлам, можно после linux ввести /boot/ и нажать Tab. Будет выведен список доступных ядер или произойдет автозаполнение командной строки (если ядро одно). Если ни одного доступного ядра нет, следует проверить команду set root, указывает ли она на правильную локацию. Если команды linux и initrd.img были правильные, после них выводится подсвеченное имя ядра и образа инит-диска, как показано ниже. Изменения, которые были произведены вводом команд, не являются постоянными и действуют только в текущей сессии. После успешной загрузки пользователь должен ввести sudo update-grub и проинспектировать файл конфигурации /boot/grub/grub.cfg . При проблемах с загрузкой основной системы прежде всего следует проверить правильность строк search, linux, и initrd в секции [### BEGIN /etc/grub.d/10_linux ###].

Режим Rescue Режим восстановления - основное отличие в возможностях GRUB 2 по сравнению с GRUB. Если загрузчик не смог обнаружить правильный файл grub.cfg или не смог передать управление ядру, он выпадает в rescue-консоль: grub-rescue> Из этого приглашения доступны команды, с помощью которых можно обнаружить проблемы и добиться успешной загрузки. Все команды обычного режима командной строки также поддерживаются. Среди дополнительных команд:

Команда Назначение

dump Очищает память

exit Команда выхода из GRUB 2

normal Возвращает в обычный режим командной строки, если это возможно

chainloader Указывает последующей команде boot передать управление цепочечному загрузчику

insmod Загружает указанный модуль ядра

rmmod Выгружает указанный модуль ядра

multiboot

unset Уничтожает переменную окружения

Для того, чтобы все команды, и основные, и дополнительные, были доступны, нужно загрузить модуль normal с помощью команды:

insmod normal

Для правильной работы переменная prefix должна указывать на корректное место расположения каталога GRUB 2, без этого команды rescue работать не будут. Кроме того, требуется загрузка модуля linux, так как без него не получится загрузить ядро и инит-диск. Если префикс указывает в неверное место, будут сообщения об ошибке типа "неизвестная команда" или "файл не найден". Для облегчения поиска верного системного раздела используется команда ls. Сначала найдите все известные разделы, затем в них - каталоги и файлы загрузчика. Например: ls возвратила имена дисков и разделов: (hd0) (hd0,1) (hd0,5) (hd1) (hd1,1) тогда ls (hd0,5)/boot возвратит файлы и каталоги в каталоге /boot на диске sda, ls (hd0,5)/boot/grub - файлы и каталоги в /boot/grub на дисковом разделе sda5. Если путь корректно указывает на /boot/grub в системе Ubuntu, тогда еще будут видны различные файлы модулей (файлы *.mod). Далее должны быть правильно установлены префикс и корневой раздел. Например:

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

Текущие значения префикса и корня могут быть в любой момент проверены с помощью команды set. Теперь могут быть загружены модули. Это должно произойти до попытки их использования. Так, модуль linux используется для загрузки ядра и инит-диска. Для загрузки используется команда insmod linux или insmod /boot/grub/linux.mod . Пример группы команд:

ls set prefix=(hdX,Y)/boot/grub set root=(hdX,Y) set ls /boot insmod /boot/grub/linux.mod linux /vmlinuz root=/dev/sdXY ro initrd /initrd.img boot


Рассмотрим подробнее значения команд. 1. ls выводит известные диски и разделы. Далее пользователь должен задать диск и раздел, где находится система. 2. set prefix=(hdX,Y)/boot/grub задает абсолютный путь к каталогу загрузчика. 3. set root=(hdX,Y) Здесь X - диск, нумерация стартует с нуля. Y - раздел, нумерация стартует с единицы. 4. set поможет найти строку "prefix=" . Она должна правильно указывать на корневой раздел в формате: prefix=(hdX,Y)/boot/grub. 5. ls /boot/ просматривает содержимое каталога. Должны быть видны разные ядра, инит-диски и каталог /grub. Если нет, возвращаемся к поиску через ls. 6. insmod /boot/grub/linux.mod загружает модлуь linux. 7. linux /vmlinuz root=/dev/sdXY ro выбирает ядро системы. 8. initrd /initrd.img выбирает образ инит-диска. После нажатия ENTER пользователь может увидеть, а может и не увидеть вывод имени выбранного образа. 9. boot загружает систему со всеми выбранными параметрами. Изменения, внесенные командами, действуют только на время текущей сессии.