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

Vai alla navigazione Vai alla ricerca
m
mNessun oggetto della modifica
Riga 1: Riga 1:
== Introduzione ==
== INSTALLAZIONE QEMU / KQEMU PER DEBIAN / UBUNTU ==


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.


== Software richiesto ==
<pre>
In ambiente Debian, ci viene in aiuto il tool '''[[APT]]''' (Advanced Package Tool), che ci fornir� tutto (o quasi) ci� di cui abbiamo bisogno.
2.rob@klingon:/home/rob# tar zxvf qemu-0.7.1.tar.gz
Anzitutto, editiamo il nostro '''/etc/apt/sources.list''' aggiungendo il [[I_repository_ed_il_loro_utilizzo | repository]] bootsplash:
3.rob@klingon:/home/rob# chmod -R 775 /path/to/qemu-0.7.1
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
 
ubuntu) per inserirla nel file "configure" della directory
Abbiamo poi bisogno delle librerie e/o programmi che utilizzeremo per la compilazione vera e propria:
sorgente di qemu.


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


Ora possiamo procedere al download dei sorgenti del kernel:
cambiare la riga: kernel_path=""
 
in kernel_path="/usr/src/kernel-headers-2.6.10-k7" per debian
<pre># apt-get install kernel-source-2.6.11</pre>
o in kernel_path="/usr/src/linux-headers-2.6.10-k7" per ubuntu,
 
ricordandosi di inserire la propria versione del kernel
Con questo comando, [[APT]] scaricher� un archivio .tar.bz2 in '''/usr/src/''', contenente proprio il sorgente del [[kernel]].
ricavabile con "uname -r"
 
&Egrave; inoltre necessario scaricare una patch apposita da applicare al kernel:
 
[http://www.bootsplash.de/files/bootsplash-3.1.4-2.6.11.diff Patch per Kernel 2.6.11]
 
In caso si tenti questa procedura con altri kernel, &egrave; possibile scaricare la patch relativa, basta cercare in http://www.bootsplash.de/files/.
 
 
== 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.
Ora vanno installate le librerie necessarie (qualora non fossero presenti)
 
Per fare ci�, spostiamoci in '''/usr/src/''', e procediamo con la scompattazione':


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


A questo punto verr&agrave; creata una nuova directory, '''/usr/src/kernel-source-2.6.11/'''.
Verifichiamo che sia tutto ok e che il supporto kqemu sia attivo, in modo che venga compilato
 
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>
# cd /usr/src/kernel-source-2.6.11
10.rob@klingon:/home/rob/qemu-7.0.1#./configure (verifichiamo che sia tutto ok e che kqemu sia attivo)
# patch -p1 < /usr/src/bootsplash-3.1.4-sp3-2.6.8.1.diff
11.rob@klingon:/home/rob/qemu-7.0.1#make (compilazione)
12.rob@klingon:/home/rob/qemu-7.0.1#make install (installazione)
</pre>
</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.
NOTA su GCC:
 
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
A questo punto, possiamo procedere con la compilazione del kernel.
il configure ad utilizzarlo tramite il comando
 
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>
| Processor type and features
13.rob@klingon:/home/rob/qemu-7.0.1#modprobe kqemu (fa partire la base kernel dell'acceleratore di qemu "kqemu")
|--- 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>
| Device Drivers
14.rob@klingon:/#gedit /etc/init.d/bootmisc.sh
|--- 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>
| Device Drivers
# Start Qemu with KQemu accelerator
|--- Graphics support
/sbin/modprobe kqemu
|------ <M>  VGA 16-color graphics support
mknod /dev/kqemu c 250 0 # Create the KQEMU device
|------ <*>  VESA VGA graphics support
chmod 666 /dev/kqemu # Make it accessible to all users
|------ 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) ===


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


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


Prendiamo in considerazione l'ultimo comando:
Riga di comando per partenza qemu con acceleratore kqemu
 
(cambiare il boot per fare l'installazione da cd etc..)
'''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>
<pre>
binary          specifica che vogliamo compilare kernel_image, kernel_doc, kernel_headers e kernel_source
rob@klingon#qemu -boot c -cdrom /dev/cdrom -hda /home/rob/hd.img -user-net -pci -m 256 -k it -localtime
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>


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'''.
Opzioni:


A questo punto possiamo installare il nostro nuovo kernel!
* -m --> memoria per l'emulatore = 256MB
* -k it --> tastiera italiana
* -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.


<pre>
=== Qemu Networking ===
# dpkg -i /usr/src/kernel-image-2.6.11-splash_10.00.Custom_i386.deb
 
</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.


Controlliamo la presenza del RAMDisk iniziale. Per fare ci&ograve; eseguiamo questo comando:
Prima di iniziare, dovete verificare che il vostro kernel supporti i seguenti moduli:
  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>
# ls /boot/initrd.img-2.6.11*
apt-get install bridge-utils
</pre>
</pre>


Se il comando restituisce un errore, creiamo il nostro RAMDisk:
[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.


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>
# cd /boot/
wget http://puzzle.dl.sourceforge.net/sourceforge/vde/vde-1.5.9.tar.gz
# mkinitrd -o /boot/initrd.img-2.6.11-splash 2.6.11-splash
tar -xvzf vde-1.5.9.tar.gz
cd vde-1.5.9
./configure
make
make install
</pre>
</pre>


== Installazione di Bootsplash ==
Una volta fatto questo, siete pronti per configurare tun e il bridge:
 
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>
<pre>
# apt-get update
vde_switch -tap tun0 -daemon
# apt-get install bootsplash sysv-rc-bootsplash bootsplash-theme-tuxinfo-debian
chmod 777 /tmp/vde.ctl
</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:
ifconfig eth0 down
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


<pre>
brctl stp br0 off
# apt-cache search bootsplash-theme
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>
</pre>


(Suggerimento: conviene inviare l'output in pipe a ''more'' o ''less'', dato che esistono numerosi temi!)
NB: Una volta verificato che tutto funziona, queste istruzioni vanno inserite in uno script in modo da essere eseguite automaticamente all'accensione del computer
 
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
Scegliamo in questo caso il tema "tuxinfo-debian".
update-rc.d -n vde_qemu defaults 90</pre>
 
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'''.


=== Configurazione del Bootloader ===
Ora tutto � pronto per lanciare qemu, con l'ultima avvertenza che dovete usare l'apposito wrapper vdeqemu:
 
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>
<pre>
title          Debian GNU/Linux, kernel 2.6.11-splash
vdeqemu -hda disk.img -localtime
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>
</pre>


Configurazione per LiLO ('''/etc/lilo.conf''')
Potete utilizzare tutte le opzioni di qemu, fuorch� -user-net, che disattiverebbe tun.
<pre>
 
image=/boot/vmlinuz-2.6.11-splash
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.
        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):
=== PATCH PER WINDOWS ===
<pre>
# lilo
</pre>


Per quanto riguarda l'utilizzo della CPU, a quanto pare
Windows 9x non fa un uso corretto della istruzione CPU HLT e
quindi spara la cpu a 100% quando in idle (non fa nulla) e
invece la usa regolarmente quando sotto "sforzo", paradossalmente
infatti, se viene utilizzata la cpu di qemu l'utilizzo di
cpu si abbassa su linux in proporzione.


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


Bene, adesso siamo in grado di riavviare la nostra macchina e gustarci un bel bootsplash!
[http://klingon.homelinux.net/files/amnhltm.zip http://klingon.homelinux.net/files/amnhltm.zip]
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...
Link utili (in inglese):


Happy Debian!
*[http://ubuntuforums.org/showthread.php?t=39513 http://ubuntuforums.org/showthread.php?t=39513]
*[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]


----
--
[[User:Hanska|Hanska]] 20:32, 14 May 2005 (CEST)
[[Utente:Themonkey|Themonkey]] 20:31, Ago 19, 2005 (EDT)
The_monk_ey ( skype: the_monk_ey )
124

contributi

Menu di navigazione