Версия для печати темы

Нажмите сюда для просмотра этой темы в оригинальном формате

LinuxForum _ Gentoo _ Делаем анимированный bootsplash.

Автор: Mitya-ncc Среда, 23 Июня 2004, 19:21

Мини how-to.

1. Установка программ

CODE

emerge bootsplash
etc-update

У меня поставился bootsplash-0.6-r16 С ACCEPT_KEYWORDS лучше не ставить, с ним чуть сложнее всё получается.
На gentoo.org рекомендуют ставить патч для bootsplash, но мы этого делать не будем, так он старый и не поддерживает новые baselayout, => результат может быть весьма неожиданный. Тем более, что сейчас из всего архива с патчем надо будет всего один файл, который по какой-то непонятной для причине есть и последних bootsplash, но не устанавливается.

2. Настройка ядра
В ядрах vanilla нет нужного нам патча для bootsplash, но его можно взять из уже имеющегося у нас архива /usr/portage/distfiles/bootsplash-0.6-r16.tar.bz2
Копируем нужный патч в каталог с ядром и устанавливем его.
CODE

bzcat bootsplash-3.1.4-2.6.3.diff.bz2 | patch -p1

В ядрах gentoo, love, mm и некоторых других патч этот уже есть, остаётся только правильно сконфигурировать.
CODE

cp .config ../ && make mrproper && cp ../.config . && make menuconfig

Проверьре, чтобы все эти опции были включены. Заметьте, что фреймбуфер нужен именно vesa.
CODE

Block Devices ->
   [*] Loopback device support
   [*] RAM disk support
   (4096)   Default RAM disk size
   [*] Initial RAM disk (initrd) support
Console Drivers ->
   [*] VGA text console
   [*] Video mode selection support
Console Drivers -> Frame-buffer support ->
   [*] Support for frame buffer devices
   [*] VESA VGA graphics console
   [*] Use splash screen instead of boot logo

Компилируем и устанавливаем ядро. (для 2.6.х !!)
make && make modules_install
mount /boot
cp System.map /boot && cp arch/i386/boot/bzImage /boot

3. Настройка загрузчика
Разберём настройку загрузчика Grub, так как почти все джентульмены используют именно его. Для lilo всё делается аналогично, но опции ядра надо добавить в append и vga соответственно.
Возьмём уже готовый initrd. Легко догадаться, что вместо 1024х768 надо подставить другое значение, если у Вас другое разрешение.
CODE

cp /usr/share/bootsplash/initrd-gentoo-1024x768 /boot
nano -w /boot/grub/grub.conf

Редактируем. Вот пример из моего grub.conf
CODE

title  Linux 2.6.5 love-sources with splash
root (hd0,0)
kernel /bzImage-love ro root=/dev/hda6 video=vesa:1024x768@76,ywrap,mtrr vga=0x317 splash=silent
initrd /initrd-gentoo-1024x768

Вот табличка из файла /usr/src/linux/Documentation/fb/vesafb.txt из которой Вам станет ясно, какое значение прописать в параметре vga.
Параметр splash может быть silent или verbose. Пишем silent, так как самое интересное впереди.
В параметре initrd пишем название только что скопированного файла.
CODE

   | 640x480  800x600  1024x768 1280x1024
----+-------------------------------------
256 |  0x301    0x303    0x305    0x307
32k |  0x310    0x313    0x316    0x319
64k |  0x311    0x314    0x317    0x31A
16M |  0x312    0x315    0x318    0x31B

Теперь внесём скрипт bootsplash в загрузочный уровень default.
CODE

rc-update add bootsplash default

Всё, bootsplash установлен, и (может быть wink.gif ) при следующем запуске порадует Вас своей красотой smile.gif .
Но пойдём дальше и добавим в загрузку элементы анимации.
4. Анимация
Выкачиваем http://www.aichler.net/gentoo/bootsplash/bootsplash-animations.tar.gz.
распаковываем его содержимое:
CODE

tar zxvf bootsplash-animations.tar.gz -C /etc/bootsplash/default
cd /etc/bootsplash/default
mv bootsplash-animations animations

Внесём изменения в конфигурационный файл коммандой
CODE
echo 'BOOTSPLASH_ANIMATIONS="yes"' >> /etc/conf.d/bootsplash

Прошу заметить, что env-update делать не нужно.

Создайте файл /etc/bootsplash/default/config/animations.cfg такого содержания:
CODE

checkroot start:bootanim start hdd.mng &
checkfs start:bootanim stop &
keymaps start:bootanim start key.mng &
urandom start:bootanim stop &
netmount start: bootanim start network.mng &
checkroot stop:bootanim start -x 0 -y 50 halt.mng &

В последствии его можно легко изменить и дополнить. Тут, я думаю, проблем не возникнет. Все анимированные картинки лежат в /etc/bootsplash/default/animations.

ВАЖНО! Проверьте, есть ли в каталоге /sbin скрипт bootanim, если нет, то создайте его с таким содержанием:
(Этот скрипт есть в самом последнем bootsplash, но почему-то, как я уже говорил, не устанавливается, очевидно баг. Также он есть в патче для bootsplash и baselayout, который imho устанавливать нет никакого смысла)
CODE

#!/bin/bash
# $Header:
#
# bootanim - boot animation wrapper script for fbmngplay
#
# This script parses /usr/share/splash/current/config/bootsplash-XxY.cfg
# to determine the correct animation position.
#
# (C) 2002 SuSE AG. Written by Stefan Reinauer <stepan@suse.de>
#
# modified by Michael Aichler <micha at aichler dot net>
#
usage()
{
echo "Usage: `basename $0` COMMAND [OPTIONS] mng1 [mng2 ...]"
cat << EOF

 Available commands:
start  starts given animation
stop  fades out all running animations
kill  immediately stops all animations
next  kills current and starts next animation.

 Options for use with start command:
EOF
echo -e "`fbmngplay -h 2>&1 | grep -v \"usage:\" | grep \"-\"`\n"
}
#!/bin/bash
# $Header:
#
# bootanim - boot animation wrapper script for fbmngplay
#
# This script parses /usr/share/splash/current/config/bootsplash-XxY.cfg
# to determine the correct animation position.
#
# (C) 2002 SuSE AG. Written by Stefan Reinauer <stepan@suse.de>
#
# modified by Michael Aichler <micha at aichler dot net>
#
usage()
{
echo "Usage: `basename $0` COMMAND [OPTIONS] mng1 [mng2 ...]"
cat << EOF

 Available commands:
start  starts given animation
stop  fades out all running animations
kill  immediately stops all animations
next  kills current and starts next animation.

 Options for use with start command:
EOF
echo -e "`fbmngplay -h 2>&1 | grep -v \"usage:\" | grep \"-\"`\n"
}

if [ "$UID" -ne "0" ]; then
echo "$0 must be started as user root!!!"
echo "Exiting..."
exit 1
fi

test -f /etc/conf.d/bootsplash && . /etc/conf.d/bootsplash
test "${BOOTSPLASH_ANIMATIONS}" != "yes" && exit 0

if [ ! -x /sbin/splash ]; then
echo "`basename $0`: can't find splash utility"
exit 1
fi

BOOTSPLASH_THEME="$(/sbin/splash theme)"

DIRECTORY=/etc/bootsplash/${BOOTSPLASH_THEME}/animations
OPTIONS=""
FILES=""
buffer=""
console=""

case "$1" in
start)
 # We fall through here.
;;
stop)
 sleep $2
 killall -q -2 fbmngplay
 exit 0
;;
kill)
 killall -q fbmngplay
 exit 0
;;
next)
 killall -q -USR1 fbmngplay
 exit 0
;;
*)
 echo "`basename $0`: illegal parameter."
 usage
 exit 1
;;
esac

shift

# We end up in bootanim start

for arg in $*; do
if [ "${arg#*.}" == "mng" ]; then
 FILES="$FILES $arg"
else
 test "$arg" == "-b" && buffer="true"
 test "$arg" == "-c" && console="true"
 OPTIONS="$OPTIONS $arg"
fi
done

test -z "$buffer" && OPTIONS="$OPTIONS -b"
test -z "$console" && OPTIONS="$OPTIONS -c 1"

CMDLINE="fbmngplay $OPTIONS"

for file in $FILES; do
CMDLINE="$CMDLINE ${DIRECTORY}/${file}"
done

eval "$CMDLINE &"
if [ "$UID" -ne "0" ]; then
echo "$0 must be started as user root!!!"
echo "Exiting..."
exit 1
fi

test -f /etc/conf.d/bootsplash && . /etc/conf.d/bootsplash
test "${BOOTSPLASH_ANIMATIONS}" != "yes" && exit 0

if [ ! -x /sbin/splash ]; then
echo "`basename $0`: can't find splash utility"
exit 1
fi

BOOTSPLASH_THEME="$(/sbin/splash theme)"

DIRECTORY=/etc/bootsplash/${BOOTSPLASH_THEME}/animations
OPTIONS=""
FILES=""
buffer=""
console=""

case "$1" in
start)
 # We fall through here.
;;
stop)
 sleep $2
 killall -q -2 fbmngplay
 exit 0
;;
kill)
 killall -q fbmngplay
 exit 0
;;
next)
 killall -q -USR1 fbmngplay
 exit 0
;;
*)
 echo "`basename $0`: illegal parameter."
 usage
 exit 1
;;
esac

shift

# We end up in bootanim start

for arg in $*; do
if [ "${arg#*.}" == "mng" ]; then
 FILES="$FILES $arg"
else
 test "$arg" == "-b" && buffer="true"
 test "$arg" == "-c" && console="true"
 OPTIONS="$OPTIONS $arg"
fi
done

test -z "$buffer" && OPTIONS="$OPTIONS -b"
test -z "$console" && OPTIONS="$OPTIONS -c 1"

CMDLINE="fbmngplay $OPTIONS"

for file in $FILES; do
CMDLINE="$CMDLINE ${DIRECTORY}/${file}"
done

eval "$CMDLINE &"


Вот и всё. Темы можно найти на сайте http://bootsplash.org, а также командой emerge bootsplash-themes-livecd smile.gif

Автор: Selecter Среда, 23 Июня 2004, 21:11

Никогда такое не делал smile.gif Простой вопрос: куда темы ставить и как выбрать одну из них?
Добавил @ [mergetime]1088014923[/mergetime]
А вот поновей http://forums.gentoo.org/viewtopic.php?t=49036

Автор: Mitya-ncc Среда, 23 Июня 2004, 23:09

QUOTE
А вот поновей http://forums.gentoo.org/viewtopic.php?t=49036
У них анимации нету wink.gif
Темы ставить в /etc/bootsplash, ну и initrd, конечно. smile.gif
Выбирать в /etc/conf.d/bootsplash и симлинком /etc/bootsplash/default

Автор: VadimD Четверг, 24 Июня 2004, 12:18

Если я правильно понял анимированные картники появляются при старте различных сервисов из /etc/init.d/. У меня раньше такого не получалось, ходил вокруг да около, потом забил и стартовал fbmngplay -икс -игрек анимашка.mng из /etc/conf.d/local.start(stop). Довольно красиво получалось. Один вопрос - как создавать свои *.mng? Раньше делал, помню, лого моей конторы крутилось, но сейчас забыл и "хау-тя" где-то потерялась. Напомните плс....
И еще, 2Mitya-ncc - спасибо.

Автор: Mitya-ncc Пятница, 25 Июня 2004, 1:07

Я даже не знаю... huh.gif
libmng надо, я думаю. А чем делать может есть https://sourceforge.net/projects/libmng/...
Добавил @ [mergetime]1088115843[/mergetime]
http://libpng.nigilist.ru/pub/png/pngaped.html

Автор: VadimD Пятница, 25 Июня 2004, 11:13

Нашел уже ту бумажку...
Мне говорили умные люди - "если голова, как унитаз, и в ней ничего не задерживается, надо иметь записную книжку, а лучше две, как у меня" - не слушал.... sad.gif
Итак, emerge imagemagick, обязательно USE="png"
Лого рисовал в блендере.
В мегарульном imagemagick`е есть программа convert. Ман её...
Главное, не переусердствовать с параметром -delay, не слишком маленький, 20-35 оптимально, короче, опытным путем, а то fbmngplay у меня сегфаултил.
Все, наслаждаемся.
оффтоп. В идеи входило создание эмнгешки типа VirtuaGirl для fb, но у меня ни камеры, ни стриптизерши под рукой не оказалась biggrin.gif

Автор: Mitya-ncc Суббота, 26 Июня 2004, 2:33

Спасибо. Тоже что-нить сделаю, хорошая идея. wink.gif

Автор: serg_sk Пятница, 09 Июля 2004, 19:46

На если у меня lilo??? Киньте в меня ссылкой про bootsplash настройку!!!

Автор: Mitya-ncc Пятница, 09 Июля 2004, 23:40

QUOTE(serg_sk @ Friday, 09 July 2004, 19:46)
На если у меня lilo??? Киньте в меня ссылкой про bootsplash настройку!!!
*


если lilo то точно также.
только опции разделить надо
vga=...
append=video=vesa:1024x768,ywrap,mtrr splash=silent
initrd=...
root=/dev/hd..
read-only

Автор: serg_sk Пятница, 09 Июля 2004, 23:49

Спасибо! А если lilo от шапки, или это неважно?

Автор: deisler Суббота, 10 Июля 2004, 1:11

QUOTE(serg_sk @ Friday, 09 July 2004, 20:49)
Спасибо! А если lilo от шапки, или это неважно?
*


Пофиг. Главное нормально конфиг написать

Автор: innkeeper Воскресенье, 31 Октября 2004, 11:44

А ведь можно сделать что такое путём самого LILO без перекомпиляции ядра и установки доп. софта.

У меня как то один раз получилось вставить хоть не анимированую, но картинку на задний фон вместо этого красного квадрата...

Вот сейчас тоже решил этим заняться, но LILO почему то говорит, что формат картинки не поддерживается. Вроде всё делаю как в мане: картинка *.bmp 640х480х16

Помогите плиз unsure.gif

p.s. вот ещё немного о lilo http://www.gamers.org/~quinet/lilo/

Автор: polachok Воскресенье, 07 Ноября 2004, 17:07

а как насчет gensplash(splashutils) ? bootsplash вроде уже того, издох smile.gif

Powered by Invision Power Board ()
© Invision Power Services ()