GrabDuck

Командная строка и режим Rescue | Linux Exp Group

:

У пользователя существует несколько путей для исправления ситуации сбойной загрузки. Если меню все еще доступно, записи могут быть просмотрены и изменены пользователем. Кроме того, если 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 передать управление цепочечному загрузчику

kfreebsd

Группа команд для загрузки ядра FreeBSD, его модулей и определения его переменных окружения

kfreebsd_loadenv

kfreebsd_module

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 загружает систему со всеми выбранными параметрами.

Изменения, внесенные командами, действуют только на время текущей сессии.


Назад - Записи меню, создаваемые пользователем
Содержание