di Shuren
Questa guida prende come esempio l’installazione e configurazione di bootsplash in una piattaforma Slackware GNU/Linux 2.6.x.
Nel seguente documento il corsivo verrà utilizzato per i comandi da digitare in un terminale, ad esempio: ls. Tra parentesi quadre, gli eventuali argomenti e tasti da digitare, ad esempio: [password] [TAB].
Cos’è il bootsplash?
Bootsplash è un’applicazione che permette di visualizzare un’immagine all’avvio di Linux, nascondendo i messaggi di caricamento del kernel. Permette inoltre di avere un’immagine di sfondo nelle console, con l’ausilio del framebuffer.
Visitate http://www.bootsplash.org per informazioni più dettagliate.
Cos’è il framebuffer?
http://it.tldp.org/HOWTO/Framebuffer-HOWTO-3.html
Cosa ci serve?
Applichiamo la patch.
su – [password] cd /usr/src/
Se non lo avete già fatto, scaricate l’ultimo kernel stabile con wget http://kernel.org/pub/linux/kernel/v2.6/linux-2.6.x.tar.bz2 oppure copiate il vostro archivio in /usr/src/ con il comando cp /directory/linux-2.6.x.tar.bz2 /usr/src/.
(Al posto della x mettete il numero che contraddistingue la versione stabile del vostro kernel, e al posto di directory il percorso in cui si trova l’archivio).
tar xfvj linux-2.6.x.tar.bz2 ln -sf linux-2.6.x/ linux
Con questi due comandi abbiamo scompattato l’archivio dei sorgenti del kernel e creato un link simbolico per accedere alla directory dei sorgenti in modo più immediato. E’ arrivato il momento di scaricare la patch da ftp://ftp.suse.com/pub/people/stepan/bootsplash/kernel/. Scegliete la versione della patch più vicina alla versione del vostro kernel.1. Per comodità copiate la patch nella directory /usr/src/ e procediamo:
cd linux patch -p1 < /usr/src/nomedella.patch
per l’uso di patch vi rimando a `man patch`
Compiliamo il kernel.
Se è la vostra prima volta, vi consiglio di leggere questo HowTo in italiano sulla compilazione del kernel: http://info.astrian.net/doc/HOWTO/it-html/Kernel-HOWTO.html. E’ un po’ datato ma a grandi linee vi presenta cosa vi dovete aspettare. Se avete voglia e tempo leggete anche quest’altro HowTo che parla del framebuffer e della sua configurazione su diverso hardware: http://it.tldp.org/HOWTO/Framebuffer-HOWTO.html.
make menuconfig Device Drivers ---> [Select] Graphics support ---> [Select] [*] Support for frame buffer devices [y] [*] VESA VGA graphics support [y] Console display driver support ---> [Select] --- VGA text console [*] Video mode selection support [y] <*> Framebuffer Console support [y] [*] Select compiled-in fonts [y] [*] VGA 8x8 font [y] [*] VGA 8x16 font [y] [Exit] Bootsplash configuration ---> [Select] [*] Bootup splash screen [y]
Questo per quanto riguarda il framebuffer. Per far funzionare correttamente il bootsplash abbiamo bisogno anche del supporto all’Initial Ramdisk, initrd, un file di solito compresso che viene usato per suggerire al kernel quali supporti e moduli caricare durante il boot in particolari configurazoni. In questo caso ci serve per far leggere al kernel la configurazione di bootsplash.
Device Drivers ---> [Select] Block devices ---> [Select] <*> RAM disk support [y] [*] Initial RAM disk (initrd) support [y]
Non tratto delle altre opzioni del kernel, la cui maggior parte è specifica per ogni vostra macchina. Fatto questo passiamo alla vera e propria compilazione del kernel:
make && make bzImage && make modules && make modules_install
(gli ultimi due make sono necessari se usate un kernel modulare).
cp arch/i386/boot/bzImage /boot/nuovokernel
(naturalmente al posto di “nuovokernel” potete digitare il nome che volete).
Installiamo e configuriamo bootsplash.
Scarichiamo il pacchetto precompilato per Slackware delle bootsplash utilities:
wget http://www3.linuxpackages.net/packages/Slackware-9/pcxz/bootsplash/bootsplash-5.tgz installpkg bootsplash-5.tgz
Diamo un’occhiata a cosa ha installato nel sistema:
cat /var/log/packages/bootsplash-5 etc/rc.d/rc.bootsplash (script che viene eseguito all'avvio per usare animazioni e barra di scorrimento) etc/bootsplash/themes/ (directory in /etc/ contenente temi e relativi file di configurazione) usr/doc/bootsplash/ (directory in /usr/ contenente la documentazione e gli esempi per usare bootsplash) sbin/splash (eseguibile principale per l'utilizzo di bootsplash)
Dopo questa carrellata dei file più importanti presenti nel sistema procediamo alla creazione di un file initrd valido per l’avvio di Linux:
splash -s -f /etc/bootsplash/themes/tuotema/config/bootsplash-1024x768.cfg > /boot/initrd-1024x768
A questo punto dobbiamo configurare a dovere il nostro bootloader, aggiungendo una sezione per il nostro nuovo kernel (cosa sempre consigliabile se non si è del tutto sicuri della configurazione del kernel fatta), simile a questa:
joe /etc/lilo.conf (potete usare l'editor che preferite, da joe a vi, emacs ecc) vga = 791 (impostiamo il framebuffer a 1024x768x64) # Linux bootable partition config begins image = /boot/nuovokernel (qui specificate il nome del vostro kernel appena compilato) root = /dev/hdXx (al posto di “X” la lettera corrispondente al vostro disco rigido e al posto di “x” il numero della partizione di root) label = nuovaetichetta (qui la nuova eventuale etichetta per distinguere il nuovo kernel al prompt di lilo) read-only append = "splash=silent" (qui specificate che all'avvio volete la schermata “opaca” che non presenta i messaggi di avvio) initrd=/boot/initrd-1024x768 (il vostro file initrd appena creato) # Linux bootable partition config ends
Terminata la configurazione installate lilo:
lilo -v
e riavviate la macchina:
reboot
oppure…
shutdown -r now
Barra di scorrimento e sfondo in tutte le console.
L’ultimo paragrafo lo dedico a due orpelli che mi piaceva avere: la barra di scorrimento appunto (http://bootsplash.org/silent-mode.jpg) e lo sfondo in tutte le console (di default infatti lo sfondo compare solo nella prima tty: http://bootsplash.org/verbose-mode.jpg).
Per applicare la barra di scorrimento dovete modificare i due script di avvio /etc/rc.d/rc.M e /etc/rc.d/rc.S aggiungendo all’inizio dello script una sezione dedicata al bootsplash (potete trovare degli esempi già pronti nella documentazione installata assieme a bootsplash):
- /etc/rc.d/rc.M
... # Bootsplash . /etc/rc.d/rc.bootsplash progressbar 71 animate startup # Tell the viewers what's going to happen. echo "Going multiuser..." ...
- /etc/rc.d/rc.S
... PATH=/sbin:/usr/sbin:/bin:/usr/bin # Bootsplash . /etc/rc.d/rc.bootsplash progressbar 1 ...
In entrambi gli script potete aggiungere progressbar n (dove al posto di “n” sostituite un numero compreso tra 1 e 100) dopo ogni blocco di istruzioni. Per esempi consultate rc.M ed rc.S nella directory /usr/doc/bootsplash/samples/.
Modifichiamo ora /etc/rc.d/rc.local per aggiungere l’immagine di sfondo a tutte le vostre console (tty), che nel mio sistema sono sei:2
# Put any local setup commands in here: ... # Bootsplash for i in 1 2 3 4 5 6 ;do /sbin/splash -n -s -u $i /etc/bootsplash/themes/tuotema/config/bootsplashi-1024x768.cfg > /dev/null done
Bootsplash e shutdown
Una cosa fastidiosa che mi è capitata di notare, segnalata anche da altri, è che una volta in verbose, l’immagine silent del bootsplash (e l’eventuale barra di scorrimento) non compaiono più al momento dello shutdown/reboot.
Analizzando il file splash presente in /proc non è stato difficile trovare la soluzione al fastidioso dilemma:
cat /proc/splash Splash screen v3.1.4-2004/02/19 (0x07, 1024x768, silent): on
Una volta digitato F2 nella prima console tty l’output di cui sopra cambia nel seguente modo:
cat /proc/splash Splash screen v3.1.4-2004/02/19 (0x07, 1024x768): on
Ricordando che con il comando append in lilo.conf suggeriamo dei parametri al kernel (per informazioni aggiuntive su append vi rimando alla pagina di man di lilo.conf) e che le opzioni principali per il bootsplash sono silent e verbose, risulta sufficiente suggerire l’opzione silent al kernel prima dello shutdown, in particolare modifichiamo il file /etc/rc.d/rc.0 come di seguito:
... # Set the path. PATH=/sbin:/etc:/bin:/usr/bin ## bootsplash echo silent > /proc/splash
(con questo comando che per i più smaliziati non risulta nuovo, configuriamo il bootsplash a livello kernel per non visualizzare i messaggi di shutdown
. /etc/rc.d/rc.bootsplash progressbar 1 animate startup ...
Volendo la barra di scorrimento anche qui, vale lo stesso discorso fatto per l’avvio e i file rc.S e rc.M.
Bibliografia & credits
- Bootsplash: http://www.bootsplash.org/
- The Gentoo Framebuffer, Bootsplash & Grubsplash How-To: http://www.gentoo.it/tips/FramebufferAndBoot.html
- [SLACKWARE] – bootsplash how-to: http://www.neowin.net/forum/index.php?showtopic=145947
- Google.it: http://www.google.it
Michele Barbiero aka
Shuren @ irc.azzurra.org & [G]reedy[F]ly @ UseNet
Mail to: shuren at linuxinside dot it (GPG Public Key @ http://www.cucciolo.net/pub/michele/michele.asc)
…e successivamente ripulito con vim, ma perche’ il codice html generato da openoffice fa cosi’ pena? (N.d. felipe)
1 Per il kernel 2.6.5 non è ancora uscita una patch ufficiale. Potete tuttavia trovare le patch che ci occorrono nei seguenti siti: http://www.reactivated.net/patches/linux-kernel/2.6.5/ e http://www.hup.hu/old/stuff/kernel/bootsplash/v2.6.5/. Io ho personalmente provato quest’ultima su un kernel 2.6.5-mm3, e funziona alla perfezione.
2 http://groups.google.it/groups?dq=&hl=it&lr=&ie=UTF-8[…]free.it.linux.slackware>
Bravo.
Ottimo lavoro soprattuto per il bootsplash logout :)
Pingback:ashampoo cover studio