Old:Debian: accelerare GTK con Cairo e Glitz: differenze tra le versioni

m
Riga 1: Riga 1:
L' installazione dei drivers per le schede di rete Intel� PRO/Wireless 2200BG, tra le pi� diffuse e comuni per l' architettura Centrino, � abbastanza semplice in Debian GNU/Linux.
== Introduzione ==


=Prerequisiti=
Questo how-to spiegher� il procedimento da seguire per compilare (alla debian-way) un kernel 2.6.11 con la patch bootsplash.
Prima di seguire quanto riportato nella guida, assicuriamoci di avere a nostra disposizioni gli headers per il nostro kernel. Se abbiamo compilato noi stessi il kernel, allora possiamo essere tranquilli, ma se stiamo usando un kernel precompilato (ad esempio quello installato durante il setup di Debian, oppure scaricato tramite APT) allora dobbiamo necessariamente scaricare il pacchetto Debian contenente gli headers.
Prendendo come esempio una installazione standard di Debian Sarge, ecco come dobbiamo procedere:
<pre>$ uname -r
2.6.8-2-386</pre>
questo significa che dobbiamo procurarci gli headers relativi a questa release del kernel:
<pre>$ apt-cache search headers 2.6.8-2-386
kernel-headers-2.6.8-2-386 - Linux kernel headers 2.6.8 on 386</pre>
A questo punto � sufficiente installare il pacchetto:
<pre># apt-get install kernel-headers-2.6.8-2-386</pre>
e il gioco � fatto.


=Scaricare i sorgenti del driver=
 
Questo passo si esaurisce con l' usare APT per scaricare i drivers:
== Software richiesto ==
<pre>$ apt-cache search ipw module
In ambiente Debian, ci viene in aiuto il tool '''[[APT]]''' (Advanced Package Tool), che ci fornir� tutto (o quasi) ci� di cui abbiamo bisogno.
bsign - Corruption & intrusion detection using embedded hashes
Anzitutto, editiamo il nostro '''/etc/apt/sources.list''' aggiungendo il [[I_repository_ed_il_loro_utilizzo | repository]] bootsplash:
ipw2100-source - source for the ipw2100 driver
 
ipw2200-source - Source for the ipw2200 driver
<pre>deb http://www.bootsplash.de/files/debian/ unstable main</pre>
ipw2200-modules-2.6.8-2-386 - ipw2200 modules for Linux (kernel 2.6.8-2-386).
 
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 .tar.bz2 in '''/usr/src/''', contenente proprio il sorgente del [[kernel]].
 
&Egrave; 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, &egrave; 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, &egrave; 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':
 
<pre>
# cd /usr/src/
# tar -jxvf kernel-source-2.6.11.tar.bz2
</pre>
 
A questo punto verr&agrave; creata una nuova directory, '''/usr/src/kernel-source-2.6.11/'''.
 
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. &Egrave; importante applicare la patch bootsplash prima di qualunque altra patch, cio&egrave; 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>
</pre>
In questo caso ci interessano i sorgenti dei drivers, per cui:
<pre># apt-get install ipw2200-source</pre>
che scarica la documentazione relativa alla compilazione dei drivers, oltre a un archivio contente i sorgenti veri e propri (in /usr/src).


=Compilare i drivers=
Logghiamoci come root e spostiamoci in /usr/src
<pre>$ su
Password:
# cd /usr/src/</pre>
Ora scompattiamo i sorgenti dei drivers:
<pre># tar xzvf ipw2200-source.tar.gz</pre>
A questo punto possiamo procedere in due modi.


==Usare module-assistant==
Attiviamo le opzioni necessarie a mostrare la schermata di boot:
Se intendiamo avvalerci dell' utility [[Pagina_di_manuale_di_module-assistant |module-assistant]], a questo punto non dobbiamo fare altro che digitare il comando:
 
<pre># module-assistant a-i ipw2200</pre>
<pre>
ed il gioco � fatto.
| Device Drivers
==Compilare il driver manualmente==
|--- Graphics support
Se vogliamo compilare il driver manualmente, � sufficiente:
|------ <M>   VGA 16-color graphics support
<pre>$ cd modules/ipw2200
|------ <*>  VESA VGA graphics support
$ fakeroot debian/rules binary-modules KSRC=/usr/src/kernel-headers-$VERSION KVERS=$VERSION
|------ Console display driver support
|--------- [*] VGA text console
|--------- [*]  Video mode selection support
|--------- <*> Framebuffer Console support
|------ Bootsplash configuration
|--------- [*] Bootup splash screen
</pre>
</pre>
dove $VERSION il numero di versione del kernel che '''deve essere esattamente identico''' all' output che abbiamo ottenuto usando ''uname -r''.
Una volta compilato il driver, installiamo il driver usando '''dpkg -i nome_pacchetto_del_driver.deb'''.


=Nota per i kernels 2.6.x=
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...
Prima di poter usare il nostro driver appena compilato, dobbiamo procurarci il firmware che dovr� essere caricato da hotplug. Il firmware pu� essere scaricato dal sito [http://ipw2200.sourceforge.net/firmware.php IPW2200] e deve essere quello adatto alla versione del modulo da noi compilata. Ad esempio,  
 
<pre>$ ls /usr/src |grep deb
Se stiamo ricompilando un kernel ovviamente sono cose che non si dovrebbero dimenticare!!!
ipw2200-modules-2.6.8-2-386_1.0.3-1+2.6.8-16_i386.deb</pre>
ci dice che la versione del nostro modulo � la 1.0.3-1, per cui dalla pagina dei downloads di [http://ipw2200.sourceforge.net/firmware.php IPW2200] sceglieremo senza dubbio [http://ipw2200.sourceforge.net/firmware.php?fid=4 Versions v0.19-v1.0.3].
Otterremo un archivio da scompattare
<pre>$ tar xzvf ipw2200-fw-2.2.tgz</pre>


A questo punto dobbiamo semplicemente copiare i files ''ipw-2.2-*.fw'' all' interno della directory '/usr/lib/hotplug/firmware'', ricordandoci di compiere questa operazione dopo esserci loggati come utente root.
=== Compilazione con make-kpkg (debian-way) ===
Nel caso il comando ''dmesg'' rilevi un errore del tipo ''Unable to load firmware'', relativo al modulo ipw2200, si deve scompattare il firmware all'interno della directory ''/lib/firmware''.
 
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:
 
'''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:
 
<pre>
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>
 
Una volta terminata la compilazione, troveremo in /usr/src un pacchetto il cui nome sar&agrave; 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!
 
<pre>
# dpkg -i /usr/src/kernel-image-2.6.11-splash_10.00.Custom_i386.deb
</pre>
 
Controlliamo la presenza del RAMDisk iniziale. Per fare ci&ograve; eseguiamo questo comando:
 
<pre>
# ls /boot/initrd.img-2.6.11*
</pre>
 
Se il comando restituisce un errore, creiamo il nostro RAMDisk:
 
<pre>
# cd /boot/
# mkinitrd -o /boot/initrd.img-2.6.11-splash 2.6.11-splash
</pre>
 
== 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:
 
<pre>
# apt-get update
# apt-get install bootsplash sysv-rc-bootsplash bootsplash-theme-tuxinfo-debian
</pre>
Attenzione! L'ultimo pacchetto (bootsplash-theme-tuxinfo-debian) &egrave; il '''tema che vedremo al boot'''. Per vedere quali temi sono disponibili, diamo il seguente comando:
 
<pre>
# apt-cache search bootsplash-theme
</pre>
 
(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&agrave; una finestra per la configurazione, che ci chieder&agrave; quale immagine utilizzare per il nostro boot.
 
Selezioniamo l'immagine creata in precedenza, cio&egrave; '''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 scripts 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 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 scripts 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&ugrave; comuni: GRUB e LiLO:
 
Configurazione per GRUB ('''/boot/grub/menu.lst''')
<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>
 
Configurazione per LiLO ('''/etc/lilo.conf''')
<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>
 
Attenzione! Se usate LiLO come bootloader, &egrave; necessario aggiornare la sua configurazione con il seguente comando (dopo la modifica di /etc/lilo.conf):
<pre>
# lilo
</pre>
 
== 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:
 
<pre>
# dpkg-reconfigure bootsplash
</pre>
 
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!


----
----
Autore: [[Utente:Keltik|keltik]] 13:50, Set 12, 2005 (EDT)
[[User:Hanska|Hanska]] 20:32, 14 May 2005 (CEST)<br />
[[Categoria:Hardware]][[Categoria:Wireless]]
Verificato e esteso: [[Utente:Keltik|keltik]] 05:59, 4 Lug 2006 (EDT)
 
[[Categoria:Kernel]]
806

contributi