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

Da Guide@Debianizzati.Org.
Vai alla navigazione Vai alla ricerca
 
(25 versioni intermedie di 11 utenti non mostrate)
Riga 1: Riga 1:
== INSTALLAZIONE QEMU / KQEMU PER DEBIAN / UBUNTU ==
{{Old}}
== Introduzione ==


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


1. Scaricare da:
[http://fabrice.bellard.free.fr/qemu/download.html http://fabrice.bellard.free.fr/qemu/download.html]
i codici sorgenti di QEMU e di KQEMU, scompattarli in modo che
la directory src di kqemu sia estratta all'interno della directory
di quemu e settare i diritti con chmod 775 a tutto l'albero quemu/kquemu.


<pre>
== Software richiesto ==
2.rob@klingon:/home/rob# tar zxvf qemu-0.7.1.tar.gz
In ambiente Debian, ci viene in aiuto il tool '''[[APT]]''' (Advanced Package Tool), che ci fornirà tutto (o quasi) ciò di cui abbiamo bisogno.
3.rob@klingon:/home/rob# chmod -R 775 /path/to/qemu-0.7.1
Anzitutto, editiamo il nostro <code>/etc/apt/sources.list</code> aggiungendo il [[I_repository_ed_il_loro_utilizzo | repository]] bootsplash:
4.rob@klingon:/home/rob# cd qemu-0.7.1
 
5.rob@klingon:/home/rob/qemu-0.7.1# tar zxvf /home/rob/kqemu-0.6.2-1.tar.gz </pre>
<pre>deb http://www.bootsplash.de/files/debian/ unstable main</pre>


Ora va trovata la path del kernel-headers (linux-headers su
Abbiamo poi bisogno delle librerie e/o programmi che utilizzeremo per la compilazione vera e propria:
ubuntu) per inserirla nel file "configure" della directory
sorgente di qemu.


<pre>
<pre>
6.rob@klingon:/home/rob/qemu-7.0.1#uname -r (legge la versione kernel)
PACCHETTO          VERSIONE MINIMA    COMANDO
7.rob@klingon:/home/rob/qemu-7.0.1#gedit configure
 
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>
</pre>


cambiare la riga: kernel_path=""
Ora possiamo procedere al download dei sorgenti del kernel:
in kernel_path="/usr/src/kernel-headers-2.6.10-k7" per debian
 
o in kernel_path="/usr/src/linux-headers-2.6.10-k7" per ubuntu,
<pre># apt-get install kernel-source-2.6.11</pre>
ricordandosi di inserire la propria versione del kernel  
 
ricavabile con "uname -r"
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.


Ora vanno installate le librerie necessarie (qualora non fossero presenti)
Per fare ciò, spostiamoci in <code>/usr/src/</code>, e procediamo con la scompattazione:


<pre>
<pre>
8.rob@klingon:/home/rob/qemu-7.0.1#apt-get install libsdl1.2-dev
# cd /usr/src/
9.rob@klingon:/home/rob/qemu-7.0.1#apt-get install zlib1g-dev
# tar -jxvf kernel-source-2.6.11.tar.bz2
</pre>
</pre>


Verifichiamo che sia tutto ok e che il supporto kqemu sia attivo, in modo che venga compilato
A questo punto verrà; creata una nuova directory, <code>/usr/src/kernel-source-2.6.11/</code>.
il modulo corretto per il nostro kernel. Poi compiliamo ed installiamo.
 
Spostiamoci dunque nella nuova directory e applichiamo la patch che abbiamo scaricato:


<pre>
<pre>
10.rob@klingon:/home/rob/qemu-7.0.1#./configure (verifichiamo che sia tutto ok e che kqemu sia attivo)
# cd /usr/src/kernel-source-2.6.11
11.rob@klingon:/home/rob/qemu-7.0.1#make (compilazione)
# patch -p1 < /usr/src/bootsplash-3.1.6-2.6.11.diff
12.rob@klingon:/home/rob/qemu-7.0.1#make install (installazione)
</pre>
</pre>


NOTA su GCC:
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.
Come indicato sul sito QEMU non riesce a compilare con GCC dalla versione 4, pertanto � necessario utilizzare versioni precedenti, ad esempio la 3.3. Se avete gcc-3.3 installato � possibile istruire
 
il configure ad utilizzarlo tramite il comando
A questo punto, possiamo procedere con la compilazione del kernel.
10.rob@klingon:/home/rob/qemu-7.0.1#./configure --cc=gcc-3.3
 
=== Configurazione del Kernel ===
 
Anzitutto, configuriamo il kernel stesso:
 
<pre># make menuconfig</pre>


Ora va installato il modulo del kernel
Vediamo cosa selezionare, brevemente.


Selezioniamo il nostro modello di processore:
<pre>
<pre>
13.rob@klingon:/home/rob/qemu-7.0.1#modprobe kqemu (fa partire la base kernel dell'acceleratore di qemu "kqemu")
| Processor type and features
|--- Processor family (Athlon/Duron/K7)
</pre>
</pre>


Se si vuole che il modulo kernel kquemu parta all'avvio (consigliato) seguire la segg. procedura:
 
Attiviamo qualche altra opzione per il boot:


<pre>
<pre>
14.rob@klingon:/#gedit /etc/init.d/bootmisc.sh
| Device Drivers
|--- Block devices
|------ <*> Loopback device support
|------ <*> RAM disk support
|------ (8192) Default RAM disk size (kbytes)
|------ [*]  Initial RAM disk (initrd) support
</pre>
</pre>


ed inserire le seguenti righe nel file bootmisc.sh subito prima di "exit;"
 
Attiviamo le opzioni necessarie a mostrare la schermata di boot:


<pre>
<pre>
# Start Qemu with KQemu accelerator
| Device Drivers
/sbin/modprobe kqemu
|--- Graphics support
mknod /dev/kqemu c 250 0 # Create the KQEMU device
|------ <M>  VGA 16-color graphics support
chmod 666 /dev/kqemu # Make it accessible to all users
|------ <*>  VESA VGA graphics support
|------ Console display driver support
|--------- [*] VGA text console
|--------- [*]  Video mode selection support
|--------- <*> Framebuffer Console support
|------ Bootsplash configuration
|--------- [*] Bootup splash screen
</pre>
</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) ===


Creazione di un disco immagine (facoltativo)
Ora che il kernel è configurato, possiamo procedere alla compilazione (debian-way):


<pre>
<pre>
15. rob@klingon:/home/rob#qemu-img create hd.img 3500M
# make-kpkg clean
# make-kpkg --initrd --append-to-version -splash binary
</pre>
</pre>


Riga di comando per partenza qemu con acceleratore kqemu
Prendiamo in considerazione l'ultimo comando:
(cambiare il boot per fare l'installazione da cd etc..)
 
<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:


<pre>
<pre>
rob@klingon#qemu -boot c -cdrom /dev/cdrom -hda /home/rob/hd.img -user-net -pci -m 256 -k it -localtime
binary          specifica che vogliamo compilare kernel_image, kernel_doc, kernel_headers
</pre>
                e kernel_source
 
kernel_source    questo target produce un pacchetto .deb contenente i sorgenti del nuovo
                kernel che stiamo compilando


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


* -m --> memoria per l'emulatore = 256MB
kernel_doc      questo target produce un pacchetto .deb contenente la documentazione
* -k it --> tastiera italiana
                relativa al nuovo kernel
* -localtime --> usa ora locale (default UTC)
* -pci --> emula scheda di rete rtl8029 PCI
* -boot c --> boot da dico rigido
* -user-net --> Il sistema GUEST deve essere configurato in DHCP.
Qemu assegna un indirizzo dinamico "10.0.2.15" al SO guest,
il quale sar� in grado di pingare solo il suo GW che �
"10.0.2.2" Per testare la rete quindi avviare le applicazioni
di rete, visto che il ping <host> non funziona.


=== Qemu Networking ===
kernel_image    questo target produce un pacchetto .deb contenente il kernel in formato
                binario, con tutti i moduli specificati nella configurazione
</pre>


Con la soluzione indicata qui sopra, il sistema Guest riesce a navigare in Internet, ma non riesce ad accedere alle risorse del proprio host. La maniera pi� facile per configurare qemu in modo che possa fare entrambe le cose, � quella di installare vde e usare tun/tap con un bridge.
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>.


Prima di iniziare, dovete verificare che il vostro kernel supporti i seguenti moduli:
A questo punto possiamo installare il nostro nuovo kernel!
  tun: "Network device support" -> "Universal TUN/TAP device driver support"
  IP masquerade: "Networking options" -> "IP: Netfilter Configuration"
  bridging: "Networking options" -> "802.1d Ethernet Bridging"


e dovete installare il pacchetto bridge-utils:
<pre>
<pre>
apt-get install bridge-utils
# dpkg -i /usr/src/kernel-image-2.6.11-splash_10.00.Custom_i386.deb
</pre>
</pre>


[http://vde.sourceforge.net Vde] sta per Virtual Distributed Ethernet ed � un programma open source che vi permette di creare un network virtuale. Noi lo utilizzeremo per far fare in modo che il sistema Guest veda se stesso come un'unit� distinta dal sistema host e possa colloquiare con questi.
Controlliamo la presenza del RAMDisk iniziale. Per fare ciò eseguiamo questo comando:


Per quel che ne so io, non esiste (ancora) un pacchetto deb gi pronto per l'uso, ma per installare vde sono sufficenti poche righe:
<pre>
<pre>
wget http://puzzle.dl.sourceforge.net/sourceforge/vde/vde-1.5.9.tar.gz
# ls /boot/initrd.img-2.6.11*
tar -xvzf vde-1.5.9.tar.gz
cd vde-1.5.9
./configure
make
make install
</pre>
</pre>


Una volta fatto questo, siete pronti per configurare tun e il bridge:
Se il comando restituisce un errore, creiamo il nostro RAMDisk:


<pre>
<pre>
vde_switch -tap tun0 -daemon
# cd /boot/
chmod 777 /tmp/vde.ctl
# mkinitrd -o /boot/initrd.img-2.6.11-splash 2.6.11-splash
</pre>


ifconfig eth0 down
== Installazione di Bootsplash ==
brctl addbr br0
ifconfig eth0 0.0.0.0 promisc up
ifconfig tun0 0.0.0.0 promisc up
#l'IP qui sotto � quello del computer host; modificatelo per adeguarlo alle vs esigenze
ifconfig br0 192.168.0.200 netmask 255.255.255.0 broadcast 192.168.0.255 up


brctl stp br0 off
In questa fase ci viene in aiuto quel repository che abbiamo aggiunto all'inizio al nostro <code>/etc/apt/sources.list</code>.
brctl setfd br0 1
brctl sethello br0 1
brctl addif br0 eth0
brctl addif br0 tun0
#questo invece � l'indirizzo IP del gateway
route add default gw 192.168.0.1
</pre>


NB: Una volta verificato che tutto funziona, queste istruzioni vanno inserite in uno script in modo da essere eseguite automaticamente all'accensione del computer
Aggiorniamo i nostri archivi APT ed installiamo Bootsplash:
qui ne trovate uno piuttosto grezzo: [http://www.itaca.coopsoc.it/download/sources/vde_qemu vde_qemu], che va salvato in /etc/init.d. Dopodich�: <pre>chmod u+x /etc/init.d/vde_qemu
update-rc.d -n vde_qemu defaults 90</pre>


<pre>
# 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:


Ora tutto pronto per lanciare qemu, con l'ultima avvertenza che dovete usare l'apposito wrapper vdeqemu:
<pre>
<pre>
vdeqemu -hda disk.img -localtime
# apt-cache search bootsplash-theme
</pre>
</pre>


Potete utilizzare tutte le opzioni di qemu, fuorch� -user-net, che disattiverebbe tun.
(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è <code>'''initrd.img-2.6.11-splash'''</code>.
 
=== 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:
<pre>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.</pre>
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:
<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>
 
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 (<code>/boot/grub/menu.lst</code>)
 
{{Warningbox| Le seguenti indicazioni valgono '''solo''' per GRUB e non per GRUB2}}


Ora il sistema guest dovrebbe accedere a tutte le porte del sistema host, in maniera totalmente trasparente: da risorse di rete dovreste vedere il vostro server samba con le sue partizioni; dal browser dovreste accedere alle pagine del vostro server web, etc. etc.
<pre>
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
</pre>


=== PATCH PER WINDOWS ===
Configurazione per LiLO (<code>/etc/lilo.conf</code>)
<pre>
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 quanto riguarda l'utilizzo della CPU, a quanto pare
Attenzione! Se usate LiLO come bootloader, è necessario aggiornare la sua configurazione con il seguente comando (dopo la modifica di <code>/etc/lilo.conf</code>):
Windows 9x non fa un uso corretto della istruzione CPU HLT e
<pre>
quindi spara la cpu a 100% quando � in idle (non fa nulla) e
# lilo
invece la usa regolarmente quando � sotto "sforzo", paradossalmente
</pre>
infatti, se viene utilizzata la cpu di qemu l'utilizzo di
cpu si abbassa su linux in proporzione.


la patch puo' essere scaricata qui, va installata sul Win9x GUEST.
== Conclusioni ==


[http://klingon.homelinux.net/files/amnhltm.zip http://klingon.homelinux.net/files/amnhltm.zip]
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:


<pre>
# dpkg-reconfigure bootsplash
</pre>


Link utili (in inglese):
Bisogna poi selezionare il nuovo tema che abbiamo installato, di nuovo initrd.img-2.6.11-splash come initrd, ricontrolliamo LiLO / GRUB e riavviamo.


*[http://ubuntuforums.org/showthread.php?t=39513 http://ubuntuforums.org/showthread.php?t=39513]
Happy Debian!
*[http://fabrice.bellard.free.fr/qemu/index.html http://fabrice.bellard.free.fr/qemu/index.html]
*[http://fabrice.bellard.free.fr/qemu/qemu-doc.html http://fabrice.bellard.free.fr/qemu/qemu-doc.html]
*[http://www.debian-administration.org/?article=40 http://www.debian-administration.org/?article=40]
*[http://oui.com.br/n/content.php?article.21 http://oui.com.br/n/content.php?article.21]
*[http://www.carlsonhome.net/computer_help_log.php http://www.carlsonhome.net/computer_help_log.php]


--
{{Autori
[[Utente:Themonkey|Themonkey]] 20:31, Ago 19, 2005 (EDT)
|Autore=[[User:Hanska|Hanska]] 20:32, 14 May 2005 (CEST)
The_monk_ey ( skype: the_monk_ey )
|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