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

Vai alla navigazione Vai alla ricerca
m
Riga 1: Riga 1:
== INSTALLAZIONE QEMU / KQEMU PER DEBIAN / UBUNTU ==
== 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]
== Software richiesto ==
i codici sorgenti di QEMU e di KQEMU, scompattarli in modo che
In ambiente Debian, ci viene in aiuto il tool '''[[APT]]''' (Advanced Package Tool), che ci fornir� tutto (o quasi) ci� di cui abbiamo bisogno.
la directory src di kqemu sia estratta all'interno della directory
Anzitutto, editiamo il nostro '''/etc/apt/sources.list''' aggiungendo il [[I_repository_ed_il_loro_utilizzo | repository]] bootsplash:
di quemu e settare i diritti con chmod 775 a tutto l'albero quemu/kquemu.
 
<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        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.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.
 
Per fare ci�, spostiamoci in '''/usr/src/''', e procediamo con la scompattazione':


<pre>
<pre>
2.rob@klingon:/home/rob# tar zxvf qemu-0.7.1.tar.gz
# cd /usr/src/
3.rob@klingon:/home/rob# chmod -R 775 /path/to/qemu-0.7.1
# tar -jxvf kernel-source-2.6.11.tar.bz2
4.rob@klingon:/home/rob# cd qemu-0.7.1
</pre>
5.rob@klingon:/home/rob/qemu-0.7.1# tar zxvf /home/rob/kqemu-0.6.2-1.tar.gz </pre>
 
A questo punto verr&agrave; creata una nuova directory, '''/usr/src/kernel-source-2.6.11/'''.


Ora va trovata la path del kernel-headers (linux-headers su
Spostiamoci dunque nella nuova directory e applichiamo la patch che abbiamo scaricato:
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)
# cd /usr/src/kernel-source-2.6.11
7.rob@klingon:/home/rob/qemu-7.0.1#gedit configure
# patch -p1 < /usr/src/bootsplash-3.1.4-sp3-2.6.8.1.diff
</pre>
</pre>


cambiare la riga: kernel_path=""
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.
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,
A questo punto, possiamo procedere con la compilazione del kernel.
ricordandosi di inserire la propria versione del kernel  
ricavabile con "uname -r"


Ora vanno installate le librerie necessarie (qualora non fossero presenti)
=== Configurazione del Kernel ===


Anzitutto, configuriamo il kernel stesso:
<pre># make menuconfig</pre>
Vediamo cosa selezionare, brevemente.
Selezioniamo il nostro modello di processore:
<pre>
<pre>
8.rob@klingon:/home/rob/qemu-7.0.1#apt-get install libsdl1.2-dev
| Processor type and features
9.rob@klingon:/home/rob/qemu-7.0.1#apt-get install zlib1g-dev
|--- Processor family (Athlon/Duron/K7)
</pre>
</pre>


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.
Attiviamo qualche altra opzione per il boot:


<pre>
<pre>
10.rob@klingon:/home/rob/qemu-7.0.1#./configure (verifichiamo che sia tutto ok e che kqemu sia attivo)
| Device Drivers
11.rob@klingon:/home/rob/qemu-7.0.1#make (compilazione)
|--- Block devices
12.rob@klingon:/home/rob/qemu-7.0.1#make install (installazione)
|------ <*> Loopback device support
|------ <*> RAM disk support
|------ (8192) Default RAM disk size (kbytes)
|------ [*]  Initial RAM disk (initrd) support
</pre>
</pre>


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
il configure ad utilizzarlo tramite il comando
10.rob@klingon:/home/rob/qemu-7.0.1#./configure --cc=gcc-3.3


Ora va installato il modulo del kernel
Attiviamo le opzioni necessarie a mostrare la schermata di boot:


<pre>
<pre>
13.rob@klingon:/home/rob/qemu-7.0.1#modprobe kqemu (fa partire la base kernel dell'acceleratore di qemu "kqemu")
| 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>
</pre>


Se si vuole che il modulo kernel kquemu parta all'avvio (consigliato) seguire la segg. procedura:
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):


<pre>
<pre>
14.rob@klingon:/#gedit /etc/init.d/bootmisc.sh
# make-kpkg clean
# make-kpkg --initrd --append-to-version -splash binary
</pre>
</pre>


ed inserire le seguenti righe nel file bootmisc.sh subito prima di "exit;"
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>
<pre>
# Start Qemu with KQemu accelerator
binary          specifica che vogliamo compilare kernel_image, kernel_doc, kernel_headers e kernel_source
/sbin/modprobe kqemu
kernel_source    questo target produce un pacchetto .deb contenente i sorgenti del nuovo kernel che stiamo compilando
mknod /dev/kqemu c 250 0 # Create the KQEMU device
kernel_headers  questo target produce un pacchetto .deb contenente gli header inclusi nel nuovo kernel
chmod 666 /dev/kqemu # Make it accessible to all users
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'''.


Creazione di un disco immagine (facoltativo)
A questo punto possiamo installare il nostro nuovo kernel!


<pre>
<pre>
15. rob@klingon:/home/rob#qemu-img create hd.img 3500M
# dpkg -i /usr/src/kernel-image-2.6.11-splash_10.00.Custom_i386.deb
</pre>
</pre>


Riga di comando per partenza qemu con acceleratore kqemu
Controlliamo la presenza del RAMDisk iniziale. Per fare ci&ograve; eseguiamo questo comando:
(cambiare il boot per fare l'installazione da cd etc..)


<pre>
<pre>
rob@klingon#qemu -boot c -cdrom /dev/cdrom -hda /home/rob/hd.img -user-net -pci -m 256 -k it -localtime
# ls /boot/initrd.img-2.6.11*
</pre>
</pre>


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


* -m --> memoria per l'emulatore = 256MB
<pre>
* -k it --> tastiera italiana
# cd /boot/
* -localtime --> usa ora locale (default UTC)
# mkinitrd -o /boot/initrd.img-2.6.11-splash 2.6.11-splash
* -pci --> emula scheda di rete rtl8029 PCI
</pre>
* -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 ===
== Installazione di Bootsplash ==


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.
In questa fase ci viene in aiuto quel repository che abbiamo aggiunto all'inizio al nostro '''/etc/apt/sources.list'''.


Prima di iniziare, dovete verificare che il vostro kernel supporti i seguenti moduli:
Aggiorniamo i nostri archivi APT ed installiamo Bootsplash:
  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
# apt-get update
# apt-get install bootsplash sysv-rc-bootsplash bootsplash-theme-tuxinfo-debian
</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.
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:


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
# apt-cache search bootsplash-theme
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:
(Suggerimento: conviene inviare l'output in pipe a ''more'' o ''less'', dato che esistono numerosi temi!)


<pre>
Scegliamo in questo caso il tema "tuxinfo-debian".
vde_switch -tap tun0 -daemon
chmod 777 /tmp/vde.ctl


ifconfig eth0 down
Durante l'installazione comparir&agrave; una finestra per la configurazione, che ci chieder&agrave; quale immagine utilizzare per il nostro boot.  
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
Selezioniamo l'immagine creata in precedenza, cio&egrave; '''initrd.img-2.6.11-splash'''.
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
=== Configurazione del Bootloader ===
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>


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


Ora tutto � pronto per lanciare qemu, con l'ultima avvertenza che dovete usare l'apposito wrapper vdeqemu:
Configurazione per GRUB ('''/boot/grub/menu.lst''')
<pre>
<pre>
vdeqemu -hda disk.img -localtime
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>
</pre>


Potete utilizzare tutte le opzioni di qemu, fuorch� -user-net, che disattiverebbe tun.
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>


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


=== PATCH PER WINDOWS ===


Per quanto riguarda l'utilizzo della CPU, a quanto pare
== Conclusioni ==
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.


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!
 
Nel caso vogliate cambiare tema, dopo aver installato il relativo pacchetto '''bootsplash-theme-*''', basta fare:
[http://klingon.homelinux.net/files/amnhltm.zip http://klingon.homelinux.net/files/amnhltm.zip]


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


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

contributi

Menu di navigazione