вторник, 2 марта 2010 г.

GRUB - красивая загрузка

Я сейчас внимательно наблюдаю за GRUB2 в Ubuntu 9.10. Это абсолютно новый загрузчик и наверно хороший. Я его еще не вскрывал :). Потому что он работает как часы. Но стоит признать, что пока бесспорным лидером по загрузке в Linux остается GRUB классический. Он как двери внутренние в вашем доме. Но и загрузчик можно украсить на свой вкус. Открыл и попал в другоую среду. И статья Алексея Дмитриева тому яркое подтверждение. И не стоит забывать, что возможности GRUB загружать разные операционные системы превращает компьютер в максимально универсальный инструмент для работы и отдыха. А красивый загрузчик это всегда приятно.

Введение

Обычно я не очень страдаю стремлением украсить свои рабочие столы и приложения. Однако вид загрузчика Grub в его первозданном виде приводит меня в уныние. Даже логотип Виндоуз и то лучше. Думаю, я не один такой, поэтому в этой статье расскажу о своих методах сделать заставку Grub’а привлекательной.

Для начала нужно договориться о терминологии. Сегодня уже официально существуют две версии Grub’а: Просто Grub 0.97, он же Grub Legacy (традиционный, наследственный) и Grub2 – написанный с нуля загрузчик со значительно более широкими возможностями, но, увы, с неудобными и сложными настройками. В данной статье речь пойдет исключительно о старом, традиционном, унаследованном Grub’е Legacy. Для простоты я не стану больше тратить прилагательные, и буду называть его просто Grub.

Простота, универсальность и легкость установки этого загрузчика, даже по сравнению с его предшественником – LILO, снискали ему широкую популярность. Практически с момента появления начались попытки придать ему красивый вид. На этом пути Линукс-сообщество разделилось на два направления.

Первое направление возглавил дистрибутив SuSe, а позже к нему примкнула Mandriva. Программист Steffen Winterfeldt приспособил для Grub’а знаменитое меню с анимированными пингвинами.

Знаменитое меню с пингвинами

Оно уже несколько лет работало в LILO у той же SuSe. Для этого пришлось писать специальный патч для Grub’а, получивший известность как gfxmenu, а пропатченный им загрузчик иногда называется Grub-gfxmenu. Не знаю, взяла ли Mandriva патч у SuSe, или разработала свой, но сами заставки, называемые message, у этих двух дистрибутивов взаимозаменяемы.

Второе направление, во главе с Debian и множеством дистрибутивов на его основе – Ubuntu и прочие, создало свой собственный патч Grub’а, умеющий показывать в качестве заставки многоцветные изображения, называемые splashimage.

Пример картинки splashimage

Эти картинки просто скачиваются из Сети и помещаются в директорию /boot/grub/. Картинки должны иметь расширение .xpm.gz. Чтобы Grub начал показывать их в качестве заставок, нужно вписать в файл /boot/grub/menu.lst первой строкой: splashimage=(hd0,Х)/boot/grub/имя_картинки.xpm.gz. А если вы накачали кучу разных splashimage’ей, то заведите для них папку в той же директории и назовите ее, скажем, images. Тогда строка в файле /boot/grub/menu.lst будет чуть длиннее: splashimage=(hd0,Х)/boot/grub/images/имя_картинки.xpm.gz. Вместо буквы Х поставьте в скобках номер вашего раздела минус 1. Так, если ваш дистрибутив Линукс находится в разделе /dev/hda2, то нужно написать (hd0,1). Такова нотация Grub’а – он считает разделы с нуля, а не с первого.

Еще небольшая тонкость насчет картинок. Некоторые картинки не позволяют увидеть подсветку строк в загрузочном меню Grub’а. Она сливается по цвету с картинкой. На этот случай нужно определить цвета фона и переднего плана меню при помощи еще двух строк:

foreground  = ffffff
background = 000000

Это шестнадцатеричные значения цветов по системе RRGGBB (красный- зеленый – голубой).

Пример будет означать, что передний план (foreground) белый (ffffff), а фон – черный (000000). Если нужно наоборот, увидеть картинку на белом фоне, то следует написать:

foreground  = 000000
background = ffffff

Это будет черным по белому.

Суммируя все сказанное, вид общей секции вашего файла /boot/grub/menu.lst станет выглядеть примерно так:

splashimage=(hd0,2)/boot/grub/images/имя_картинки.xpm.gz
foreground = 000000
background = ffffff
default 1
timeout 10

Если попадутся строки типа nosplash или nosplashimage, то их нужно удалить или закомментировать (#). Также нужно поступить и со строками, определяющими цвета обычного меню, типа: color green/black white/black

Главный недостаток splashimage – их нельзя анимировать. Зато можно создавать свои собственные картинки. Их размер должен быть 640х480 пикселей, не более 14 цветов. Подойдет и фотография, которую нужно будет обработать до необходимых размеров в Gimp’е или Photoshop’е. Затем конвертировать в формат xpm в Gimp’е и сжать gz’ипом. Наилучшие картинки получаются в оттенках серого цвета.

На этом закончим со splashimage и перейдем к основной части нашего рассказа – gfxmenu.

Как установить анимированную заставку в свою систему

Загрузчиком Grub-gfxmenu комплектуются дистрибутивы SuSe и Mandriva. Но если вы не пользуетесь данными дистрибутивами, то не спешите искать патч gfxmenu для Grub’а, патчить его и устанавливать в свой дистрибутив. Можно поступить проще. Вот как делаю я.

Первым делом создаю нормальной программой партиционирования два новых раздела: загрузочный (400Мб), с LABEL=zagruz, и временный, размером 4-5Гб, для установки самого дистрибутива.

Затем устанавливаю дистрибутив (SuSe или Mandriva), таким образом, чтобы загрузочный раздел монтировался как /boot, а временный как /. Когда программа установки спросит, куда устанавливать загрузчик, следует ответить – в MBR. Не помешает по окончании установки перезагрузить компьютер и убедиться, что новый дистрибутив нормально загружается. При этом не имеет значения, загружаются ли Windows и все ваши рабочие дистрибутивы – это мы всегда поправим.

Затем нужно отредактировать в свежеустановленном дистрибутиве файл /boot/grub/menu.lst. Обычно в этом файле столько всяких закомментированных пояснений, что самого текста не видно. Поэтому я просто удаляю весь текст из этого файла и вставляю туда текст из аналогичного файла своего рабочего дистрибутива, не забыв только поменять номер root раздела. Вот пример:

default 1
timeout 20
gfxmenu (hd0,8)/message

title Windows on (/dev/sda2)
map (hd0,0) (hd0,1)
map (hd0,1) (hd0,0)
rootnoverify (hd0,1)
makeactive
chainloader +1

title AltLinux (/dev/sda5)
root (hd0,4)
kernel /boot/vmlinuz root=/dev/sda5 ro vga=791
initrd /boot/initrd.img

title Debian GNU/Linux, kernel 2.6.26-2-686
root (hd0,7)
kernel /boot/vmlinuz-2.6.26-2-686 root=/dev/sda8 ro vga=791 quiet
initrd /boot/initrd.img-2.6.26-2-686

title openSUSE 11.0
root (hd0,8)
kernel /vmlinuz-2.6.25.5-1.1-default root=...и т.д.
initrd /initrd-2.6.25.5-1.1-default

Внимание: Присмотритесь к третьей строке: gfxmenu (hd0,8)/message. По идее она должна была бы выглядеть как gfxmenu (hd0,8)/boot/message. Но поскольку у нас директория /boot вынесена в отдельный загрузочный раздел /dev/sda9 (или (hd0,8) в нотации Grub), то и файл анимированной заставки message окажется в корневой директории загрузочного раздела. Эта третья строчка и последний абзац “title openSUSE 11.0″ вот все, что осталось от первоначального файла menu.lst установленного дистрибутива.

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

“Но, позвольте, я не вижу никаких анимированных пингвинов!” – скажет нетерпеливый читатель. Действительно, если в openSUSE 10 пингвины появлялись время от времени, по закону случайных чисел, то в openSUSE 11.0 они не появляются никогда, хотя включены в состав файла /boot/message. Наша задача – найти их!

Перезагружаемся в свой рабочий дистрибутив.

Вписываем новый загрузочный раздел в файл /etc/fstab:

/dev/sda9  /mnt/zagruz  ext3  rw,user,noauto,dev,exec 0 0

Монтируем раздел /dev/sda9 любым привычным вам способом.

Файл message является архивом CPIO и может быть распакован командой cpio. У этой команды чудной синтаксис, поэтому будьте внимательны. Я не стану пересказывать здесь ман этой команды (который есть в Интернете), просто объясню основные моменты.

Команда cpio копирует содержимое из архива CPIO в нужную директорию, или, наоборот, копирует файлы из нужной директории в архив CPIO. При этом она не умеет создавать директории сама. Поэтому порядок действий такой:

Открываем консоль с правами root.

Создаем в текущей директории временный каталог pingu:

# mkdir pingu

Переходим в новый каталог:

# cd pingu

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

pingu# cpio -iv < /mnt/zagruz/message  16x16.fnt back.jpg en.hlp en.tr gfxboot.cfg init languages pabout.txt panim.jpg panim_a.jpg pback.jpg phead.jpg timer_a.jpg 841 blocks 

Опция -i копирует файлы из архива /mnt/zagruz/message в текущую директорию pingu. Опция -v выводит список скопированных файлов.

Нас интересует только файл gfxboot.cfg (пятый сверху).

Открываем его в вашем любимом текстовом редакторе с правами root.

Находим девятнадцатую по счету строку сверху (считая и пустые):

; penguin theme likelihood (in percent, -1 = auto)
penguin=0

Она переводится как: “Вероятность появления темы пингвинов (в процентах, параметр -1 означает автоматическое случайное появление)”. Пока вероятность равна нулю (penguin=0), то есть тема пингвинов не появляется никогда, всегда появляется тема SUSE. Мы должны изменить строку так:

; penguin theme likelihood (in percent, -1 = auto)
penguin=100

И сохранить. И все!

Осталось запаковать архив обратно. Для этого служит команда:

pingu# ls | cpio -ov > message

16x16.fnt
back.jpg
en.hlp
en.tr
gfxboot.cfg
gfxboot.cfg~
init
languages
pabout.txt
panim_a.jpg
panim.jpg
pback.jpg
phead.jpg
timer_a.jpg
841 blocks

Опция -o означает копировать все файлы со стандартного вывода в архив message. Замечу, что архив message окажется в текущей директории pingu. А нам нужно переместить его в /mnt/zagruz. Но и находящийся там неисправленный message тоже желательно сохранить на всякий случай. Поэтому сначала переименуем старый архив:

pingu# mv /mnt/zagruz/message /mnt/zagruz/message-old

Теперь переместим или скопируем новый исправленный архив на место:

pingu# mv message /mnt/zagruz/message

Проверим:

pingu# ls /mnt/zagruz

backup_mbr message-old
boot symsets-2.6.25.5-1.1-default.tar.gz
config-2.6.25.5-1.1-default symtypes-2.6.25.5-1.1-default.gz
grub symvers-2.6.25.5-1.1-default.gz
initrd System.map-2.6.25.5-1.1-default
initrd-2.6.25.5-1.1-default vmlinux-2.6.25.5-1.1-default.gz
lost+found vmlinuz
memtest.bin vmlinuz-2.6.25.5-1.1-default
message

Оба архива на месте. Но загружаться будет именно исправленный архив message.

Осталось удалить временный каталог pingu:

pingu# cd ..

Это мы вернулись в родительский каталог.

# rm -R pingu

Удалили временный каталог pingu.

Теперь перезагружаемся, чтобы проверить, появилось ли меню с пингвинами.

Появилось, естественно. Можно удалять раздел /dev/sda10, где у нас расположен весь дистрибутив SUSE (кроме его директории /boot). А если вам нужен SUSE, то можно и не удалять, решать вам.

Что касается анимированного меню с пингвинами, то в openSUSE 11.0 оно хуже, чем было в openSUSE 10. Во-первых, оно не русифицировано, во-вторых, надписи насчет клавиш F1, F2, F3 как-то неудачно расположены на самом виду, в-третьих, оно почти на 100 Кб больше.

Поэтому я помещу уже переделанное русское анимированное меню с пингвинами из openSUSE 10 на своем сайте, и вы сможете его скачать.

Если у вас нет дистрибутива SUSE, то все вышеописанное можно проделать и с Mandriva One 2009, а архив message, уже готовый к употреблению, скачать в “Читалке Линукс”.

Другие способы установить gfxmenu

Пользователи Debian, Ubuntu и им подобных дистрибутивов. Вы счастливые люди! Ваши дистрибьюторы позаботились о вас, и в ваших репозиториях имеется и Grub-gfxmenu и всякие анимированные заставки, по темам ваших дистрибутивов. Вы можете установить все это непосредственно в ваш дистрибутив. Как это сделать, подробно описано в статье “GfxBoot или красивая заставка для меню GRUB”

.

Ну, и, наконец, можно самому попытаться пропатчить Grub 0.97, скачать message и все наладить. Я плохо разбираюсь в таких вещах, поэтому советовать ничего не буду.

Заключение

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

Если вы найдете в Сети другие, более современные мультики для Grub’а, то сообщите, пожалуйста, мне.



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

При выкупе специалисты предложат вам выгодную цену и возьмут на себя оформление сделки в ГИБДД. И самое главное, процедура выкупа автомобилей занимает всего несколько часов. А ведь согласитесь, что у автомобилиста есть два счастливых момента. Первый, когда он покупает новую машину, и второй, когда он продает старую :).

А если серьезно, то сегодня многим людям обременительно выплачивать автокредит. И на сайте vykup-auto.ru вам помогут избавится от тягостного кредитного бремени. Причем вам предложат услугу по срочному выкупу автомобиля. Все будет сделано быстро и четко.

Комментариев нет: