The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Отображение картинки на этапе загрузки Linux (console linux color boot patch)


<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>
Ключевые слова: console, linux, color, boot, patch,  (найти похожие документы)
From: Павел Зайцев (Stealth) <http://stealth.pp.ru/>; Date: Mon, 20 Sep 2004 18:21:07 +0000 (UTC) Subject: Отображение картинки на этапе загрузки Linux Оригинал: http://linux.net.ru/node/view/220 Красивая Linux консоль - это реально! Автор: Павел Зайцев (Stealth) <http://stealth.pp.ru/>; Сайт: http://linux.net.ru Года три назад довелось мне поставить SUSE Linux (тогда еще версии 7-8), как же красиво была оформлена загрузка ядра! Прошли года, любимая Слака уже доросла до 10 версии, а ничего похожего так и не было ;) Решив устроить консольку покрасивее вспомнил про SUSE. Нашел всё, что понабилось при для украшения и приступил к делу... Посмотреть скриншот загрузки можно тут, это и должно получиться в итоге (http://bootsplash.de/files/themes/screenshots/Theme-TuxInfo-Slackware-silent.png). Программа, которая должна внести красоту в мир черной конслои Linux называется bootsplash. Точнее это патч для ядра и небольшой набор утилит. Официальный сайт проекта http://www.bootsplash.org почему-то не развивается, но немецкий сайт http://www.bootsplash.de оказался к великому удивлению очень часто обновляемым и интересным. Подготовка ---------- Итак, нам понадобятся(в квадратный скобках указаны названия файлов, актуальные на 1 июля 2004 года): 1) Исходники ядра [linux-2.6.7.tar.bz2] (http://kernel.org) 2) Патч для ядра [bootsplash-3.1.4-sp2-2.6.7.diff](обязательно проверьте, чтобы версия ядра и патча совпадали) (http://www.bootsplash.de/) 3) Набор утилит bootsplash [bootsplash-3.1.tar.bz2](bootsplash-3.1.tar.bz2) ftp://ftp.suse.com/pub/people/stepan/bootsplash/rpm-sources/bootsplash/bootsplash-3.1.tar.bz2 4) Тему для загрузки [Theme-TuxInfo-Slackware.tar.bz2] (Великое множество тем можно найти всё там же на http://www.bootsplash.de) 5) Терпение [/dev/terpenie] (http://terpenie.sf.net) :) Примечание: архив с набором утилит bootsplash-3.1.tar.bz2 с сайта bootsplash.de почему-то не хочет распаковываться, поэтому лучше скачать из первоисточника ftp://ftp.suse.com/pub/people/stepan/bootsplash/rpm-sources/bootsplash/bootsplash-3.1.tar.bz2 Приступим... ------------ 1) Распаковываем архив с программой и копируем нужные утилиты в /sbin/ # tar -xvjf bootsplash-3.1.tar.bz2 # cd bootsplash-3.1/Utilities # make # cp -p splash /sbin/ # cp -p fbmngplay /sbin/ # cp -p fbresolution /sbin/ # cp -p fbtruetype /sbin/ # cp -p splashpbm /sbin/ 2) Создаем директорию /etc/bootsplash: # mkdir /etc/bootsplash Создаем директорию для тем: # mkdir /etc/bootsplash/themes 3) Устанавливаем нашу тему # tar -xvjf Theme-TuxInfo-Slackware.tar.bz2 # cp -r Theme-TuxInfo-Slackware/ /etc/bootsplash/themes/ Создаем символическую ссылку на нашу тему # ln -s /etc/bootsplash/themes/Theme-TuxInfo-Slackware /etc/bootsplash/themes/current 4) Создаем загрузочный файл initrd.splash: # /sbin/splash -s -f /etc/bootsplash/themes/current/config/bootsplash-1024x768.cfg >> /boot/initrd.splash 5) Правим LILO: Открываем lilo.conf # mcedit /etc/lilo.conf и добавляем initrd=/boot/initrd.splash к существующей загрузке ядра, чтобы получилось примерно следующее image=/vmlinuz root=/dev/hda2 label=Linux initrd=/boot/initrd.splash read-only Влючаем фреймбуфер на частоте 1024x768 vga=791 В опции загрузки ядра еще можно добавить "splash=verbose" или "splash=silent" для уточнения варианта запуска темы. append="splash=verbose" Если хотите, чтобы при загрузке была полоска прогресс-бара и ничего больше, то используйте append="splash=silent" ,но тут еще на до потрудиться над заполнением этого градусника, а точнее проставить контрольные точки в /etc/rc.d/rc.S , /etc/rc.d/rc.M и /etc/rc.d/rc.6 . Для начала создаем файл /etc/rc.d/rc.bootsplash следующего содержания: #!/bin/sh function progressbar(){ if [ $# != 1 ] then echo "Use: progressbar {progresso}" exit 1 fi echo "show $(( 65534 * $1 / 100 ))" > /proc/splash } Устанавливаем права доступа на запуск # chmod 755 /etc/rc.d/rc.bootsplash Теперь добавляем в rc.S и rc.M (в самое начало) запуск rc.bootsplash . /etc/rc.d/rc.bootsplash И расставляем значения прогресс-бара progressbar [число от 0 до 100] Вот пример как я расставил эти значения: в rc.S PATH=/sbin:/usr/sbin:/bin:/usr/bin . /etc/rc.d/rc.bootsplash progressbar 10 # Mount /proc right away: /sbin/mount -v proc /proc -n -t proc ........ # Configure ISA Plug-and-Play devices: if [ -r /etc/isapnp.conf ]; then if [ -x /sbin/isapnp ]; then /sbin/isapnp /etc/isapnp.conf fi fi progressbar 20 # This loads any kernel modules that are needed. These might be required to # use your ethernet card, sound card, or other optional hardware. if [ -x /etc/rc.d/rc.modules -a -r /proc/modules ]; then . /etc/rc.d/rc.modules fi и так далее до progressbar 40 в rc.M . /etc/rc.d/rc.bootsplash echo "Going multiuser..." # Screen blanks after 15 minutes idle time. /bin/setterm -blank 15 # If there's no /etc/HOSTNAME, fall back on this default: if [ ! -r /etc/HOSTNAME ]; then echo "darkstar.example.net" > /etc/HOSTNAME fi # Set the hostname. /bin/hostname `cat /etc/HOSTNAME | cut -f1 -d .` progressbar 50 # Initialize PCMCIA devices: ..... # Start the system logger. Normally this is started by # rc.inet2 because /usr might be mounted via NFS. if [ -x /etc/rc.d/rc.syslog ]; then . /etc/rc.d/rc.syslog start fi fi progressbar 60 # Remove stale locks and junk files (must be done after mount -a!) /bin/rm -f /var/lock/* /var/spool/uucp/LCK..* /tmp/.X*lock /tmp/core /core 2> /dev/null и так далее до progressbar 100 в rc.6 PATH=/sbin:/etc:/bin:/usr/bin . /etc/rc.d/rc.bootsplash /sbin/splash -s -u 0 /etc/bootsplash/themes/current/config/bootsplash-1024x768.cfg progressbar 90 # If there are SystemV init scripts for this runlevel, run them. if [ -x /etc/rc.d/rc.sysvinit ]; then . /etc/rc.d/rc.sysvinit fi progressbar 80 # Set linefeed mode to avoid staircase effect. stty onlcr Если прогресс-бар не нужен, то в /etc/rc.d/ вообще лезть не надо ;) 6) Теперь пришло время поковырять ядро ;) Распакуем ядро в /usr/src/linux-2.6.7 и перейдем в папку с исходиками Скопируем патч bootsplash-3.1.4-sp2-2.6.7.diff в ту же папку и применим его patch -p1 < bootsplash-3.1.4-sp2-2.6.7.diff Если появляются сообщения об ошибке (FAILED), то версия ядра и патча не совпадают! Конфигурирем ядро с поддержкой framebuffer`а и initrd Почитать про установку ядра 2.6 можно почитать тут http://linux.net.ru/node/view/121 Для того, чтобы можно было открыть меню Bootsplash configuration ---> нужно выполнить все условия: Processor type and features ---> [ ] Use register arguments (EXPERIMENTAL) Device Drivers ---> Graphics support ---> [*] Support for frame buffer devices [*] VESA VGA graphics support Console display driver support ---> [*] Video mode selection support <*> Framebuffer Console support Logo configuration ---> [ ] Bootup logo Bootsplash configuration ---> [*] Bootup splash screen И еще включить поддержку INITRD (из-за этого долго не мог понять почему не открывается меню bootsplash) Device Drivers ---> Block devices ---> <*> RAM disk support (4096) Default RAM disk size (kbytes) [*] Initial RAM disk (initrd) support Не забудьте отконфигурировать и всё остальное, чтобы не только было красиво, но и работали девайсы ;))) Собираем и устанавливаем ядро #make install; make modules; make modules_install Нынче установка ядра упростилась и даже не надо отдельно запускать lilo (если конечно загрузка происходить с /vmlinuz ). Но на всякий случай можно проверить правильность установки ядра 7) Перезагружаемся и наслаждаемся проделанной работой ;) Если что-то не получилось или есть какие-то замечания, то оставьте комментарий к этой статье. Статью разрешается использовать, соблюдая лицензию GPL. Ссылка на первоисточник http://linux.net.ru обязательна! (с) Stealth AKA Павел Зайцев mailto: stealth[at]linux.net.ru

<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>

Обсуждение [ RSS ]
  • 1, Константин (??), 18:24, 10/03/2007 [ответить]  
  • +/
    У меня в исходниках почему то отсутствует папка /driver/video/bootsplash/ со всем содержимым, из-за этого ничего не получается...
     
  • 2, Александр (??), 16:44, 25/02/2008 [ответить]  
  • +/
    Пробовал все сделать с убунтой. После перезапуска - kernel panik.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Спонсоры:
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2021 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру