Debian Kernel Howto: differenze tra le versioni
Vai alla navigazione
Vai alla ricerca
m (module-assistant, modconf, riaggiustamenti) |
m (module-assistant, modconf, riaggiustamenti) |
||
Riga 1: | Riga 1: | ||
Per compilare il kernel su debian e facilitarsi la vita avremo bisogno di: | |||
<pre> | <pre> | ||
kernel-source-2.n.n (dove n e' la versione ) | |||
kernel-image-2.n.n-n-n86 | |||
kernel-package | |||
module-assistant | |||
modconf | |||
libncurses5-dev | |||
libncursesw5-dev (queste due non sono risolte come dipendenze e senza non potete far andare menuconfig) | |||
</pre> | </pre> | ||
Diventiamo root ( con su ) e portiamoci nella directory dove sono stati installati i sorgenti del kernel: | |||
<pre> | <pre> | ||
root@localhost:~# cd /usr/src | |||
</pre> | </pre> | ||
Avremo una situazione tipo: | |||
<pre> | <pre> | ||
root@localhost:/usr/src# ls | |||
. | kernel-kbuild-2.6-n (dove n e' la versione dell' attuale kernel-package) | ||
kernel-source-2. | kernel-source-2.n.n.tar.bz2 (dove n e' la versione del kernel) | ||
</pre> | </pre> | ||
Riga 47: | Riga 28: | ||
<pre> | <pre> | ||
root@localhost:/usr/src# tar xvjf kernel-source-2.n.n.tar.bz2 | |||
</pre> | </pre> | ||
A fine decompressione avremo una directory kernel-source-2. | A fine decompressione avremo una directory kernel-source-2.n.n (dove 2.n.n sta per la versione del kernel), creiamo un link simbolico linux che punta ai sorgenti del kernel: | ||
<pre> | <pre> | ||
root@localhost:/usr/src# ln -s /usr/src/kernel-source-2.n.n linux | |||
</pre> | </pre> | ||
Questo link serve a make-kpkg (ma anche a make nel vecchio stile di compilazione) in maniera che non debba sapere la versione del kernel, e quindi il percorso ai sorgenti, per convenzione gli sviluppatori del kernel hanno deciso di usare il metodo del link per ovviare a questo problema. | |||
Ora spostiamoci della directory e puliamo i sorgenti del kernel: | Ora spostiamoci della directory e puliamo i sorgenti del kernel: | ||
<pre> | <pre> | ||
root@localhost:/usr/src# cd linux | |||
root@localhost:/usr/src/linux# make-kpkg clean | |||
</pre> | </pre> | ||
Copiamo il file di configurazione della immagine del kernel che abbiamo scaricato (essendo l'immagine precompilata puo' boottare su quasi tutte le piattaforme avremo una piu alta possibilita che il nostro kernel booti senza problemi): | |||
<pre> | <pre> | ||
root@localhost:/usr/src/linux# cp /boot/config-2.n.n .config | |||
</pre> | </pre> | ||
Ora e' venuto il momento di cominciare la compilazione, prima per� una premessa su make-kpkg; | |||
questo tool accetta vari parametri direttamente su una sola riga di comando (elenchero solo i pi� importanti per gli altri leggete l'amichevole pagina di manuale aka read the friendly manual) | |||
<pre> | <pre> | ||
--help mostra l'utilizzo del tool | |||
--append-to-version foo appende un nome personalizzato al kernel, ad esempio foo | |||
--added-modules foo compila dei sorgenti esterni (presenti in /usr/src/modules) insieme al kernel, potete mettere | |||
pi� nomi separati da virgole | |||
--added-patches foo aggiunge delle patch al kernel, le path possono essere molteplici separate da virgole | |||
--config sceglie quale frontend usare per configurare il kernel (config, menuconfig, xconfig, gconfig) | |||
--initrd da usare se state compilando un kernel che utilizza le immagini initrd.img | |||
--zimage crea una zImage per il kernel | |||
--bzImage crea una bzImage per il kernel | |||
--mkimage qui potete passare dei parametri a mkinitrd, ad esempio se volete creare una immagine rom | |||
"genromfs -d %s -f %s" | |||
--rootcmd foo per passare un comando a make-kpkg ad esempio fakeroot o sudo | |||
CONCURRENCY_LEVEL questa variabile e' l'omonimo di -j per make, per usare vi basta mettere il numero intero che | |||
desiderate usare ( CONCURRENCY_LEVEL=4 make-kpkg --blabla ecc.ecc... ) | |||
</pre> | </pre> | ||
Ora vediamo "cosa pu� fare" make-kpkg: | |||
<pre> | <pre> | ||
clean pulisce i sorgenti | |||
buildpackage pulisce i sorgenti e avvia "binary" (vedere sotto) | |||
binary questo genera un nuovo pacchetto deb con i sorgenti, uno con gli header, uno con la | |||
documentazione e uno con l' immagine del kernel | |||
kernel_headers questo genera un pacchetto con gli headers del kernel | |||
kernel_image questo genera un pacchetto con il kernel | |||
build compila solo l'immagine del kernel | |||
modules compila tutti moduli esterni sotto /usr/src/modules e genera un file .diff e un pacchetto | |||
sorgente | |||
modules_config permette di configurare i moduli esterni residenti in /usr/src/modules prima di compilarli | |||
modules_image crea i pacchetti deb dei moduli esterni residenti in /usr/src/modules senza il file .diff e | |||
senza creare un'altro pacchetto sorgente | |||
modules_clean pulisce i sorgenti dei moduli esterni presenti in /usr/src/modules | |||
debian questo crea la directory ./debian utile per compilare i kernel vanilla e patcharli alla | |||
maniera debian | |||
</pre> | </pre> | ||
Ora vediamo come utilizzare velocemente questo potente tool per compilare il nostro kernel personalizzato; | |||
ipotizziamo di usare un kernel della serie 2.6.8, dopo aver pulito i sorgenti: | |||
; | |||
<pre> | <pre> | ||
root@localhost:/usr/src/linux# make-kpkg --append-to-version -nomepersonalizzato-386 --initrd --config menuconfig binary | |||
</pre> | </pre> | ||
Questo comando vi aprira' il frame di menuconfig (ci mettere un po di tempo poiche' genera sorgenti e documentazione prima di aprirvi il frontend) dove dovrete aggiungere|togliere tutto quello che ritenete necessario (andate su <help> per avere maggiori dettagli), una volta configurato tutto e usciti make-kpkg compilera' tutto come da spiegazione antecedente. | |||
Una volta finito tornerete alla riga di comando e vi sposterete nella directory precedente dove troverete tutti i vostri bei pacchetti .deb che potrete installare e disinstallare cosi come ogni pacchetto .deb: | |||
<pre> | <pre> | ||
# | root@localhost:/usr/src/linux# cd .. | ||
root@localhost:/usr/src# ls | |||
kernel-kbuild-2.6-3 | |||
kernel-source-2.6.8 | |||
kernel-source-2.6.8.tar.bz2 | |||
linux | |||
modules | |||
rpm | |||
kernel-image-2.6.8-nomepersonalizzato-386_10.00.Custom_i386.deb | |||
kernel-headers-2.6.8-nomepersonalizzato-386_10.00.Custom_i386.deb | |||
kernel-doc-2.6.8-nomepersonalizzato-386_10.00.Custom_i386.deb | |||
kernel-source-2.6.8-nomepersonalizzato-386_10.00.Custom_i386.deb | |||
root@localhost:/usr/src# dpkg -i kernel-image-2.6.8-nomepersonalizzato-386_10.00.Custom_i386.deb | |||
Selezionato il pacchetto kernel-image-2.6.8-nomepersonalizzato-386, che non lo era. | |||
(Lettura del database ... 191374 file e directory attualmente installati.) | |||
Spacchetto kernel-image-2.6.8-nomepersonalizzato-386 (da kernel-image-2.6.8-nomepersonalizzato-386_10.00.Custom_i386.deb) | |||
[...cut...] | |||
</pre> | </pre> | ||
Se abbiamo grub | Se abbiamo lilo dovremo configurare lilo.conf aggiungendo le righe relative al kernel, se abbiamo grub non ci resta altro che riavviare :D | ||
===Piccolo tip=== | |||
Se abbiamo messo reiserfs o ext3 come modulo dovremo aggiungerlo nel file /etc/mkinitrd/modules, in maniera che venga aggiunto alla immagine di initrd. | |||
Anche qui una piccola spiegazione: l'immagine di initrd e' una immagine base del kernel che viene caricata in ram prima del boot del nostro kernel, questa carica alcuni moduli cosi che il vero kernel una volta avviato si trovi i suddetti moduli gia caricati e possa filare liscia come l'olio (bug dei moduli in questione, esclusi :) ) | |||
Per | Per ora e' tutto, vedr� di aggiungere una mini guida a module-assistant, per quel che riguarda modconf: | ||
diventate root (con su) e digitate modconf. | |||
Buon divertimento con Debian GNU/Linux | Buon divertimento con Debian GNU/Linux | ||
Autore: Abortigeno | |||
Autore | |||