18 Октябрь 2007

Украшаем Grub.

Возможности по "тюнингу" Linux системы достаточно мощны и всем доступны. Возможно иногда они выглядят "напильником для шлифовки", но эту трудность несложно обойти с помощью сообщества. В свое время я уже "прокачивал" вопрос об украшении загрузчика Grub, и сейчас я расскажу об этом (LILO тоже подвержено подобному тюнингу, но я не ее поклонник). Здесь я не буду вдаваться в заморочки типа версии программы Grub, или ее установки. Если это нужно, то Гугл вам в помощь. Мы будем считать, что у нас установлены Debian и Grub. Тогда все наши действия сводятся к 2-м этапам:

  • выбор/создание и подготовка изображения
  • конфигурирование загрузчика
Итак, приступим.

Подготовка изображения.
Если вы не искушенный в редактировании пользователь, то тогда имеет смысл выбрать уже имеющиеся изображения. Ниже привожу ссылки, где их можно взять:
Если стоит задача - обязательно использовать свою картинку, то не вопрос! Для этого нужно выдержать условия, что изображение обязятельно должно быть:
  • разрешении 640х480
  • количество цветов 14
  • формат xpm
  • зажатого gz-пом
Пример файла: debian.xpm.gz
Конечно же у нас такого разрешения нету, а тем более такого формата. Поэтому делать это придется вручную.

В консоли.
Первый вариант для истинных ценителей консоли. Но он предполагает наличие в системе программы манипуляции с изображениями - imagemagic. Если вдруг его у вас нету, то:
# apt-get install imagemagick
Ну а далее само преобразование:
$ convert -resize 640x480 -colors 14 file_old.xpm file_new.xpm && gzip file_new.xpm
Вышеприведенный способ, является самым быстродействующим, но совсем не наглядным...

Графическим редактором.
Для людей более творческих будет интересен вариант с использованием редактора Gimp.
Для этого необходимо открыть желаемое изображение в редакторе, далее его нужно смаштабировать Изображение -> Масштабировать и задаем разрешение как ниже на рисунке:
Далее нужно изменить количество цветов в меню Изображение -> Режим -> Индексированное, как показано ниже:
Там вы выставляем требуемое количество цветов, а именно 14.
Теперь сохраняем картинку в формате xpm:
На вопрос об изменении альфа-канала жмем Enter. Чем хорош способ с применением графического редактора, тем что мы визуально контролируем как выглядит картинка при таком разрешении и при малом количестве цветов.
Ну а дальше, изображение нужно зажать gz-пом:
$ gzip file_new.xpm
и на выходе получаем файл file_new.xpm.gz. Этого мы и добивались.

Настраиваем Grub.
Далее, без консоли грустно, поэтому предлагаю сделать именно в ней. Выполнять данные операции необходимо будет с правами суперпользователя, иначе - никак. Поэтому здесь максимально аккуратны.
Здесь важно понять принцип, а он очень прост. Так что если вы любите юзать mc или krusader в режиме root, то это будет вообще несложно.
Т.к. мне понравилось несколько картинок сразу, то я у себя сделал директорию (куда все потом и скопировал):
# mkdir /boot/grub/splashimages
Далее, находясь в директории с файлом (у нас это file_new.xpm.gz), выполняем его копирование в созданный каталог:
# cp file_new.xpm.gz /boot/grub/splashimages/
Ну а далее нужно немного подправить файл menu.lst, который находится в /boot/grub/. Сделайте, предварительно резервную копию файла - на всякий случай. Там нам нужно вставить всего одну строку:
splashimage=(hd0,0)/grub/splashimages/file_new.xpm.gz
Внимание! В зависимости от точек монтирования разделов в Linux-e, данная строка может выглядеть по-другому, например как в строке ниже.
splashimage=(hd0,0)/boot/grub/splashimages/file_new.xpm.gz
На рисунке ниже показан мой вариант файла menu.lst, где я подчеркнул (hd0,0), он обязательно должнен соответствовать тому, что написано у вас в разделе root, которую я так жеподчеркнул. Имя файла, который необходимо выводить при загрузке, я выделил кружочком. :-)
Сохраняемся, отправляем систему в глобальный ребут, и радуемся полученному результату!

Да, и не забываем, что можно еще поиграться с цветом шрифтов и фона (хотя я этим никогда не пользовался), подправив значения в самом начале файла menu.lst:
# Pretty colours
color cyan/blue white/blue
Вообщем, радуемся!
:)

16 коммент.:

Анонимный комментирует...

Наверное тупой вопрос, но всё же
Как получить скрин при загрузке?

Banzai комментирует...

Используй фотик или установленный линукс в виртуальной машине.

SIR комментирует...

Добавить к словам banzai мне нечего - все верно. :-) Других способов я не знаю. А скриншот в моем посте сделан из под "виртуалки", про настройку которой я писал здесь.

Анонимный комментирует...

Можно вместо того, чтобы постоянно менять menu.lst написать что-то вроде:
splashimage=(hd0,0)/grub/splashimages/splash.xpm.gz
где splash.xpm.gz - символическая ссылка на нужную картинку. И для того, чтобы поставить новую картинку при загрузке достаточно задать новую связь для данной ссылки.

Kane комментирует...

splashimage=(hd0,0)/boot/grub/splashimages/file_new.xpm.gz

SIR комментирует...

Кстати, на счет символической ссылки - это хорошая идея! Как-то я об этом не думал...

va1e комментирует...

ну так каждый сможет. а вот прозрачный фоновый рисунок при загрузке во фреймбуфере? или шапка при загрузке Debian..

SIR комментирует...

2 va1e:
если так кажды сможет, вот и чудненько!
:-)
А вот на счет прозрачного рисунка и шапки при загрузке Дебиан, поподробнее пожалуйста. Я пока не в теме..

va1e комментирует...

Я имел ввиду конфигурирование ядра с поддержкой framebuffer`а и initrd, bootsplash

SIR комментирует...

А-а-а... ну ясно. Было дело, я эту тему сильно прокачивал. У меня даже черновик статьи пошаговых действий заготовлен. Только все срубилось на том, что операция:
# /sbin/splash -s -f /etc/bootsplash/themes/current/config/bootsplash-1024x768.cfg >> ...
выполняется некорректно для рамдиска! В результате чего система вываливается в kernel panic при загрузке.
Здесь про это есть:
Why do I see a kernel panic on my (Debian) system?
Коротко там говорится о том, что эта процедура "вживления" в образ ramdisk-а, разрушает сжатый cpio формат, что и вызывает kernel panic при загрузке. Причем я пробовал еще другие способы, но... В итоге это все заглохло, т.к. альтернативного решения изменения рамдиска я не нашел. Если есть предложения, милости прошу - можно возобновить активность.

va1e комментирует...

Вот несколько ссылок. Все работает ;)
http://kde-look.org/content/show.php/Debian+RainTree?content=61909
http://bstheme.sourceforge.net/

SIR комментирует...

Спасибо va1e, я знаю про эти ссылки. :-)
Но мне это как-то не очень.. Не совсем то, чего я хотел добиться.
# /sbin/splash -s -f...(или альтернатива) - Вот что по-настоящему интересно.

ceval комментирует...

Sir можно мне разместить это на своем форуме, со ссыкой на твой блог
http://www.itword.net/smf/index.php?board=38.0

SIR комментирует...

Думаю, что нужно попробовать.
:-)

Анонимный комментирует...

Ошибка...
splashimage(hd0,0)/boot/grub/...

слово BOOT забыл, я уже второй кто попроавляет... пришлось лишний раз ребутнуться

SIR комментирует...

2 анонимный:
Это не ошибка! Все дело в точках монтирования разделов. В блоге я поправил.
Сенкс!
:-)