Slackware Bootsplash HowTo

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?

  • I sorgenti del kernel di Linux, che potete scaricare da qui: http://www.kernel.org oppure usare quelli della distribuzione (directory /slackware/k/ del cd di installazione).
  • La bootsplash patch per la nostra versione del kernel:ftp://ftp.suse.com/pub/people/stepan/bootsplash/kernel/
  • Bootsplash utilities: http://www3.linuxpackages.net/packages/Slackware-9/pcxz/bootsplash/

    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

    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)

    Documento creato con

    …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>

  • 2 pensieri su “Slackware Bootsplash HowTo

    Lascia un commento

    Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

    Logo WordPress.com

    Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

    Foto Twitter

    Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

    Foto di Facebook

    Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

    Google+ photo

    Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

    Connessione a %s...