Elérkeztünk a VPS (Vakulj Paraszt Systems) sorozatunk negyedik részéhez (előző részek: Linuxos laptopok, VPS ;-) rendszerek, VPS rendszerek II - animált lilo (tutorial), VPS rendszerek III - Grub splash).
A mai téma - amivel a szomszéd gyereknek is demozhatjuk, hogy milyen ``3l33t operációs rendszer guruk is vagyunk" - a bootsplash képernyő készítése tetszőleges Linux disztribúció alá.
Sokan azt hiszik, hogy a bootsplash képernyő csak a SuSE meg a hasonló júzerbarát operációs rendszerek felhasználóinak kiváltsága. De mennyire nem így van!
Most megnézzük, hogy hogyan lehet mondjuk egy ``öreg, elavult, maradi'' Debian GNU/Linux operációs rendszer alá ilyen grafikusan felturbózott stuffot tenni.1.) Mi az a bootsplash?
A bootsplash egy olyan háttér kép vagy előtér kép, amely a kernel elindulása után szinte azonnal megjelenik, és a kernel üzenetek már ezen jelennek meg. Vagy éppen ellenkezőleg, arra hivatott, hogy eltakarja a tapasztalatlan felhasználó elől a (számára zavaró) kernel üzeneteket. Természetesen a "hardcore unix guru" rendszergazdák, és az 3l33t hax0r-ok nem szeretik az ilyen üveggyöngyöket, de van akiknek ez tetszik. Ha valakinek tetszik, akkor miért ne készítse el?
"Jó jó, sok a szöveg. Azt mondd, hogy hogyan néz ki."
Valahogy így:
Bootsplash kernel üzenet kiírással:
http://www.bootsplash.org/verbose-mode.jpg
Bootsplash "csendes" üzemmódban:
http://www.bootsplash.org/silent-mode.jpg
(de hogy stílusosak legyünk, és mert Debian a rendszer nézzük meg ezt:
http://www.kde-look.org/content/pre2/11470-2.jpg)
2.) Nehéz elkészíteni?
Egyáltalán nem, ha elolvasod ezt a kis leírást, akkor szinte gyerekjáték. Persze azért tudni kell kernelt fordítani hozzá. Ismerni kell a Linux kernel boot koncepcióját, stb.
3.) Mi kell a bootsplash elkészítéséhez?
- kernelpatch
- némi kernel beállítás
- megfelelő téma
- és userspace utility-k
Na lássunk hozzá:
a.) kernel patchelés és fordítás
Először is ellenőrizd, hogy a megfelelő kernel forrása ki van-e bontva a /usr/src/linux könyvtárba (ez a tutorial a legfrissebb stabil 2.6-os kernellel készült, amely jelen esetben a 2.6.5-ös). Ha a forrás megvan, akkor szükség lesz egy bootsplash patch-re. A 2.6.5-ös kernelhez még nem jelent meg (tudomásom szerint) ilyen patch. Sebaj, én elkészítettem hozzá egy korábbi patch portját. Ezt letöltheted innen:
www.hup.hu/old/stuff/kernel/bootsplash/v2.6.5/bootsplash.patch
Egyéb esetekben letöltheted a SuSE által karbantartott bootsplash patcheket innen:
ftp://ftp.suse.com/pub/people/stepan/bootsplash/kernel/
A kernel patchelés menete:
tegéped:~ # cd /usr/src/linux
tegéped:/usr/src/linux # cat bootsplash.patch |
patch -p1
patching file drivers/char/console.c
patching file drivers/char/keyboard.c
patching file drivers/char/n_tty.c
patching file drivers/video/Config.in
patching file drivers/video/Makefile
patching file drivers/video/fbcon-jpegdec.c
patching file drivers/video/fbcon-jpegdec.h
patching file drivers/video/fbcon-splash.c
patching file drivers/video/fbcon-splash.h
patching file drivers/video/fbcon-splash16.c
patching file drivers/video/fbcon.c
patching file include/video/fbcon.h
patching file kernel/panic.c
tegéped:/usr/src/linux #
Ha valami nem tiszta a kernel patchelés menetében, akkor olvasd el a
HupWikiben a Linux kernel patchelés szócikket.
Ha a patchelés kész, akkor konfiguráljuk a kernelt. Először is szükség van a kernelben VESA framebuffer támogatásra.
Menj a "Device Drivers" -> "Graphics support" -> menüponthoz, és válaszd a "Support for frame buffer devices", a "VESA VGA graphics support" opciókat, majd kapcsold be a "Bootsplash configuration" alatt levő "Bootup splash screen" opciót. Kellenek még a "Console display driver support" alatti "Video mode selection support" és a "Framebuffer Console support" opciók is.
Szintén engedélyezni kell a kernelben a "RAM disk support" és az "Initial RAM disk (initrd) support" opciókat is a "Device Drivers" -> "Block devices" menüpont alatt.
Ha ezek megvannak, akkor mentsd el a konfigot, fordítsd le a kernelt, majd telepítsd a /boot könyvtárba. Konfiguráld a lilo-t vagy a grubot az új kernelhez.
b.) a kép elkészítése
Mivel a bootolás folyamán amikor a képet be akarjuk tölteni még nincs filerendszer, a képet initial ramdisk-be (initrd) kell tennünk.
Készítsük el! Ehhez szükségünk van a "splash" névre hallgató utility-re. Ennek a forrását megtaláljuk az alábbi helyen:
ftp://ftp.suse.com/pub/people/stepan/bootsplash/rpm-sources/bootsplash/bootsplash-3.0.7.tar.bz2
Utána:
# cd ~/splash
# tar xvjf splashutils.tar.bz2
splashutils/
splashutils/Makefile
splashutils/splash.c
[..]
splashutils/ChangeLog
splashutils/COPYING
# cd splashutils
# make splash
gcc -Os -Wall -c -o splash.o splash.c
gcc -Os -Wall -o splash splash.o
strip splash
# cp splash /sbin/
# cd ..
Ha megvan a "splash" utility, akkor készítsük el a ramdisk-et:
#/sbin/splash -s -f
/etc/bootsplash/themes/te_témád/config/bootsplash-1024x768.cfg >>
/boot/initrd.splash
Témákat le lehet tölteni innen:
http://www.bootsplash.org/themes.html
Ha több felbontást akarsz, akkor ezt a lépést annyiszor kell megismételni, ahány különböző felbontást szeretnél. Természetesen ebben az esetben szerkeszteni kell a konfig filet is.
c.) befejezés
Állítsd be a lilo-t vagy a grubot, hogy az újonnan elkészült initrd-t betöltse a boot folyamán. Futtasd a lilo-t, rebootolj!
Ha minden jól ment, akkor valami ilyesmit kell látnod:
[...]
vesafb: framebuffer at 0xf0000000, mapped to 0xe0809000, size 16384k
vesafb: mode is 1024x768x16, linelength=2048, pages=41
vesafb: protected mode interface info at c000:565f
vesafb: scrolling: redraw
vesafb: directcolor: size=0:5:6:5, shift=0:11:5:0
fb0: VESA VGA frame buffer device
[...]
bootsplash 3.1.4-2004/02/19: looking for picture.... silentjpeg size 19730 bytes, found (1024x768, 19600 bytes, v3).
Console: switching to colour frame buffer device 128x48
[...]
Ennyi az egész!
Bővebb infó, letöltések, angol leírás, stb.:
http://www.bootsplash.org/
Sok szerencsét!