Com tenir el bootsplash en una Debian Sid ppc (per exemple en un Ibook G4) amb un kernel 2.6.7.

En aquest article s'explica com configurar una Debian Sid en un Ibook per tenir una arrancada gràfica del sistema (com la de SuSE o Mandrake, per exemple), altrament anomenada bootsplash. Aviso que només s'ha provat en un Ibook G4 amb una ATI Radeon 9200, amb la qual cosa segurament per altres màquines i distribucions s'hauran de fer algunes modificacions.


Bàsicament s'ha creat a partir de la barreja dels diferents articles relacionats amb el bootsplash que he pogut veure a la xarxa, ja que no n'he trobat cap d'específic per a debian-ppc.



1- Aplicar el pedaç al kernel:

(Suposem que tenim el kernel 2.6.7 vanilla instal·lat, amb les fonts a /usr/src/linux.)

wget http://www.bootsplash.de/files/bootsplash-3.1.4-sp3-2.6.7.diff
mv bootsplash-3.1.4-sp3-2.6.7.diff /usr/src
cd /usr/src/linux
patch -p1 < ../bootsplash-3.1.4-sp3-2.6.7.diff

2- Modificar la configuració del kernel:

make menuconfig

Hi hem de tenir aquestes opcions:

Code maturity level options --->
[*] Prompt for development and/or incomplete code/drivers
Device Drivers --->
Block devices --->
<*> Loopback device support
<*> RAM disk support
(4096) Default RAM disk size
[*] Initial RAM disk (initrd) support
Graphics support --->
[*] Support for frame buffer devices
Console display driver support --->
<*> Framebuffer Console support
Logo configuration --->
[ ] Bootup logo (no activar!)
Bootsplash configuration --->
[*] Bootup splash screen

Quan acabem, guardem i sortim.

3- Recompilar el kernel i instal·lar els mòduls:

make
mv /lib/modules/2.6.7 /lib/modules/2.6.7.old (si els teníem)
make modules_install
cp vmlinux /boot/2.6.7-splash

4- Baixar i descomprimir un "theme" (en aquest exemple utilitzem el que s'anomena "Linux"):

wget ftp://ftp.suse.com/pub/people/stepan/bootsplash/themes/Theme-Linux.tar.bz2
(en podem trobar molts de diferents a http://bootsplash.de, on fins i tot els podrem previsualitzar)
mkdir -p /etc/bootsplash/themes
cd /etc/bootsplash/themes
tar jxvf /ruta/al/Theme-Linux.tar.bz2

5- Instal·lar les splashutils:

cd /tmp
wget ftp://ftp.suse.com/pub/people/stepan/bootsplash/rpm-sources/bootsplash/bootsplash-3.1.tar.bz2
tar jxvf bootsplash-3.1.tar.bz2
cd bootsplash-3.1/Utilities
make
cp splash /usr/local/bin/

6- Crear l'initrd:

/usr/local/bin/splash -s -f /etc/bootsplash/themes/Linux/config/bootsplash-1024x768.cfg >> /boot/initrd-1024x768

7- Afegir l'initrd i el nou kernel al yaboot:

Editem el /etc/yaboot.conf i hi afegim l'entrada del nou kernel i les opcions del bootsplash més les que ja teníem, per exemple:

default=2.6.7-splash
image=/2.6.7-splash
label=2.6.7-splash
read-only
append="video=radeonfb:1024x768-32 splash=silent idebus=66 root=/dev/hda6"
initrd=/initrd-1024x768

Escrivim el yaboot: ybin -v

Nota: fixeu-vos que el controlador del "framebuffer" és "radeonfb". Si en lloc d'una radeon és una altra tarja gràfica, haureu de posar el controlador adeqüat. La partició arrel i l'opció "idebus" també depenen del vostre sistema, no del bootsplash.

8- Afegim l'splash a totes les consoles (que poden ser diferents a la primera):

Editem el fitxer /etc/init.d/rcS i hi afegim:

/usr/local/bin/splash -n -s -u 1 /etc/bootsplash/themes/ThinkLinux/config/bootsplash-1024x768.cfg
/usr/local/bin/splash -n -s -u 2 /etc/bootsplash/themes/73labAllstar/config/bootsplash-1024x768.cfg
/usr/local/bin/splash -n -s -u 3 /etc/bootsplash/themes/73labAllstar/config/bootsplash-1024x768.cfg
/usr/local/bin/splash -n -s -u 4 /etc/bootsplash/themes/73labAllstar/config/bootsplash-1024x768.cfg
/usr/local/bin/splash -n -s -u 5 /etc/bootsplash/themes/73labAllstar/config/bootsplash-1024x768.cfg

Amb això tindrem el gràfic "ThinkLinux" a la segona consola, mentre que a la resta hi haurà el de "73labAllstar".
Nota: Per a utilitzar els d'aquest exemple els podem baixar de http://www.bootsplash.de/files/themes/Theme-73labAllstar.tar.bz2 i
http://bootsplash.de/files/themes/Theme-ThinkLinux.tar.bz2 i descomprimir-los tots dos a /etc/bootsplash/themes.

9- Hi afegim la barra de progrés:

Per a tenir la barra de progrés, en les distribucions actuals ja no s'ulititza la utilitat "progress", sinó que es fa servir l'script splash.sh que ens hem descarregat amb les splashutils. Tot i així s'han de fer algunes modificacions per tal que funcioni amb la nostra Debian-ppc, per la qual cosa podeu descarregar directament l'splash.sh i els scripts d'inici modificats d'aquí:

http://www.elsud.org/~oriol/init-scripts.tar.gz
(aquest tar.gz és el que es pot trobar a http://xg.homelinux.com/archivos/userlinux/look-n-feel.html amb alguns lleugers canvis, que a la vegada són els de SuSE amb modificacions)

El descomprimim i executem el fitxer install.sh, que ens copiarà el fitxer splash.sh i el fitxer bootanim a /sbin i ens instal·larà dos nous /etc/init.d/rc i /etc/init.d/rcS (deixant-nos backups dels dos fitxers). Això també es pot fer a mà, però independentment del mètode que utilitzeu, convé abans mirar amb un diff les diferències dels nous fitxers rc i rcS amb els nostres per evitar sorpreses a l'hora d'arrancar la màquina.
Si voleu tenir splash a totes les consoles, haureu de tornar a aplicar el punt 8 al fitxer /etc/init.d/rcS, i si en lloc del theme Linux teniu algun altre theme a la primera consola, haureu de modificar la variable THEME del fitxer /sbin/splash.sh posant-hi el nom que correspongui, per exemple: THEME="ThinkLinux".

i... rebotem :-)

Enllaços d'interès:

http://www.bootsplash.org/
http://forums.gentoo.org/viewtopic.php?t=192895
http://bulma.net/body.phtml?nIdNoticia=1807
http://bootsplash.de/
ftp://ftp.suse.com/pub/people/stepan/bootsplash/rpm-sources/bootsplash/
http://xg.homelinux.com/archivos/userlinux/look-n-feel.html

una cosa, el patch -p1 que d

una cosa, el patch -p1 que dius que s'ha d'aplicar, com s'ha d'aplicar ??? si faig el que dius, patch -p1 no aplica res, suposo que ha de ser patch -p1 > fitxer, per* quin fitxer *s que se li ha d'aplicar el patch ???
S*c jo que cometo l'error ???
Gr*cies

is easy

mv bootsplash-3.1.4-sp3-2.6.7.diff /usr/src
cd /usr/src/linux
patch -p1 < bootsplash-3.1.4-sp3-2.6.7.diff

se l'ha menjat el drupal

patch -p1 * ../bootsplash-3.1.4-sp3-2.6.7.diff

substituint l'asterisc per un "més petit que".

Sembla que el drupal s'ha menjat tots els símbols que confon amb tags html. Aquest article també el pots trobar a http://bulma.net/body.phtml?nIdNoticia=2062

salut!

A mi em surt aquest error

root@tarat:/tmp/bootsplash-3.1/Utilities# make
gcc -Os -Wall -I/usr/include/freetype2 -L/usr/lib splash.c -o splash
splash.c: En la funció "fixboxcopy":
splash.c:159: avís: control reaches end of non-void function
splash.c: En la funció "setsplash":
splash.c:430: avís: unused variable `buf'
splash.c:435: avís: unused variable `pt'
gcc -Os -Wall -I/usr/include/freetype2 -L/usr/lib splashpbm.c -o splashpbm
splashpbm.c:4: avís: return type defaults to `int'
splashpbm.c: En la funció "main":
splashpbm.c:19: avís: implicit declaration of function `strcmp'
splashpbm.c:26: avís: implicit declaration of function `strncmp'
splashpbm.c:28: avís: implicit declaration of function `atoi'
splashpbm.c:54: avís: implicit declaration of function `exit'
splashpbm.c:105: avís: implicit declaration of function `malloc'
splashpbm.c:142: avís: suggest parentheses around + or - in operand of &
gcc -Os -Wall -I/usr/include/freetype2 -L/usr/lib fbresolution.c -o fbresolution
gcc -Os -Wall -I/usr/include/freetype2 -c -o fbtruetype.o fbtruetype.c
gcc -Os -Wall -I/usr/include/freetype2 -c -o fbtruetype-messages.o fbtruetype-messages.c
gcc -Os -Wall -I/usr/include/freetype2 -c -o console.o console.c
gcc -Os -Wall -I/usr/include/freetype2 -c -o ttf.o ttf.c
gcc -Os -Wall -I/usr/include/freetype2 -c -o luxisri.o luxisri.c
gcc -Os -Wall -I/usr/include/freetype2 -L/usr/lib -o fbtruetype -L/usr/lib fbtruetype.o fbtruetype-messages.o console.o ttf.o luxisri.o -lfreetype -lm
gcc -Os -Wall -I/usr/include/freetype2 -c -o fbmngplay.o fbmngplay.c
En el fitxer inclòs dès de fbmngplay.c:21:
fbmngplay.h:17:20: libmng.h: El fitxer o directori no existeix
In file included from fbmngplay.c:21:
fbmngplay.h:23: error: error d'analitza before "FILE"
fbmngplay.h:23: avís: no hi ha punt i coma al final del struct o union
fbmngplay.h:25: error: error d'analitza before "delay"
fbmngplay.h:25: avís: type defaults to `int' in declaration of `delay'
fbmngplay.h:25: avís: data definition has no type or storage class
fbmngplay.h:29: error: error d'analitza before "mng"
fbmngplay.h:29: avís: type defaults to `int' in declaration of `mng'
fbmngplay.h:29: avís: data definition has no type or storage class
fbmngplay.h:35: error: error d'analitza before '}' token
fbmngplay.h:35: avís: type defaults to `int' in declaration of `mngstuff'
fbmngplay.h:35: avís: data definition has no type or storage class
In file included from fbmngplay.c:24:
mng.h:18: error: error d'analitza before '*' token
mng.h:18: avís: type defaults to `int' in declaration of `mng'
mng.h:18: error: conflicting types for `mng'
fbmngplay.h:29: error: previous declaration of `mng'
mng.h:18: avís: data definition has no type or storage class
mng.h:20: error: error d'analitza before "mngalloc"
mng.h:20: error: error d'analitza before "size"
mng.h:20: avís: type defaults to `int' in declaration of `mngalloc'
mng.h:20: avís: data definition has no type or storage class
mng.h:21: error: error d'analitza before "p"
mng.h:22: error: error d'analitza before "mngopenstream"
mng.h:22: error: error d'analitza before "mng"
mng.h:22: avís: type defaults to `int' in declaration of `mngopenstream'
mng.h:22: avís: data definition has no type or storage class
mng.h:23: error: error d'analitza before "mngclosestream"
mng.h:23: error: error d'analitza before "mng"
mng.h:23: avís: type defaults to `int' in declaration of `mngclosestream'
mng.h:23: avís: data definition has no type or storage class
mng.h:24: error: error d'analitza before "mngreadstream"
mng.h:24: error: error d'analitza before "mng"
mng.h:25: avís: type defaults to `int' in declaration of `mngreadstream'
mng.h:25: avís: data definition has no type or storage class
mng.h:26: error: error d'analitza before "mngprocessheader"
mng.h:26: error: error d'analitza before "mng"
mng.h:27: avís: type defaults to `int' in declaration of `mngprocessheader'
mng.h:27: avís: data definition has no type or storage class
mng.h:28: error: error d'analitza before "mnggetcanvasline"
mng.h:28: error: error d'analitza before "mng"
mng.h:28: avís: type defaults to `int' in declaration of `mnggetcanvasline'
mng.h:28: avís: data definition has no type or storage class
mng.h:29: error: error d'analitza before "mnggetticks"
mng.h:29: error: error d'analitza before "mng"
mng.h:29: avís: type defaults to `int' in declaration of `mnggetticks'
mng.h:29: avís: data definition has no type or storage class
mng.h:30: error: error d'analitza before "mngrefresh"
mng.h:30: error: error d'analitza before "mng"
mng.h:31: avís: type defaults to `int' in declaration of `mngrefresh'
mng.h:31: avís: data definition has no type or storage class
mng.h:32: error: error d'analitza before "mngsettimer"
mng.h:32: error: error d'analitza before "mng"
mng.h:32: avís: type defaults to `int' in declaration of `mngsettimer'
mng.h:32: avís: data definition has no type or storage class
mng.h:33: error: error d'analitza before "mngerror"
mng.h:33: error: error d'analitza before "mng"
mng.h:35: avís: type defaults to `int' in declaration of `mngerror'
mng.h:35: avís: data definition has no type or storage class
mng.h:36: error: error d'analitza before "mng"
fbmngplay.c: En la funció "main":
fbmngplay.c:73: error: error d'analitza before ')' token
fbmngplay.c:75: avís: implicit declaration of function `fprintf'
fbmngplay.c:75: error: `stderr' undeclared (first use in this function)
fbmngplay.c:75: error: (Each undeclared identifier is reported only once
fbmngplay.c:75: error: for each function it appears in.)
fbmngplay.c:76: avís: implicit declaration of function `exit'
fbmngplay.c:80: error: request for member `alpha' in something not a structure or union
fbmngplay.c:81: error: request for member `fbx' in something not a structure or union
fbmngplay.c:82: error: request for member `fby' in something not a structure or union
fbmngplay.c:83: error: request for member `background' in something not a structure or union
fbmngplay.c:107: avís: implicit declaration of function `atoi'
fbmngplay.c:110: error: request for member `alpha' in something not a structure or union
fbmngplay.c:113: error: request for member `fbx' in something not a structure or union
fbmngplay.c:116: error: request for member `fby' in something not a structure or union
fbmngplay.c:151: avís: implicit declaration of function `printf'
fbmngplay.c:163: error: request for member `fbwidth' in something not a structure or union
fbmngplay.c:164: error: request for member `fbheight' in something not a structure or union
fbmngplay.c:165: error: request for member `fbbpp' in something not a structure or union
fbmngplay.c:167: error: request for member `fbredo' in something not a structure or union
fbmngplay.c:168: error: request for member `fbgreeno' in something not a structure or union
fbmngplay.c:169: error: request for member `fbblueo' in something not a structure or union
fbmngplay.c:170: error: request for member `fbredl' in something not a structure or union
fbmngplay.c:171: error: request for member `fbgreenl' in something not a structure or union
fbmngplay.c:172: error: request for member `fbbluel' in something not a structure or union
fbmngplay.c:178: error: request for member `fbrow' in something not a structure or union
fbmngplay.c:180: error: request for member `display' in something not a structure or union
fbmngplay.c:181: error: request for member `fbrow' in something not a structure or union
fbmngplay.c:181: error: request for member `fbheight' in something not a structure or union
fbmngplay.c:188: avís: implicit declaration of function `atexit'
fbmngplay.c:192: error: request for member `filename' in something not a structure or union
fbmngplay.c:195: error: request for member `mng' in something not a structure or union
fbmngplay.c:196: avís: implicit declaration of function `mng_initialize'
fbmngplay.c:196: error: `MNG_NULL' undeclared (first use in this function)
fbmngplay.c:197: error: request for member `mng' in something not a structure or union
fbmngplay.c:203: avís: implicit declaration of function `mng_setcb_errorproc'
fbmngplay.c:203: error: request for member `mng' in something not a structure or union
fbmngplay.c:204: avís: implicit declaration of function `mng_setcb_openstream'
fbmngplay.c:204: error: request for member `mng' in something not a structure or union
fbmngplay.c:205: avís: implicit declaration of function `mng_setcb_closestream'
fbmngplay.c:205: error: request for member `mng' in something not a structure or union
fbmngplay.c:206: avís: implicit declaration of function `mng_setcb_readdata'
fbmngplay.c:206: error: request for member `mng' in something not a structure or union
fbmngplay.c:207: avís: implicit declaration of function `mng_setcb_gettickcount'
fbmngplay.c:207: error: request for member `mng' in something not a structure or union
fbmngplay.c:208: avís: implicit declaration of function `mng_setcb_settimer'
fbmngplay.c:208: error: request for member `mng' in something not a structure or union
fbmngplay.c:209: avís: implicit declaration of function `mng_setcb_processheader'
fbmngplay.c:209: error: request for member `mng' in something not a structure or union
fbmngplay.c:210: avís: implicit declaration of function `mng_setcb_getcanvasline'
fbmngplay.c:210: error: request for member `mng' in something not a structure or union
fbmngplay.c:211: avís: implicit declaration of function `mng_setcb_refresh'
fbmngplay.c:211: error: request for member `mng' in something not a structure or union
fbmngplay.c:216: avís: implicit declaration of function `mng_readdisplay'
fbmngplay.c:216: error: request for member `mng' in something not a structure or union
fbmngplay.c:219: error: request for member `delay' in something not a structure or union
fbmngplay.c:220: error: request for member `delay' in something not a structure or union
fbmngplay.c:221: error: request for member `delay' in something not a structure or union
fbmngplay.c:222: avís: implicit declaration of function `mng_display_resume'
fbmngplay.c:222: error: request for member `mng' in something not a structure or union
fbmngplay.c:224: error: request for member `alpha' in something not a structure or union
fbmngplay.c:226: error: request for member `alpha' in something not a structure or union
fbmngplay.c:227: error: request for member `alpha' in something not a structure or union
fbmngplay.c:228: error: request for member `alpha' in something not a structure or union
fbmngplay.c:240: avís: implicit declaration of function `memset'
fbmngplay.c:240: error: request for member `copybuffer' in something not a structure or union
fbmngplay.c:240: error: request for member `width' in something not a structure or union
fbmngplay.c:240: error: request for member `height' in something not a structure or union
fbmngplay.c:242: error: request for member `alpha' in something not a structure or union
fbmngplay.c:249: error: request for member `mng' in something not a structure or union
make: *** [fbmngplay.o] Error 1
root@tarat:/tmp/bootsplash-3.1/Utilities#

Tinc el kernel 2.6.7 ben ficat. He probat un parell de coses però em continua petant la compilacio d'aquestes uttilitats... Ajudeume plz!!!
Espero que ara no es confonguin els tags ;)

crec que et falten paquets

tens els paquets libmng-dev i libmng1?

salut!

Re: crec que et falten paquets

Bingo!!!!

Ha sigut ficar-los i tot bé, moltes gràcies!

(Sembla que tothom té aquests paquets, i jo sense saber-ho!!! :P )

Gràcies altre cop. Salutacions des del Bages.