Debianway: compilare il kernel con il metodo ufficiale debian

di imu

Piccolo e semplificato how to per usare il fatidito debianway, cioe’ usare il sistema di debian di ricompilare il kernel e moduli esterni, premetto che questo how to considera che voi gia’ ricompiliate il kernel ( cioe’ abbiate installato tutto il necessario per farlo e soprattutto lo abbiate gia’ fatto)

Inizio con il dire che la fonte da cui potete apprendere e’ gia sul vostro pc “man make-kpkg” se vi da la pagina nulla apt-gettate kernel-package .

Pacchetti essenziali per procedere innanzitutto

root@debian-sid:/root#apt-get update && apt-get install kernel-package

*** consiglio vivamente di usare anche i sources di Debian ma questo sistema funziona anche su kernel-vanilla,Installiamo i sorgenti : ***

root@debian-sid:/root#apt-cache search kernel-source
 (avrete una lista scegliete quello che volete)

root@debian-sid:/root#apt-get install kernel-source-2.6.7
 (scarichiamo ed installiamo i sorgenti)

*** appena finito avremo in /usr/src/ il pacchetto kernel-source-2.6.7.tar.bz2 ora dovremo scompattarlo ***

root@debian-sid:/root#cd /usr/src
 (spostiamoci in /usr/src )
root@debian-sid:/usr/src#tar jxvf kernel-source-2.6.7.tar.bz2
 (scompattiamo il kernel)

*** ora avremo una dir kernel-source-2.6.7 potete visualizzare tutto con “ls” ***

root@debian-sid:/usr/src#ln -s kernel-source-2.6.7 linux
 (facciamo il link hai sorgenti chiamandolo linux)

*** a questo punto siete pronti, solo che voglio aggiungere una cosa importante nel caso usiate dei moduli tipo nvidia come li uso io a questo punto bisogna proseguire nel seguente modo: ***

root@debian-sid:/usr/src#apt-cache search nvidia
 (avrete la lista )
root@debian-sid:/usr/src#apt-get install nvidia-kernel-source
 (scarichiamo i sorgenti di nvidia )

*** li mettera’ esattamente dove ha messo il kernel in /usr/src/ e dovremo fare esattamente come il kernel cioe’ scompattarli quindi : ***

root@debian-sid:/usr/src#tar xvzf nvidia-kernel-source.tar.gz
 (scompattiamoli)

*** estrarra’ il contenuto sempre in /usr/src/ nella dir modules quindi non spaventatevi se trovate questa dir, vi spiego il motivo tutti i sorgenti di questi moduli che non fanno parte del kernel li mette in /usr/src/modules in modo che durante la compilazione alla Debianway li trovi in quella dir. Esempio altri moduli lm-sensors ( kernel 2.4.x) lirc-modules-source ( kernel 2.4.x), i2c-source ( kernel 2.4.x) e cosi via tutti quanti verranno estratti in /usr/src/modules ed all’interno di essa ci troverete i sorgenti dei moduli con i loro nomi !!!***

*** riassumendo ci troviamo in /usr/src abbiamo queste dir ed i sorgenti zippati : ***

root@debian-sid:/usr/src#ls -l
kernel-source-2.6.7
linux -> kernel-source-2.6.7
modules
kernel-source-2.6.7.tar.bz2
nvidia-kernel-source.tar.gz

*** ora proseguiamo con la compilazione dei nostri pacchetti : ***

#cd linux
 (ci spostiamo in linux)

root@debian-sid:/usr/src/linux#make-kpkg clean
 (dovrebbe non servire perche' i sorgenti sono stati appena
 estratti ma io lo do comunque)

root@debian-sid:/usr/src/linux#make menuconfig
 (non ha bisogno di commenti configuriamo il nostro kernel
 funziona anche xconfig,gconfig,etc)

root@debian-sid:/usr/src/linux#make-kpkg clean
 (si rida' per pulire)

root@debian-sid:/usr/src/linux#make-kpkg --revision 1.Custom
--append-to-version -k7 kernel_image modules_image

*** spieghiamo quello che abbiamo fatto passo passo spettettando il comando:***

make-kpkg
 (e' il comando per compilare )

--revision 1.Custom
 (serve far risultare che il kernel e' alla sua prima
 compilazione se omesso di default e' 10.00.Custom )

--append-to-version -k7
 (in pratica aggiunge -k7 al nome del kernel serve nel caso si sia
 compilato il kernel per qualcosa di specifico o non si vuole
 sovrascrivere il kernel di un altra compilazione della stessa versione )

kernel_image
 (dice di creare un pacchetto .deb del kernel comprensiva di moduli )

modules_image
 (dice di creare un pacchetto .deb dei moduli esterni al kernel
 nel nostro caso nvidia e avra' gli stessi parametri passati al kernel
 versione etc etc )

*** abbiamo finito ora avremo se tutto e’ andato bene in /usr/src i due pacchetti .deb pronti per essere installati e gestiti da debian ricordiamoci che siamo in /usr/usr/linux spostiamoci della dir superiore cioe’ /usr/src ***

#cd ..

#ls -l

kernel-source-2.6.7
linux -> kernel-source-2.6.7
modules
kernel-source-2.6.7.tar.bz2
nvidia-kernel-source.tar.gz
kernel-image-2.6.7-k7_1.Custom_i386.deb
nvidia-kernel-2.6.7-k7_1.0.6106-3+1.Custom_i386.deb

*** perfetto installiamoli :***

#dpkg -i kernel-image-2.6.7-k7_1.Custom_i386.deb
nvidia-kernel-2.6.7-k7_1.0.6106-3+1.Custom_i386.deb
 (installiamoli con dpkg)

*** a questo punto dpkg ci porra’ delle domande che sono :***

Selezionato il pacchetto kernel-image-2.6.7-1, che non lo era.
(Lettura del database ... 80693 file e directory attualmente installati.)
Spacchettamento di kernel-image-2.6.7-1
(da kernel-image-2.6.7-1_1.Custom_i386.deb) ...
Selezionato il pacchetto nvidia-kernel-2.6.7-1, che non lo era.
Spacchettamento di nvidia-kernel-2.6.7-1
(da nvidia-kernel-2.6.7-1_1.0.6106-3+1.Custom_i386.deb) ...
Configuro kernel-image-2.6.7-1 (1.Custom) ...
A new kernel image has been installed, and usually that means
that some action has to be taken to make sure that the new
kernel image is used next time the machine boots. Usually,
this entails running a ``bootloader'' like SILO, loadlin, LILO,
ELILO, QUIK, VMELILO, ZIPL, or booting from a floppy.   (Some
boot loader, like grub, for example, do not need to be run on
each new image install, so please ignore this if you are using
such a boot loader).

A new kernel image has been installed at /boot/vmlinuz-2.6.7-1
 (Size: 1735kB)

Symbolic links, unless otherwise specified, can be found in /

LILO sets up your system to boot Linux directly from your hard
 disk, without the need for booting from a boot floppy.

WARNING
 If you are keeping another operating system or another version
 of Linux on a separate disk partition, you should not have LILO
 install a boot block now. Wait until you read the LILO documentation.
 That is because installing a boot block now might make the other
 system un-bootable. If you only want to run this version of Linux,
 go ahead and install the boot block here. If it does not work, you
 can still boot this system from a boot floppy.

Would you like to create a boot floppy now? [No]
  (io rispondo sempre di no quindi do INVIO)
 You already have a LILO configuration in /etc/lilo.conf
 Install a boot block using the existing /etc/lilo.conf? [Yes]
  (a questa da come si capisce rispondo di si quindi ancora invio )
 Testing lilo.conf ...
 Testing successful.
 Installing the partition boot sector...
 Installation successful.

Configuro nvidia-kernel-2.6.7-1 (1.0.6106-3+1.Custom) ...
 Creating extra device nodes...done.
 Reloading devfsd: done.

root@debian-sid:/usr/src#

*** allora voglio spiegarvi cosa ha fatto: debian crea dei link in ” / ” per i kernel chiamandoli rispettivamente ” /vmlinuz /vmlinuz.old ” questi link puntano a /boot rispettivamente a ” /boot/vmlinuz-nostro_kernel_appena_fatto e /boot/vmlinux-vecchio_kernel_che_prima_era_installato ” quindi lui non modifica come molti credono il ” /etc/lilo.conf” ma questi due link !!!

aggiungo una nota per i moduli nvidia appena installati prima di reboottare date : ****

root@debian-sid:/usr/src#apt-get install nvidia-common nvidia-glx
root@debian-sid:/usr/src#echo " nvidia " >> /etc/modules

***sostituite nel /etc/X11/XF86Config-4 nella sezione Section “Device” della vostra scheda video Driver “nv” con Driver “nvidia” COME DA MANUALE !!!***

root@debian-sid:/usr/src#reboot
 (reboottate e' tutto ok )

*** voglio dare un ultima spiegazione di come fare per installare alla debianway nvidia su un immagine di kernel precompilata presa da apt per gli scansafatiche dato che i moduli precompilati almeno fino ad oggi li trovate per i kernel della serie 2.4.26, proseguiamo: ***

root@debian-sid:/root#apt-get update
 (aggiorniamo il database dei pacchetti)

root@debian-sid:/root#apt-cache search kernel-image-2.6.7
 (otteniamo la lista dei kernel precompilati e scegliamo
 quello che piu' ci interessa)

*** prima di proseguire occorre fare una cosa altrimenti avremo un errore cioe’ dobbiamo editare il lilo.conf per attuare una modifica che vi spiego ora, le immagini precompilate di debian usano ” initrd ” se noi proseguimo con l’installazione dato che come vi ho detto prima non viene editato il “/etc/lilo.conf” ma vengono cambiati i link in “/” avremo un errore per evitarlo facciamo cio’, naturalmente apt scarichera’ anche le dipendenze “initrd-tools” per esempio, proseguiamo : ***

*** editiamo /etc/lilo.conf e sotto la riga “default=linux” cioe’ del kernel che avvia di default inseriamo ” initrd=/initrd.img ” salviamo e non riavviatelo!!! non chiedetemi il perche’!!! Ora proseguiamo con l’installazione : ***

root@debian-sid:/usr/src#apt-get install
kernel-image-2.6.7-1-k7 kernel-source-2.6.7 nvidia-kernel-source

*** vi starete chiedendo ma stiamo installando un immagine precompilata i source a che servono ? aspettate e lo saprete, servono!!! a questo punto installera’ l’immagine di kernel vi fara’ le solite domande per l’installazione del kernel ( simili a quelle di sopra non le ripeto) e dovremo rifare tutto come prima cioe’ scompattare i sorgenti sia del kernel sia di nvidia : ****

root@debian-sid:/root#cd /usr/src
 (spostiamoci)

root@debian-sid:/usr/src#tar jxvf kernel-source-2.6.7.tar.bz2
root@debian-sid:/usr/src#tar zxvf nvidia-kernel-source.tar.gz
 (scompattiamo)

root@debian-sid:/usr/src#ln -s kernel-source-2.6.7 linux && cd linux
 (creamo il link e ci entriamo dentro)

root@debian-sid:/usr/src/linux#make-kpkg clean
 (puliamo i sorgenti)

root@debian-sid:/usr/src/linux#cp /boot/config-2.6.7-1-k7 /usr/src/linux/.config
 (copiamo il config del kernel appena installato)

root@debian-sid:/usr/src/linux#make menuconfig
 (scegliamo "Load an Alternate Configuration File" vi esce " .config"
 in una finestra diamo ok, usciamo e salviamo)

root@debian-sid:/usr/src/linux#make-kpkg clean
 (puliamo i sources)

root@debian-sid:/usr/src/linux#make-kpkg --append-to-version -1-k7 modules_image
 (costruiamo il modulo nvidia che di default verra' chiamato come la versione
 del kernel "2.6.7" ed aggiungiamo " -1-k7" con --append-to-version -1-k7
 come sta fatto nell'immagine del kernel-installata )

*** appena finisce avremo il nostro pacchetto nella dir superiore quindi : ***

root@debian-sid:/usr/src/linux#cd ..
 (ci spostiamo)

root@debian-sid:/usr/src#dpkg -i
nvidia-kernel-2.6.7-1-k7_1.0.6106-3+10.00.Custom_i386.deb
 (installiamo il nostro pacchetto)

*** ripetiamo i passi di sopra installazione di nvidia-common e nvidia-glx editiamo /etc/X11/XF86Config-4 e reboottiamo !!! ***

*** per qualsiasi domanda dubbio mi trovate su irc.azzurra.org canale #linux-help con il nick imu ***

ciao alla prossima !!

BY ANTONIO DE LUCI

2 pensieri su “Debianway: compilare il kernel con il metodo ufficiale debian

  1. ciao premetto di essere un po tanto imbranato ma compilando da sorgenti un kernel del ramo 2.6.23 su debian etch ho avuto un problema.. ho fatto tutto come dalla tua guida a parte quello che riguarda la scheda video dato k la mia intel ha i moduli già nel kernel e quando ho riavviato ho scelto da grub il mio kernel nuovo..lo lancio ma poco dopo dice kernel panic e qualcosa riferito a problemi con i file system…. cosa può essere???

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...