В началоHOWTO fbsplash → Создание образа initramfs
Gentoo-doc HOME Пред.: Установка fbsplash и splashutilsВ началоУровень выше: HOWTO fbsplashСлед.: Настройка загрузчика

3. Создание образа initramfs

Приведенных выше инструкций (а также второй части следующего howto, Configuring your bootloader) достаточно, чтобы получить splash screen после того как ядро будет загруженно. Однако если вы хотите чтобы сексапильная девка с пингвином на маечке появлялась раньше (сразу после инициализации - vesafb-tng), вам понадобится initramfs.

3.1. Что такое initramfs?

(Цитата Spock'а): ["Initramfs (initial ramfs) это кусок кода который распаковывает сжатый cpio образ во время загрузки ядра."]

Чтобы использовать initramfs его надо сначала создать.Образ initramfs должен содержать:

  1. картинки,которые будут использоваться как фон;

  2. необходимы файлы конфигурации;

  3. утилиту помощника (splash_helper).

Изображения и конфигурационные файлы вместе образуют тему gensplash.

Существует два пути для использования initramfs image:

  1. компиляция initramfs image непосредственно в ядро;

  2. загрузка initramfs image динамически во время загрузки системы (с использованием 'initial ram disk' - initrd).

Вы можете сами выбирать вариант, который вам по душе.

3.2. Компиляция образа initramfs непосредственно в ядро

Сначала удалите старый образ initramfs:

# rm /usr/src/linux/usr/initramfs_data.cpio.gz

Теперь создайте новый образ initramfs, содержащий изображения, конфгурационные файлы и userspace helper. Проще всего будет сделать это при помощи splash_geninitramfs (идущим в составе splashutils). Его использование похоже на утилиту 'splash' из пакета bootsplash.

# splash_geninitramfs -v -g /usr/src/linux/usr/initramfs_data.cpio.gz -r 1024x768 emergence

При компиляции образа initramfs непосредственно в ядро, вам придется пересобрать ядро (этого недостатка лишен способ с использованием initrd):

# cd /usr/src/linux
# touch usr/initramfs_data.cpio.gz
# make bzImage
# mount /boot
# make install

3.3. Загрузка образа initramfs динамически

Этот вариант практически идентичен сборке образа initramfs вместе с ядром. Различие заключается в том, что вместо создания образа внутри ядра (и последующей сборке его коммандой 'make' и копированием в точку монтирования /boot при помощи 'make install'), вы создадите образ initramfs как отдельный (initrd) файл и вам не придется пересобирать ядро. Однако, придется добавить строчку в конфигурационный файл загрузчика (по которой он найдет initrd файл). Этим мы и займемся в этой части howto

Сначала при помощи splash_geninitramfs создадим initrd файл (который содержит изображения, конфиги и userspace helper):

# mount /boot
# cd /etc/splash
# splash_geninitramfs -v -g /boot/fbsplash-emergence-1024x768  -r 1024x768 emergence

Как видно файл будет создан в точке монтирования(или каталоге) /boot.

К сожалению, по словам Spock'а,"вы не сможете дописать новую initramfs информацию к initrd образу". Это означает, что данной возможностью не смогут воспользоваться пользователи genkernel ядер, т. к. genkernel создает собственный образ initrd для процесса загурзки.

solshark [solshark_at_rambler_dot_ru]: genkernel 3.3.6 позволяет сделать так:

# genkernel --gensplash=DangerGirl initrd

Так что теперь и для пользователей genkernel есть возможность воспользоваться данной фишкой.

Если вы не меняете ядро, то просто поменяйте строку описания initrd в grub.conf с:

root=/dev/ram0 real_root=/dev/$ROOT
initrd (hd0,0)/boot/initrd

на:

root=/dev/$ROOT
initrd (hd0,0)/boot/fbsplash-emergence-1024x768

3.4. Создание собственных тем для gensplash

Стандартная тема 'emergence' и её конфигурационные файлы находятся в /etc/splash/emergence.

Если хотите создать новую (например с названием 'newtheme'), вам следует:

1. создать для неё каталог в /etc/splash:

# mkdir /etc/splash/newtheme

2. создать каталог 'images' в /etc/splash/newtheme:

# mkdir /etc/splash/newtheme/images

и скоприовать туда картинки (в форматах png/jpg) которые будут использованы в теме.

3. создать необходимые конфигурационные файлы. Они должны иметь расширение *.cfg и находиться в каталоге темы (/etc/splash/newtheme). Образцы конфигруационных файлов можно посмотреть в теме ('emergence'):

# ls -l /etc/splash/emergence/
images/
1024x768.cfg
1280x1024.cfg
800x600.cfg

Очень важно убедиться в том в опциях 'jpeg=' и 'silentjpeg=' (в *.cfg файлах) прописаны корректные ссылки на файлы с изображениями (в каталоге /etc/splash/newtheme/images). Если вы не используете jpeg для создания темы, замените опции на 'pic=' и 'silentpic='.

Для более близкого знакомства с форматом тем fbsplash, изучите документацию пакета splashutils:

# less /usr/doc/splashutils-version/theme_format.gz

3.5. Перевод тем bootsplash в темы gensplash

Так же Spock сделал удобную утилиту bootsplash2fbsplash (этот скрипт идет в комплекте со splashutils) ,который сделает легким преобразование тем bootsplash формат gensplash.

Например если у вас есть тема 'gentoo-highquality' ,расположенная в /etc/bootsplash ,вам нужно только скомандовать(от рута):

# bootsplash2fbsplash gentoo-highquality

и утилита сделает gensplash-совместимую тему в каталоге /etc/splash (/etc/splash/gentoo-highquality) со всеми необходимыми файлами.

3.6. Использование собственных тем gensplash

Для создания нового образа из темы которую вы только что сделали(пусть ее имя 'newtheme',а разрешение 1280x1024), вам необходимо использовать splash_geninitramfs.

Если вы решили вкомпилировать образ в ядро(первый вариант):

# splash_geninitramfs -v -g /usr/src/linux/usr/initramfs_data.cpio.gz -r 1280x1024 newtheme
# cd /usr/src/linux
# touch usr/initramfs_data.cpio.gz
# make bzImage
# mount /boot
# make install

Если вы используете initrd (второй вариант):

# mount /boot
# splash_geninitramfs -v -g /boot/fbsplash-newtheme-1280x1024 -r 1280x1024 newtheme

Вот что означают опции splash_geninitramfs:

  • -v  splash_geninitramfs выводит дополнительную информацию

  • -g указывает splash_geninitramfs создать образ initramfs (/usr/src/linux/usr/initramfs_data.cpio.gz  или /boot/fbsplash-newtheme-1280x1024)

  • -r говорит splash_geninitramfs использовать разрешение 1280x1024

  • newtheme указывает splash_geninitramfs искать .cfg файлы в каталоге /etc/splash/newtheme

Для просмотра описания всех опций splash_geninitramfs' введите:

# splash_geninitramfs --help

Последний пункт в этой части how-to,полезный совет из документации splashutils':

[Если вы хотите сохранить немного памяти и не планируете использовать все доступные разрешения вы можете скопировать .cfg файлы и фоновые картинки только для того разрешения,которое вы используете.]

А теперь пришло время настроить ваш загрузчик.

Пред.: Установка fbsplash и splashutilsВ началоУровень выше: HOWTO fbsplashСлед.: Настройка загрузчика
В началоHOWTO fbsplash → Создание образа initramfs