MandrivaGrub

Смена графического меню загрузчика GRUB и темы bootsplash

Как сменить фоновое изображение системного загрузчика GRUB.

Для тех кто не в курсе в Mandriva 2009, присутствует возможность смены картинки через графический интерфейс, но это не интересно.

Редактируем gfxmenu, bootsplash в Mandriva 2007 Spring

Задумался над сменой стандартного графического меню загрузчика GRUB и графической темы загрузки системы bootsplash.
Насчет bootsplash можно было использовать темы, которые идут с дистрибутивом, но мне захотелось чего-то оригинального.
Начнем с графического меню загрузчика, способ, который я использовал дает возможность замены стандартной картинки на свою.
И выглядит он малость изощренным. Я не претендую на правильность реализации, но на эту тему не нашел конкретной документации.
В каталоге /boot можно найти файл gfxmenu вот он и отвечает за графическое меню загрузчика, создаем в домашнем каталоге (или где вам удобнее) каталог я его назвал gfx, копируем в него /boot/gfxmenu запускаем консоль переходим в каталог gfx и выполняем команду:
  1. $ cpio -idmv <gfxmenu

В каталоге появятся файлы внутренности gfxmenu, теперь необходимо переместить gfxmenu из этого каталога, дабы он не попал в новый файл графического меню.
Следующая команда
  1. $ ls > 111

Получаем список файлов в этом каталоге, он нам понадобиться попозже, единственное, что в файле 111 надо найти и удалить строчку 111 (нам не нужно, чтобы наш файл со списком файлов присутствовал в списке).
Теперь создаем картинку, которую мы ходим видеть, сохраняем её с разрешением 800х600 и качеством jpg 0.75.
Называем его back.jpg и заменяем им одноименный файл в папке gfx.
Теперь мы готовы собрать наше графическое меню. В консоли переходим в каталог gfx и выполняем команду
  1. $ cpio -of < 111 > mymenu

Этой командой создается файл mymenu и в него включаются файлы из списка 111.
Теперь из под рута (Обратите внимание (hd0,X) это условное обозначение и указывает загрузчику с какого раздела загрузить ядро, у меня этот параметр равен (hd0,5)):
1. копируем наш файл mymenu в каталог /boot
2. правим /boot/grub/menu.lst строку gfxmenu (hd0,Х)/gfxmenu к виду gfxmenu (hd0,Х)/mymenu
Сохраняем перезагружаемся и наслаждаемся видом графического меню загрузчика.

Теперь займемся bootsplash.
Здесь я приведу лишь свои действия для создания собственного bootsplash, более подробно можно почитать здесь .
Первое создаем картинку с разрешением 1024х768 сохраняем в формате jpg с качеством 0.75, для порядка называем bootsplash-1024x768.jpg.
Чтобы не было бардака я решил сложить мою тему в те же каталоги, что и системные.
Под рутом идем в каталог /usr/share/bootsplash/themes создаем каталог для своей темы ну например "my" внутри каталога "my" создаем каталог "images",теперь в каталог /usr/share/bootsplash/themes/my/images копируем нашу картинку bootsplash-1024x768.jpg
и создаем символическую ссылку на него командой
  1. # ln -s /usr/share/bootsplash/themes/my/images/bootsplash-1024x768.jpg /usr/share/bootsplash/themes/my/images/silent-1024x768.jpg

Теперь идем в каталог /etc/bootsplash/themes создаем каталог "my" в нем каталог "config".
Теперь нам необходимо создать конфигурационный файл для нашей темы, я с ним не стал возиться,
а просто скопировал из документации по ссылке выше вот пример:
  1. # This is the configuration file for the 1024x768 bootsplash picture.
  2. # This file is necessary to specify the coordinates of the text box on the
  3. # splash screen.
  4.  
  5. version=3
  6.  
  7. # should the picture be displayed?
  8. state=1
  9.  
  10. # fgcolor is the text foreground colour.
  11. # bgcolor is the text background (i.e. transparent) colour.
  12.  
  13. fgcolor=7
  14. bgcolor=0
  15.  
  16. # (tx, ty) are the (x, y) coordinates of the text window in pixels.
  17. # tw/th is the width/height of the text window in pixels.
  18.  
  19. tx=40
  20. ty=116
  21. tw=944
  22. th=612
  23.  
  24. # ttf message output parameters
  25.  
  26. text_x=20
  27. text_y=20
  28. text_size=22
  29. text_color=0xeef4ff
  30.  
  31. # name of the picture file (full path recommended)
  32. jpeg=/usr/share/bootsplash/themes/my/images/bootsplash-1024x768.jpg
  33. silentjpeg=/usr/share/bootsplash/themes/my/images/silent-1024x768.jpg
  34.  
  35. progress_enable=1
  36.  
  37. # background
  38. box silent noover 512 732 1000 752 #04045498
  39. box silent inter 512 733 512 751 #99ccff #99ccff #324bb0 #526bb0
  40. box silent       512 733 1000 751 #99ccff #99ccff #324bb0 #526bb0
  41.  
  42. # black border
  43. box silent         512 732 1000 732 #313234
  44. box silent         512 752 1000 752 #eef4ff
  45. box silent         512 732 512 752 #313234
  46. box silent         1000 732 1000 752 #eef4ff
  47.  
  48. # text box (left, top)
  49. box     35 111  35 729 #313234
  50. box     36  111 985 111 #313234
  51.  
  52. # (right, bottom)
  53. box     985 112 985 729 #eef4ff
  54. box     36 729 985 729 #eef4ff
  55.  
  56. # box itself
  57. box noover 36 112 984 728 #04045498
  58.  
  59. overpaintok=1
  60.  
  61. LOGO_CONSOLE=vt
Сохраняем его под именем bootsplash-1024x768.cfg в каталоге /etc/bootsplash/themes/my/config.
В файле /etc/sysconfig/bootsplash необходимо исправить строчку THEME=Mandriva к виду THEME=my
Есть два способа внедрения bootsplash в initrd.

Первый способ это создать собственный initrd:
Если все сделали то остается выполнить две команды от имени рута:
  1. # mkinitrd /boot/initrd-2.6.17-13.img 2.6.17-13mdv

где initrd-2.6.17-13.img образ загрузки, который будет содержать нашу тему;
2.6.17-13mdv это ядро, для которого он предназначен.
  1. # /usr/share/bootsplash/scripts/make-boot-splash /boot/initrd-2.6.17-13.img 1024x768

вставляем нашу тему в наш образ, если файл конфигурации темы корректен, то сообщений не должно быть.
Последний штрих в нашей затее это редактирование /boot/grub/menu.lst
Строки (Обратите внимание (hd0,X) это условное обозначение и указывает загрузчику с какого раздела загрузить ядро,
у меня этот параметр равен (hd0,5))title linux
  1. kernel (hd0,X)/vmlinuz BOOT_IMAGE=linux root=/dev/sda1 resume=/dev/sdb5 splash=silent mem=1024M vga=788
  2. initrd (hd0,X)/initrd.img

Приводим к виду title linux
kernel (hd0,X)/vmlinuz BOOT_IMAGE=2.6.17-13 root=/dev/sda1 resume=/dev/sdb5 splash=silent mem=1024M vga=791
initrd (hd0,X)/initrd-2.6.17-13.img

Хочу обратить внимание на параметр vga в нашем случае он должен быть равен 791, то есть разрешению 1024х768.
Если он будет равен 788 (800х600) то мы не увидим нашего творения.
Сохраняем и перезагружаем компьютер и наслаждаемся видом.

Способ второй внедрение bootsplash в существующий initrd.
Рекомендую сделать backup существующего initrd.
Дефолтный initrd лежит в корне каталога /boot и называется initrd-2.6.17-13mdv.img.
Чтобы внедрить в него свою тему выполняем команду из под рута:
  1. # /usr/share/bootsplash/scripts/make-boot-splash /boot/initrd-2.6.17-13mdv.img 1024x768


Осталось сменить в /boot/grub/menu.lst параметр vga=788 на vga=791, то есть получим: title linux
  1. kernel (hd0,X)/vmlinuz BOOT_IMAGE=linux root=/dev/sda1 resume=/dev/sdb5 splash=silent mem=1024M vga=791
  2. initrd (hd0,X)/initrd.img


Собственно всё, перезагружаем компьютер и смотрим, что получилось.
Удачи вам.

Попов Виктор.