Рейтинг@Mail.ru
[Войти] [Зарегистрироваться]

Наши друзья и партнеры

UnixForum




Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

Ошибка базы данных:
На главную -> MyLDP -> Тематический каталог -> Процесс начальной загрузки системы

Осваиваем Grub 2

Оригинал: "Mastering Grub 2 The Easy Way"
Автор: Joshua Price
Дата публикации: November 19th, 2009
Перевод: Н.Ромоданов
Дата перевода: декабрь 2009 г.

Если вы работаете в Linux, то скорее всего ваш дистрибутив в качестве начального загрузчика использует Grub. Grub хорошо выполняет эту задачу в течение многих лет, но уже видно, что он устарел. Как и в случае других программ, потребовалось не слишком много времени с тем, чтобы новое и лучшее стало старым и осунувшимся. Возможности в Grub нагромождались без долгих размышлений и без какой-либо попытки внести их как изменения в ядро программы. В итоге это привело к бесконечным заплаткам, которые никто не хочет поддерживать. Но теперь появился Grub2. Он полностью был переписан с самого основания, причем его структура была также полностью перепроектирована. Этот новый Grub предоставляет нам мощные возможности, такие так условные инструкции (if/then и т.п.), интеллектуальное обновление и сильно улучшенную графику.

Выбираем Grub2

Если вы хотите использовать Grub2, тот лучше всего установить Ubuntu 9.10 (Karmic Koala). Если же вы хотите всего-лишь посмотреть, что Grub2 может делать, не рискуя вашей системой, то воспользуйтесь виртуальной машиной так, как описано по этой ссылке, но, конечно, в качестве гостевой системы возьмите Ubuntu 9.10.

Файл menu.lst/grub.cfg

Если вам приходилось иметь дело с оригинальным Grub (теперь называемым Grub legacy), вы, несомненно, знаете о menu.lst. Это файл, в котором Grub legacy запоминал практически все. В Grub2 ближайшим аналогом является grub.cfg, тоже хранящийся в /boot/grub. Однако, самое важное различие в том, что вы не должны редактировать файл grub.cfg непосредственно - этот файл автоматически генерируется с помощью Grub2 и ваши исправления будут стерты без каких-либо предупреждений, в результате таких действий, как, например, обновление ядра.

Каждый раз, когда исполняется команда update-grub, Grub2 читает свои различные конфигурационные файлы и использует их содержимое для генерации файла grub.cfg. Эти конфигурационные файлы будут рассмотрены ниже.

Директория /etc/default/grub

Именно здесь сейчас находятся многие настройки Grub, которые были в файле menu.lst. Здесь указывается, будет ли изображаться меню Grub и как долго будет длиться ожидание прежде, чем наступит таймаут. В приведенном ниже скриншоте показаны настройки, используемые в Ubuntu 9.10 по умолчанию: задан параметр не показывать меню Grub (hide), отключен пункт меню режима восстановления "recovery mode", и ядру указано выдавать изображение заставки.

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

Директория /etc/grub.d/

Это именно то, чем новая версия Grub отличается от Grub legacy. В Grub 2 используется совсем другой подход к определению элементов меню загрузки - это не файл menu.lst. В директории /etc/grub.d/ находятся отдельные файлы, каждый из которых представляет собой отдельный элемент меню загрузки. Ниже показаны файлы, содержащие настройки элементов меню загрузки, выбранные по умолчанию при установке системы.

Хотя и есть масса отличий от Grub legacy, в этом директории вы, возможно, обнаружите нечто знакомое. В директории много похожего на стандартную систему начальной загрузки SysV Init. Каждый файл обрабатывается в строго определенном порядке. Порядок определяется номерами в начале каждого имени файла, так, например, скрипт в файле 00_header будет исполняться раньше, чем, скажем, в файле 05_debian_theme.

Файл /etc/grub.d/40_custom

Если вам нужно отредактировать меню загрузки, то это именно тот файл, который вы ищете. Сюда вы добавляете свои пункты меню. Поскольку это последний нумерованный файл в директории grub.d (смотрите объяснение выше), любые пункты меню, помещенные в этот файл, будут изображаться в конце меню загрузки.

По умолчанию файл 40_custom обычно пустой. В этом примере я добавил в него новый элемент меню.

Изображения - заставки

В Ubuntu вы можете легко загрузить пакет изображений-заставок Grub 2 следующим образом:

sudo apt-get install grub2-splashimages

Когда это будет сделано, все изображения будут запомнены как файлы TGA в директории /usr/share/images/grub/.

Какое именно изображение будет выводиться в качестве заставки, определяется в файле 05_debian_theme. Для того, чтобы выбрать другой файл с изображением-заставкой, вы должны, имея права root, открыть файл /etc/grub.d/05_debian_theme в любом редакторе, который вам нравится. Найдите строчку, похожую на выделенную в следующем примере:

И измените имя на имя файла с изображением, которое вы предпочитаете использовать. Удостоверьтесь, что путь указывает на директорий -/usr/share/images/grub/. В некоторых старых версия путь указывает на директорию /usr/share/images/desktop-base/, а это не то, что нам нужно.

Применяем сделанные изменения

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

update-grub

Как только все будет сделано, перезагрузите компьютер (или виртуальную машину) с тем, чтобы увидеть результат. Если для меню все еще установлен параметр Hidden (не показывать), то во время загрузки не забудьте удерживать нажатой клавишу Shift.


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

Комментарии

Олег Яровец пишет: 28.06.2011
А вот для меня невозможность вручную редактировать конфигурационный файл загрузчика grub.cfg как раз и является главным отталкивающим моментом от GRUB2, ведь что лично для меня было самым "привлекательным" в GRUB legacy - его несравненная гибкость и возможность, отредактировав вручную файл menu.lst загружать что угодно и откуда угодно - вплоть до образов операционных систем, еще даже не записанных на компакт, а лежащих где-то в папке на жестком, сам так делаю - у меня работает PuppyRus, Slax и KolibriOS, запускаемые прямо из iso-образов, во втором GRUB такая возможность потеряна... А возможность скрывать некоторые системы? А загрузить винду не с первичного раздела? А назначать пароль на запуск операционных систем? А возможность запустить Mac OS X? Как на мой взгляд, в плане удобства для пользователей, второй GRUB -это шаг назад... Разве что загрузчик "для домохазяек", которые сами никогда не будут ничего настраивать в системе, и им нужно чтобы поставил загрузчик, и он сразу же работал, а как - это уже вопрос десятый...