Old:Compilazione Kernel 2.6.11 con Bootsplash: differenze tra le versioni

Da Guide@Debianizzati.Org.
Vai alla navigazione Vai alla ricerca
 
(14 versioni intermedie di 7 utenti non mostrate)
Riga 1: Riga 1:
{{stub}}
{{Old}}
Pbuilder � uno strumento che permette di creare un ambiente pulito per la compilazione e il test di pacchetti Debian. Inoltre pu� essere usato anche per effettuare i backport, compilazioni particolari e tutto quello che pu� richiedere l'uso di un ambiente pulito e controllato.
== Introduzione ==
 
Questo how-to spiegherà il procedimento da seguire per compilare, alla debian-way, un kernel 2.6.11 con la patch bootsplash.
 
 
== Software richiesto ==
In ambiente Debian, ci viene in aiuto il tool '''[[APT]]''' (Advanced Package Tool), che ci fornirà tutto (o quasi) ciò di cui abbiamo bisogno.
Anzitutto, editiamo il nostro <code>/etc/apt/sources.list</code> aggiungendo il [[I_repository_ed_il_loro_utilizzo | repository]] bootsplash:
 
<pre>deb http://www.bootsplash.de/files/debian/ unstable main</pre>
 
Abbiamo poi bisogno delle librerie e/o programmi che utilizzeremo per la compilazione vera e propria:
 
<pre>
PACCHETTO          VERSIONE MINIMA    COMANDO
 
binutils            2.12                ld -v
e2fsprogs          1.29                tune2fs
gcc                2.95.3              gcc --version
make                3.78                make --version
module-init-tools  0.9.10              depmod -V
procps              3.1.13              ps --version
util-linux          2.10o              fdformat --version
kernel-package
initrd-tools
libncurses-dev
</pre>
 
Ora possiamo procedere al download dei sorgenti del kernel:
 
<pre># apt-get install kernel-source-2.6.11</pre>
 
Con questo comando, [[APT]] scaricherà un archivio <code>.tar.bz2</code> in <code>/usr/src/</code>, contenente proprio il sorgente del [[kernel]].
 
È inoltre necessario scaricare una patch apposita da applicare al kernel:
 
[http://www.bootsplash.de/files/bootsplash-3.1.6-2.6.11.diff Patch per Kernel 2.6.11]
 
In caso si tenti questa procedura con altri kernel, oppure, essendo la pagina soggetta ad aggiornamento, il file risulti inesistente, è possibile scaricare la patch di interesse cercandola in http://www.bootsplash.de/files/
 
''formato: bootsplash-versione_patch-versione_kernel.diff''
 
== Compilazione ==
 
=== Scompattazione e Patch del Sorgente ===
 
Bene, prima di procedere con la compilazione, è necessario applicare la patch bootsplash (vedi sopra) al nostro kernel.
 
Prima di tutto, scompattiamo l'archivio contenente i sorgenti.
 
Per fare ciò, spostiamoci in <code>/usr/src/</code>, e procediamo con la scompattazione:
 
<pre>
# cd /usr/src/
# tar -jxvf kernel-source-2.6.11.tar.bz2
</pre>
 
A questo punto verrà; creata una nuova directory, <code>/usr/src/kernel-source-2.6.11/</code>.
 
Spostiamoci dunque nella nuova directory e applichiamo la patch che abbiamo scaricato:
 
<pre>
# cd /usr/src/kernel-source-2.6.11
# patch -p1 < /usr/src/bootsplash-3.1.6-2.6.11.diff
</pre>
 
Non dovrebbe essere segnalato alcun errore nella patch a questo punto. In caso contrario, rimuoviamo la directory dei sorgenti e ripetiamo la procedura dall'inizio. È importante applicare la patch bootsplash prima di qualunque altra patch, cioè sul kernel debian originale preso da APT.
 
A questo punto, possiamo procedere con la compilazione del kernel.
 
=== Configurazione del Kernel ===
 
Anzitutto, configuriamo il kernel stesso:
 
<pre># make menuconfig</pre>
 
Vediamo cosa selezionare, brevemente.
 
Selezioniamo il nostro modello di processore:
<pre>
| Processor type and features
|--- Processor family (Athlon/Duron/K7)
</pre>
 
 
Attiviamo qualche altra opzione per il boot:
 
<pre>
| Device Drivers
|--- Block devices
|------ <*> Loopback device support
|------ <*> RAM disk support
|------ (8192) Default RAM disk size (kbytes)
|------ [*]  Initial RAM disk (initrd) support
</pre>
 
 
Attiviamo le opzioni necessarie a mostrare la schermata di boot:
 
<pre>
| Device Drivers
|--- Graphics support
|------ <M>  VGA 16-color graphics support
|------ <*>  VESA VGA graphics support
|------ Console display driver support
|--------- [*] VGA text console
|--------- [*]  Video mode selection support
|--------- <*> Framebuffer Console support
|------ Bootsplash configuration
|--------- [*] Bootup splash screen
</pre>
 
Ricordiamoci ovviamente di indicare, tra i [http://it.wikipedia.org/wiki/Filesystem Filesystem], quelli che utilizziamo sulla nostra macchina in aggiunta a quello ''ROM'', che viene utilizzato per le immagini initrd, le schede che abbiamo, etc.
 
Se stiamo ricompilando un kernel, ovviamente sono cose che non si dovrebbero dimenticare!!!
 
=== Compilazione con make-kpkg (debian-way) ===
 
Ora che il kernel è configurato, possiamo procedere alla compilazione (debian-way):
 
<pre>
# make-kpkg clean
# make-kpkg --initrd --append-to-version -splash binary
</pre>
 
Prendiamo in considerazione l'ultimo comando:
 
<code>'''make-kpkg'''</code>: è uno strumento che ci aiuta a creare kernel pacchettizzati in file binari, con estensione <code>.deb</code>.
: <code>--initrd</code> crea il RAMDisk iniziale per mostrare l'immagine al boot;
: <code>--append-to-version -splash</code>: aggiunge la stringa '-splash' alla versione del kernel che stiamo creando. In questo modo, se stiamo già utilizzando un kernel 2.6.11, il nostro nuovo kernel sarà il '2.6.11-splash', così in caso di problemi al boot potremo sempre tornare al kernel ''funzionante'';
: <code>binary</code>: questo argomento specifica il ''target'' della nostra compilazione:


= Installazione =
Pbuilder , ovviamente, contenuto in Debian:
<pre>
<pre>
# apt-get install pbuilder
binary          specifica che vogliamo compilare kernel_image, kernel_doc, kernel_headers
                e kernel_source
 
kernel_source    questo target produce un pacchetto .deb contenente i sorgenti del nuovo
                kernel che stiamo compilando
 
kernel_headers  questo target produce un pacchetto .deb contenente gli header inclusi nel
                nuovo kernel
 
kernel_doc      questo target produce un pacchetto .deb contenente la documentazione
                relativa al nuovo kernel
 
kernel_image    questo target produce un pacchetto .deb contenente il kernel in formato
                binario, con tutti i moduli specificati nella configurazione
</pre>
</pre>


= Configurazione e Opzioni =
Una volta terminata la compilazione, troveremo in <code>/usr/src</code> un pacchetto il cui nome sarà qualcosa di molto simile a <code>'''kernel-image-2.6.11-splash_10.00.Custom_i386.deb'''</code>.
Normalmente non sono necessarie configurazioni particolari, osserviamo, perci�, le opzioni pi� importanti:


== pbuilder ==
A questo punto possiamo installare il nostro nuovo kernel!
; --basetgz [base.tgz] : permette di indicare una locazione, per il [[tarball]] dell'ambiente da gestire, diverso da quello di default
; --buildplace [location of build] : permette di specificare un directory, diversa da quella di default, dove ricreare l'ambiente ed eseguire le compilazioni
; --mirror [mirror location] : permette di specificare un [[mirror]] Debian diverso da quello predefinito
; --othermirror [other mirror location in apt deb-line format, delimited with | signs] : permette di aggiungere altri mirror (o repository)
; --http-proxy [proxy] : se � presente un proxy http nella rete, � possibile gestirne l'accesso (nella forma http://username:password@server)
; --distribution [distribution(potato|woody|sarge|sid|etch|experimental)] : imposta la distribuzione
; --buildresult [location-to-copy-build-result] : permette di specificare una directory diversa in cui posizionare i pacchetti creati
; --aptcache [location of retrieved package files] : permette di specificare una directory in cui immagazzinare i pacchetti debian scaricati (e usati) per soddisfare le dipendenze per la compilazione
; --configfile [configuration file to load] : specifica un file di configurazione alternativo
; --debemail [mail address] : imposta l'indirizzo email
; --debbuildopts [dpkg-buildpackage options] : permette di impostare delle opzioni aggiuntive per il comando ''dpkg-buildpackage'', che si occupa della creazione di un pacchetto Debian a partire dai sorgenti
; --logfile [filename to output log] : specifica un file di log, utile per analizzare con calma i risultati delle compilazioni
; --binary-arch : permette di impostare l'architettura da usare per la creazione dell'ambiente (utile nel caso di supporto per pi� architetture (macchina a 64 bit))
; --save-after-login/--save-after-exec : permette di salvare lo stato della macchina al termine di una sessione interattiva, ricreando il tarball a partire dall'ambiente modificato (usare con attenzione)


== pdebuild ==
<pre>
; --use-pdebuild-internal :
# dpkg -i /usr/src/kernel-image-2.6.11-splash_10.00.Custom_i386.deb
; --auto-debsign : impone la firma automatica al termine della compilazione del pacchetto
</pre>
; --debsign-k [keyid] : imposta la chiave con cui eseguire la firma del pacchetto


== Azioni ==
Controlliamo la presenza del RAMDisk iniziale. Per fare ciò eseguiamo questo comando:
; create : creazione di un nuovo ambiente
; update : aggiornametno di un ambiene esistente
; build : compilazione
; clean : pulizia di un ambiente
; login : login all'interno di un ambiente
; execute : esecuzione di un comando all'interno di un ambiente
; dumpconfig : mostra a video la configurazione dell'ambiente specificato, utile per le operazioni di debug


<pre>
# ls /boot/initrd.img-2.6.11*
</pre>


= Utilizzo =
Se il comando restituisce un errore, creiamo il nostro RAMDisk:
== Creazione Ambiente ==
In questo esempio creeremo un ambiente per la distribuzione sid, con i repository Debian '''main''', '''contrib''' e '''non-free'''.


<pre>
<pre>
# pbuilder create --basetgz /home/maxer/pbuilder/sid.tgz --mirror http://debian.fastweb.it/debian \
# cd /boot/
    --othermirror http://debian.fastweb.it/debian contrib non-free --distribution sid \
# mkinitrd -o /boot/initrd.img-2.6.11-splash 2.6.11-splash
    --debemail maxer@knio.it --binary-arch i386
</pre>
</pre>


Analizzando il comando osserviamo che:
== Installazione di Bootsplash ==
* con '''--basetgz''' impostiamo un percorso diverso per salvare il [[tarball]] che conterr� l'immagine del nostro ambiente;
 
* con '''--mirror''' specifichiamo un mirror italiano, mentre con '''--othermirror''' aggiungiamo anche ''non-free'' e ''contrib'' (allo stesso modo potremmo aggiungere altri repository...);
In questa fase ci viene in aiuto quel repository che abbiamo aggiunto all'inizio al nostro <code>/etc/apt/sources.list</code>.
* con '''--distribution''' impostiamo la distribuzione di cui vogliamo creare l'ambiente;
* con '''--debemail''' impostiamo la nostra email;
* con '''--bynary-arch''' impostiamo l'architettura dei nostri binari (utile nei sistemi a 64 bit, in cui � possibile emulare l'architettura a 32 bit ;-).


Pbuilder scaricher� dalla rete tutto il materiale necessario, e creer� l'immagine (potrebbe volerci molto tempo.. quindi � consigliata una bella tazzona di caff�)!
Aggiorniamo i nostri archivi APT ed installiamo Bootsplash:


== Aggiornamento Ambiente ==
<pre>
L'aggiornamento di un ambiente � utile per le release diversa da Stable, nelle quali sono spesso presenti degli aggiornamenti, che potrebbero portare ad una modifica delle dipendenze (si pensi, ad esempio, alla migrazione da xfree ad xorg).
# apt-get update
# apt-get install bootsplash sysv-rc-bootsplash bootsplash-theme-tuxinfo-debian
</pre>
Attenzione! L'ultimo pacchetto (bootsplash-theme-tuxinfo-debian) è il '''tema che vedremo al boot'''. Per vedere quali temi sono disponibili, diamo il seguente comando:
 
<pre>
# apt-cache search bootsplash-theme
</pre>


Per aggiornare i pacchetti ed il database dei repository, � sufficiente un
(Suggerimento: conviene inviare l'output in pipe a ''more'' o ''less'', dato che esistono numerosi temi!)
<pre> # pbuider update --basetgz /home/maxer/pbuilder/sid.tgz</pre>


== Compilazione di pacchetti ==
Scegliamo in questo caso il tema "tuxinfo-debian".
La compilazione pu� avvenire in due modi:
* '''Da un pacchetto di sorgenti''', tramite pbuilder
* '''Dalla directory che contiene i sorgenti''' tramite pdebuild


=== Da un pacchetto di sorgenti ===
Durante l'installazione comparirà una finestra per la configurazione, che ci chiederà quale immagine utilizzare per il nostro boot.  
Questa procedura funziona se si dispone di un pacchetto Debian in formato ''sorgente''... la procedura � usabile, ad esempio, per ricompilare un pacchetto presente in testing o unstable per una distribuzione stable (tecnica chiamata [[backport]]).


<pre> # pbuild build --basetgz /home/maxer/pbuilder/sid.tgz file_0.0-1.dsc </pre>
Selezioniamo l'immagine creata in precedenza, cioè <code>'''initrd.img-2.6.11-splash'''</code>.


Questo comando avvier� la compilazione, esattamente secondo le seguenti fasi:
=== Errore di post-installazione sysv-rc-bootsplash ===
# creazione dell'ambiente a partire dal tarball indicato
Nel caso in cui sysv-rc-bootsplash non riesca a patchare gli script di avvio, otterremo un errore del tipo:
# risoluzione delle dipendenze per la compilazione
<pre>Testing if patches apply cleanly...
# compilazione
4 out of 5 hunks FAILED -- saving rejects to file /etc/init.d/rcS.rej
# rimozione ambiente creato (definito ''sporco'')
Patches would not apply cleanly.</pre>
# eventuale firma GnuPG
In questo caso dobbiamo ovviare al problema manualmente, poiché il pacchetto non riesce a applicare le modifiche necessarie ad abilitare la progress-bar di bootsplash.


=== Dalla Directory dei sorgenti ===
Procediamo come segue:
Questa procedura, a differenza di quella illustrata precedentemente, � molto pi� usata (almeno nel mio caso) in quanto pu� essere applicata direttamente alla directory dei sorgenti (si sta sempre parlando di pacchetti Debian, quindi i sorgenti devono contenere la directory ''debian/'', che gestisce la creazione dei pacchetti.
<pre># mkdir /tmp/patch
# cp /etc/init.d/rc /etc/init.d/rc.originale
# cp /etc/init.d/rcS /etc/init.d/rcS.originale
# wget http://ftp.it.debian.org/debian/pool/main/s/sysvinit/sysv-rc_2.86.ds1-1_all.deb
# dpkg --extract sysv-rc_2.86.ds1-1_all.deb /tmp/patch
# cp /tmp/patch/etc/init.d/rc /etc/init.d/rc
# cp /tmp/patch/etc/init.d/rcS /etc/init.d/rcS
# apt-get install sysv-rc-bootsplash</pre>


Una volta posizionati nella directori contenente i sorgenti, � sufficiente eseguire questo comando:
In poche parole quel che abbiamo fatto non è stato altro che fare una copia di backup degli scripts esistenti, scaricare il vecchio pacchetto sysv-rc (con cui la patch funziona), copiare gli script dal pacchetto alla directory corretta (senza installarlo effettivamente) e quindi applicare la patch.
<pre> # pdebuild build --basetgz /home/maxer/pbuilder/sid.tgz</pre>


In questo caso, invece, la procedura seguita da pbuilder sar� leggermente diversa:
=== Configurazione del Bootloader ===
# esecuzione ''debian/rules clean'' all'interno della directory dei sorgenti
# creazione dell'ambiente a partire dal tarball indicato
# risoluzione delle dipendenze per la compilazione
# compilazione
# rimozione ambiente creato (definito ''sporco'')
# eventuale firma GnuPG


==Firma GnuPG==
A questo punto siamo pronti per modificare il nostro bootloader. Facciamo un esempio per i due bootloader più comuni: GRUB e LiLO:
Pbuilder permette anche la firma con chiave [[GnuPG]], molto utile in quanto evita l'utilizzo di ''deb-sign'', automatizzando il tutto!
L'unico problema (se cos� si pu� definire) � la necessit� di esportare la propria chiave privata ed importarla nel [[keyring]] dell'utente root.


==File di Configurazione==
Configurazione per GRUB (<code>/boot/grub/menu.lst</code>)  
Una pratica diffusa e molto comoda per semplificare l'utilizzo di pbuider sono i file di configurazione: essi permettono, infatti, di specificare direttamente al loro interno i parametri (oltre ad offrirne molti di pi�).


Un altro vantaggio, inoltre, consiste nel poter specificare altre distribuzioni (come ubuntu, knoppix, ...) che altrimenti non sarebbero supportate dal pbuilder dispnibile in Debian.
{{Warningbox| Le seguenti indicazioni valgono '''solo''' per GRUB e non per GRUB2}}


I link seguenti portano a dei file di configurazione ad hoc per le distribuzioni indicate:
<pre>
* [[Pbuilder: Breezy.conf]]
title          Debian GNU/Linux, kernel 2.6.11-splash
* [[Pbuilder: Dapper.conf]]
root            (hd0,0)
kernel          /boot/vmlinuz-2.6.11-splash root=/dev/hda1 ro bootkbd=it
initrd          /boot/initrd.img-2.6.11-splash
savedefault
boot
</pre>


=Varie=
Configurazione per LiLO (<code>/etc/lilo.conf</code>)
==Semplifichiamo i comandi con alias==
<pre>
I comandi da impartire sono spesso complessi e lunghi... in questo caso ci viene in aiuta ''alias'', che permette di creare un nuovo ''comando'', alias di uno pi� complesso.
image=/boot/vmlinuz-2.6.11-splash
        label="2.6.11-splash"
        initrd=/boot/initrd.img-2.6.11-splash
        append="splash=silent"
</pre>


Per fare questo, � sufficiente inserire nel file ''/root/.bashrc'' delle righe simili alle seguenti:
Attenzione! Se usate LiLO come bootloader, è necessario aggiornare la sua configurazione con il seguente comando (dopo la modifica di <code>/etc/lilo.conf</code>):
<pre>
<pre>
# comandi per la compilazione
# lilo
alias pdebuild-sarge="pdebuild --auto-debsign --debsign-k 34337C08 --buildresult /var/cache/pbuilder/result/stable -- --basetgz /store3/sarge.tgz \
</pre>
    --mirror http://debian.fastweb.it/debian"
alias pdebuild-etch="pdebuild --auto-debsign --debsign-k 34337C08 --buildresult /var/cache/pbuilder/result/testing -- --basetgz /store3/etch.tgz \
    --mirror http://debian.fastweb.it/debian"
alias pdebuild-sid="pdebuild --auto-debsign --debsign-k 34337C08 --buildresult /var/cache/pbuilder/result/unstable -- --basetgz /store3/sid.tgz \
    --mirror http://debian.fastweb.it/debian"
alias pdebuild-breezy="pdebuild --auto-debsign --debsign-k 34337C08 --buildresult /var/cache/pbuilder/result/breezy -- --basetgz /store3/breezy.tgz \
    --configfile /root/pbuilder-breezy.conf"


# automatizziamo al massimo
== Conclusioni ==
alias pdebuild-all="pdebuild-sarge; pdebuild-etch; pdebuild-sid; pdebuild-breezy"


# aggiornamento
Bene, adesso siamo in grado di riavviare la nostra macchina e gustarci un bel bootsplash!
alias pbuilder-update-sid="pbuilder update --basetgz /store3/sid.tgz --mirror http://debian.fastweb.it/debian"
Nel caso vogliate cambiare tema, dopo aver installato il relativo pacchetto '''bootsplash-theme-*''', basta fare:
alias pbuilder-update-etch="pbuilder update --basetgz /store3/etch.tgz --mirror http://debian.fastweb.it/debian"
alias pbuilder-update-sarge="pbuilder update --basetgz /store3/sarge.tgz --mirror http://debian.fastweb.it/debian"
alias pbuilder-update-breezy="pbuilder update --basetgz /store3/breezy.tgz --configfile /root/pbuilder-breezy.conf"


# automatizziamo al massimo
<pre>
alias pbuilder-update-all="pbuilder-update-sarge && pbuilder-update-etch && pbuilder-update-sid && pbuilder-update-breezy"
# dpkg-reconfigure bootsplash
</pre>
</pre>
I comandi elencati sono, per l'esattezza, quelli che uso io per creare i pacchetti per qualsiasi release Debian ed Ubuntu.
 
Bisogna poi selezionare il nuovo tema che abbiamo installato, di nuovo initrd.img-2.6.11-splash come initrd, ricontrolliamo LiLO / GRUB e riavviamo.
 
Happy Debian!
 
{{Autori
|Autore=[[User:Hanska|Hanska]] 20:32, 14 May 2005 (CEST)
|Estesa_da=
:[[Utente:Keltik|keltik]] 05:59, 4 Lug 2006 (EDT)
|Numero_revisori=0
}}

Versione attuale delle 11:44, 15 mag 2016

Emblem-important.png Attenzione. Questa guida è obsoleta. Viene mantenuta sul Wiki solo per motivi di natura storica e didattica.


Introduzione

Questo how-to spiegherà il procedimento da seguire per compilare, alla debian-way, un kernel 2.6.11 con la patch bootsplash.


Software richiesto

In ambiente Debian, ci viene in aiuto il tool APT (Advanced Package Tool), che ci fornirà tutto (o quasi) ciò di cui abbiamo bisogno. Anzitutto, editiamo il nostro /etc/apt/sources.list aggiungendo il repository bootsplash:

deb http://www.bootsplash.de/files/debian/ unstable main

Abbiamo poi bisogno delle librerie e/o programmi che utilizzeremo per la compilazione vera e propria:

PACCHETTO           VERSIONE MINIMA     COMANDO

binutils            2.12                ld -v
e2fsprogs           1.29                tune2fs
gcc                 2.95.3              gcc --version
make                3.78                make --version
module-init-tools   0.9.10              depmod -V
procps              3.1.13              ps --version
util-linux          2.10o               fdformat --version
kernel-package
initrd-tools
libncurses-dev

Ora possiamo procedere al download dei sorgenti del kernel:

# apt-get install kernel-source-2.6.11

Con questo comando, APT scaricherà un archivio .tar.bz2 in /usr/src/, contenente proprio il sorgente del kernel.

È inoltre necessario scaricare una patch apposita da applicare al kernel:

Patch per Kernel 2.6.11

In caso si tenti questa procedura con altri kernel, oppure, essendo la pagina soggetta ad aggiornamento, il file risulti inesistente, è possibile scaricare la patch di interesse cercandola in http://www.bootsplash.de/files/

formato: bootsplash-versione_patch-versione_kernel.diff

Compilazione

Scompattazione e Patch del Sorgente

Bene, prima di procedere con la compilazione, è necessario applicare la patch bootsplash (vedi sopra) al nostro kernel.

Prima di tutto, scompattiamo l'archivio contenente i sorgenti.

Per fare ciò, spostiamoci in /usr/src/, e procediamo con la scompattazione:

# cd /usr/src/
# tar -jxvf kernel-source-2.6.11.tar.bz2

A questo punto verrà; creata una nuova directory, /usr/src/kernel-source-2.6.11/.

Spostiamoci dunque nella nuova directory e applichiamo la patch che abbiamo scaricato:

# cd /usr/src/kernel-source-2.6.11
# patch -p1 < /usr/src/bootsplash-3.1.6-2.6.11.diff

Non dovrebbe essere segnalato alcun errore nella patch a questo punto. In caso contrario, rimuoviamo la directory dei sorgenti e ripetiamo la procedura dall'inizio. È importante applicare la patch bootsplash prima di qualunque altra patch, cioè sul kernel debian originale preso da APT.

A questo punto, possiamo procedere con la compilazione del kernel.

Configurazione del Kernel

Anzitutto, configuriamo il kernel stesso:

# make menuconfig

Vediamo cosa selezionare, brevemente.

Selezioniamo il nostro modello di processore:

| Processor type and features
|--- Processor family (Athlon/Duron/K7)


Attiviamo qualche altra opzione per il boot:

| Device Drivers
|--- Block devices
|------ <*> Loopback device support
|------ <*> RAM disk support
|------ (8192) Default RAM disk size (kbytes)
|------ [*]   Initial RAM disk (initrd) support


Attiviamo le opzioni necessarie a mostrare la schermata di boot:

| Device Drivers
|--- Graphics support
|------ <M>   VGA 16-color graphics support
|------ <*>   VESA VGA graphics support
|------ Console display driver support
|--------- [*] VGA text console
|--------- [*]   Video mode selection support
|--------- <*> Framebuffer Console support
|------ Bootsplash configuration
|--------- [*] Bootup splash screen

Ricordiamoci ovviamente di indicare, tra i Filesystem, quelli che utilizziamo sulla nostra macchina in aggiunta a quello ROM, che viene utilizzato per le immagini initrd, le schede che abbiamo, etc.

Se stiamo ricompilando un kernel, ovviamente sono cose che non si dovrebbero dimenticare!!!

Compilazione con make-kpkg (debian-way)

Ora che il kernel è configurato, possiamo procedere alla compilazione (debian-way):

# make-kpkg clean
# make-kpkg --initrd --append-to-version -splash binary

Prendiamo in considerazione l'ultimo comando:

make-kpkg: è uno strumento che ci aiuta a creare kernel pacchettizzati in file binari, con estensione .deb.

--initrd crea il RAMDisk iniziale per mostrare l'immagine al boot;
--append-to-version -splash: aggiunge la stringa '-splash' alla versione del kernel che stiamo creando. In questo modo, se stiamo già utilizzando un kernel 2.6.11, il nostro nuovo kernel sarà il '2.6.11-splash', così in caso di problemi al boot potremo sempre tornare al kernel funzionante;
binary: questo argomento specifica il target della nostra compilazione:
binary           specifica che vogliamo compilare kernel_image, kernel_doc, kernel_headers
                 e kernel_source

kernel_source    questo target produce un pacchetto .deb contenente i sorgenti del nuovo
                 kernel che stiamo compilando

kernel_headers   questo target produce un pacchetto .deb contenente gli header inclusi nel
                 nuovo kernel

kernel_doc       questo target produce un pacchetto .deb contenente la documentazione
                 relativa al nuovo kernel

kernel_image     questo target produce un pacchetto .deb contenente il kernel in formato
                 binario, con tutti i moduli specificati nella configurazione 

Una volta terminata la compilazione, troveremo in /usr/src un pacchetto il cui nome sarà qualcosa di molto simile a kernel-image-2.6.11-splash_10.00.Custom_i386.deb.

A questo punto possiamo installare il nostro nuovo kernel!

# dpkg -i /usr/src/kernel-image-2.6.11-splash_10.00.Custom_i386.deb

Controlliamo la presenza del RAMDisk iniziale. Per fare ciò eseguiamo questo comando:

# ls /boot/initrd.img-2.6.11*

Se il comando restituisce un errore, creiamo il nostro RAMDisk:

# cd /boot/
# mkinitrd -o /boot/initrd.img-2.6.11-splash 2.6.11-splash

Installazione di Bootsplash

In questa fase ci viene in aiuto quel repository che abbiamo aggiunto all'inizio al nostro /etc/apt/sources.list.

Aggiorniamo i nostri archivi APT ed installiamo Bootsplash:

# apt-get update
# apt-get install bootsplash sysv-rc-bootsplash bootsplash-theme-tuxinfo-debian

Attenzione! L'ultimo pacchetto (bootsplash-theme-tuxinfo-debian) è il tema che vedremo al boot. Per vedere quali temi sono disponibili, diamo il seguente comando:

# apt-cache search bootsplash-theme

(Suggerimento: conviene inviare l'output in pipe a more o less, dato che esistono numerosi temi!)

Scegliamo in questo caso il tema "tuxinfo-debian".

Durante l'installazione comparirà una finestra per la configurazione, che ci chiederà quale immagine utilizzare per il nostro boot.

Selezioniamo l'immagine creata in precedenza, cioè initrd.img-2.6.11-splash.

Errore di post-installazione sysv-rc-bootsplash

Nel caso in cui sysv-rc-bootsplash non riesca a patchare gli script di avvio, otterremo un errore del tipo:

Testing if patches apply cleanly...
4 out of 5 hunks FAILED -- saving rejects to file /etc/init.d/rcS.rej
Patches would not apply cleanly.

In questo caso dobbiamo ovviare al problema manualmente, poiché il pacchetto non riesce a applicare le modifiche necessarie ad abilitare la progress-bar di bootsplash.

Procediamo come segue:

# mkdir /tmp/patch
# cp /etc/init.d/rc /etc/init.d/rc.originale
# cp /etc/init.d/rcS /etc/init.d/rcS.originale
# wget http://ftp.it.debian.org/debian/pool/main/s/sysvinit/sysv-rc_2.86.ds1-1_all.deb
# dpkg --extract sysv-rc_2.86.ds1-1_all.deb /tmp/patch
# cp /tmp/patch/etc/init.d/rc /etc/init.d/rc
# cp /tmp/patch/etc/init.d/rcS /etc/init.d/rcS
# apt-get install sysv-rc-bootsplash

In poche parole quel che abbiamo fatto non è stato altro che fare una copia di backup degli scripts esistenti, scaricare il vecchio pacchetto sysv-rc (con cui la patch funziona), copiare gli script dal pacchetto alla directory corretta (senza installarlo effettivamente) e quindi applicare la patch.

Configurazione del Bootloader

A questo punto siamo pronti per modificare il nostro bootloader. Facciamo un esempio per i due bootloader più comuni: GRUB e LiLO:

Configurazione per GRUB (/boot/grub/menu.lst)

Warning.png ATTENZIONE
Le seguenti indicazioni valgono solo per GRUB e non per GRUB2


title           Debian GNU/Linux, kernel 2.6.11-splash
root            (hd0,0)
kernel          /boot/vmlinuz-2.6.11-splash root=/dev/hda1 ro bootkbd=it
initrd          /boot/initrd.img-2.6.11-splash
savedefault
boot

Configurazione per LiLO (/etc/lilo.conf)

image=/boot/vmlinuz-2.6.11-splash
        label="2.6.11-splash"
        initrd=/boot/initrd.img-2.6.11-splash
        append="splash=silent"

Attenzione! Se usate LiLO come bootloader, è necessario aggiornare la sua configurazione con il seguente comando (dopo la modifica di /etc/lilo.conf):

# lilo

Conclusioni

Bene, adesso siamo in grado di riavviare la nostra macchina e gustarci un bel bootsplash! Nel caso vogliate cambiare tema, dopo aver installato il relativo pacchetto bootsplash-theme-*, basta fare:

# dpkg-reconfigure bootsplash

Bisogna poi selezionare il nuovo tema che abbiamo installato, di nuovo initrd.img-2.6.11-splash come initrd, ricontrolliamo LiLO / GRUB e riavviamo.

Happy Debian!




Guida scritta da: Hanska 20:32, 14 May 2005 (CEST) Swirl-auth20.png Debianized 20%
Estesa da:
keltik 05:59, 4 Lug 2006 (EDT)
Verificata da:

Verificare ed estendere la guida | Cos'è una guida Debianized