====== Compilare il kernel Linux ====== Autore: **//Fabio Di Matteo//** \\ Ultima revisione: **//02/08/2008//** \\ ===== Quello che serve ===== - Una distribuzione Linux, installata e funzionante; - i sorgenti del Kernel da [[http://www.kernel.org/pub/linux/kernel |www.kernel.org]]; - Grub il bootloader; - Strumenti di sviluppo : gcc, make; ===== Preparazione preliminare ===== Da adesso gni qualvolta scriverò ''linux-2.6.xx'' al posto delle xx è da intendersi il numero di versione che si sta usando (minor version) . \\ Copiamo il pacchetto del kernel appena scaricato in ''/usr/src/'' #cp linux-2.6.xx.tar.bz2 /usr/src entriamo nella directory /usr/src e decomprimiamo il file: # cd /usr/src # tar xjvf linux-2.6.xx.tar.bz2 Ricreiamo il link simpolico al sorgente: # rm linux && ln -s linux-2.6.xx linux Adesso prepariamo l'ambiente per la compilazione: # cd linux # make mrproper ===== Configurazione del kernel ===== Adesso si puo' passare alla configurazione del kernel, attraverso la quale si può decidere se includere un certo modulo oppure no, oppure se compilarlo dentro il kernel stesso. \\ Per configurare linux si possono usare 3 programmi: ''menuconfig'' , ''xconfig'' , ''gconfig''. Menuconfig e' un programma che funziona da console, gconfig e xconfig invece funzionano dentro Xorg grazie rispettivamente alle qt e alle gtk (librerie grafiche).\\ Ecco come avviare uno dei programmi: per ''menuconfig '': # make menuconfig per ''gconfig '': # make gconfig per ''xconfig '': # make xconfig ===== Compilazione ===== Dopo aver finito la fase di configurazione si passa alla compilazione digitando il seguente comando: # make -j3 Il ''-j3'' comunica il numero di processi che si possono lanciare per la compilazione, serve quindi a velocizzare la stessa. Non ha senso comunque su di una macchina con 1 solo processore un valore più grande di j3 . ===== Installazione del kernel ===== Installiamo i moduli: # make modules_install Copiamo i file ''System.map'' e ''.config'' : # cp System.map /boot/System.map-2.6.xx # cp .config /boot/config-2.6.xx Installiamo il kernel: # cp arch/x86/boot/bzImage /boot/vmlinuz-2.6.xx **N.B. ''arch/x86'' gisto perchè siamo su di una piattaforma intel a 32 bit, altrimenti cambiava directory.** Creiamo la ram disk (initrd): # cd /boot # mkinitramfs -o initrd.img 2.6.xx Rinominiamo il file della ramdisk(per comodità): # mv initrd.img initrd.img-2.6.xx ===== Aggiorniamo il bootloader ===== ==== Per grub >= 1.96 ==== Aggiungiamo a ''/boot/grub/grub.cfg'' : ... menuentry "GNU/Linux, linux 2.6.xx" { linux /boot/vmlinuz-2.6.xx root=/dev/ ro initrd /boot/initrd.img-2.6.xx } ... ==== Per Lilo ==== Aggiungiamo a ''/etc/lilo.conf'': ... image = /boot/vmlinuz-2.6.xx root = /dev/ initrd=/boot/initrd.img-2.6.xx label = Linux_2.6.xx read-only ... Dopodicchè digitiamo: # lilo -v