martedì 7 settembre 2010

Compilazione nuovo kernel


Slackware dalla versione 9.1 è pronta per il Kernel 2.6, infatti tutti i programmi di sviluppo necessari alla compilazione sono disponibili, quindi non dovrete fare nessun upgrade.
Per comodità recuperate il file config-generic-2.6.xx di Patrick http://slackware.osuosl.org/slackware-current/source/k/ e salvatelo nella vostra home, partire con un file di configurazione sicuro è comodo e ci risparmierà diverso lavoro, poi recuperate i sorgenti del Kernel da http://www.kernel.org/pub/linux/kernel prelevando il formato tar.bz2 o tar.gz, il bz2 utilizzando una compressione migliore sarà più piccolo e quindi più veloce da trasferire.





Dopo aver scaricato i sorgenti del kernel ad esempio nella vostra home, si devono copiare in /usr/src per poi decomprimerli il tutto rigorosamente da ROOT:
#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
cancellate e ricreate il link simbolico
# rm linux ; ln -s linux-2.6.xx linux
spostatevi in linux
# cd linux
preparate l'ambiente
# make mrproper
è buona cosa a questo punto, copiarsi il file config-generic per avere una configurazione ottimale e per essere sicuri che il nuovo kernel funzioni senza problemi:
# cp /boot/config-huge-smp-2.6.xx-smp /usr/src/linux-2.6.xx/.config 
io uso questo file config voi potete comunque mettere quello che utilizzate. A questo punto il file di configurazione sarà copiato in 2.6.xx .config del nuovo kernel,procediamo con la configurazione digitando:
# make oldconfig
rispondete alle domande senza preoccuparvi di sbagliare, le configurazioni poi le ritroverete nei tool grafici se vorrete modificare qualche cosa continuate la configurazione del Kernel utilizzando uno dei seguenti tool:
make menuconfig
make xconfig
make gconfig
make menuconfig che usa ncurses si basa su un menù testuale, xconfig e gconfig devono essere avviati da X e usano rispettivamente le lib QT e GTK. Make oldconfig è molto comodo in caso di aggiornamento, e vi chiederà solo le risposte alle nuove domande di configurazione, che si aggiungono di volta in volta alle release, ovviamente dovete avere il file .config presente in /usr/src/linux. Procedete con la configurazione usando make menuconfig
# make menuconfig
a questo punto potrete o configurare il Kernel da zero, usando l'esaustivo < Help > che vi aiuterà nella configurazione, oppure, scelta più sensata, usare il file di configurazione dal grande PJV. Nel primo caso terminate le modifiche uscire con < Exit > e alla domanda Do you wish to save your new kernel configuration decidete se salvare la configurazione o ripeterla, se invece optate per la seconda caricate la configurazione nota di Patrik usando la funzione Load an Alternate Configuration File (la trovate in fondo al men), apportate le modifiche e salvate con la funzione Save Configuration to an Alternate File, questo per non sovrascrivere il config funzionante. Importante, non usate i config della versione 2.4.xx è sconsigliato !
Uscite con < Exit > e salvate la configurazione. In entrambi i casi verrà creato in /usr/src/linux il file .config che contiene appunto tutta la configurazione del Kernel. Terminata la configurazione create l'immagine del Kernel compresso usando
# make 
Il make è il comando che compila realmente il kernel, a questo comando si può passare l'opzione -j2 o -j3 che indicano il numero di processi da lanciare in parallelo durante la compilazione;con questa opzione non si fa altro che velocizzare il tempo per la compilazione:una singola compilazione non occupa la cpu al 100%, mentre due o più processi permettono di sfruttare meglio la macchina e di diminuire il tempo totale di compilazione.(ricordatevi che non ha senso usare un numero di processi maggiore di 2 o 3 su macchine che usano una sola CPU.)
Per fare direttamente un boot disk (senza filesystem di root o LILO) inserite un floppy nuovo e impartite il comando
# make bzdisk
dopo un certo periodo che dipende ovviamente dalla velocità del vostro sistema vi troverete l'immagine del Kernel pronta in /usr/src/linux/arch/i386/boot/. Procedete con la compilazione e installazione dei moduli con i seguenti comandi
# make modules_install
i moduli saranno installati regolarmente in /lib/modules/versione-kernel. Siete ancora in /usr/src/linux un ls -a vi mostrerà il contenuto della dir, noterete il file .config e un file System.map questi due file vanno copiati in /boot ma la cosa migliore è rinominarli gestendo una nuova direttiva in LILO
# cp System.map /boot/System.map-2.6.xx
# cp .config /boot/config-2.6.xx
ora il Kernel
# cp arch/x86/boot/bzImage /boot/vmlinuz-2.6.xx
ora modificate /etc/lilo.conf, potete prendete come riferimento questo esempio (man lilo per info maggiori).In questo modo nel menù iniziale di lilo vi troverete a poter avviare 2 kernel, ricordatevi di tenere sempre un kernel stabile in modo che se quello compilato ha problemi si può sempre utilizzare quello di riserva.
image = /boot/vmlinuz
root = /dev/hda2
label = Slack_2.4.33
read-only
image = /boot/vmlinuz-2.6.17.11
root = /dev/hda2
label = Slack_2.6.17.11
read-only
terminato questo impartite il comando lilo per aggiornare la nuova configurazione
# lilo -v
volendo potete anche rimuovete i link simbolici che puntano ai vecchi file
# rm /boot/System.map config vmlinuz
e ricreate quelli nuovi che puntano ai nuovi file
# ln -s /boot/System.map-2.6.xx /boot/System.map
# ln -s /boot/config-2.6.xx /boot/config
# ln -s /boot/vmlinuz-2.6.xx /boot/vmlinuz
in questo modo il Kernel appena compilato sarà quello di default perché la direttiva di lilo punta direttamente al link simbolico vmlinuz. Se mancante create il file modprobe.conf, infatti dal 2.6.xx modules.conf è superato da modprobe.conf
# generate-modprobe.conf /etc/modprobe.conf
ora dovete modificare il file /etc/fstab per inserire il filesystem virtuale Sysfs, il quale si occupa delle informazioni sui dispositivi lasciando a Procfs il compito delle informazioni sui processi, quindi se non presente create nella root principale la dir sys
# mkdir /sys
e poi inserite in /etc/fstab (mantenendo la giusta formattazione) una riga come questa
none /sys sysfs defaults 0 0
riavviate il sistema e godetevi il nuovo Kernel.

Nessun commento:

Posta un commento