LeoBenelli
Personal WebPage


KERNEL

 

Per la compilazione del kernel, occorre spostarsi nella directory /usr/src/linux e digitare una tra queste possibilita' di visualizzazione delle opzioni del Kernel :

 

make config Selezioni sequenziali testuali.
make menuconfig Selezioni tramite menu e sottomenu
make xconfig Selezioni tramite interfaccia grafica su X.

 

Una volta effettuate le selezioni i comandi per ripulire dalle dipendenze, cioe' lanciare in sequenza :
make dep
make clean

 

Poi la compilazione vera tramite :

 

make bzImage

 

Se la compilazione e' andata a buon fine in /usr/src/linux/arch/i386/boot sara' presente con data di oggi il file bzImage pronto per essere copiato in /boot per poi eseguire :

 

lilo

 

o per generare un disco di boot con :

 

dd if=/usr/src/linux/arch/i386/boot/bzImage of=/dev/fd0

 

Se qualche opzione del Kernel e' stata impostata come modulo allora sara' probabilmente necessaria la sua compilazione con :

 

make modules
make modules_install

 

i files generati avranno estenzione .o all'interno della directory /lib/modules/x.y.z (x.y.z versione attuale del Kernel), in proprie sottodirectory a seconda della funzione.
Nella directory sara' presente anche un file modules.dep che contiene le dipendenze di un modulo da un altro cioe' viene indicata una lista di moduli dipendenti con accanto il modulo da cui dipende.

 

Per eseguire il caricamento dei moduli in memoria per il loro utilizzo e' possibile usare utilizzare il comando insmod.

 

Per il suo utilizzo e' comunque necessario gestire manualmente le dipendenze cioe' se in modules.dep il modulo1 dipende dal modulo2 per caricare il modulo1 e' necessario prima il modulo2 cioe' :

 

insmod modulo2
insmod modulo1

 

la rimozione deve avvenire in ordine inverso con il comando rmmod :

 

rmmod modulo1
rmmod modulo2

 

Per rimuovere i moduli non usati attualmente in maniera automatica e' possibile usare :

 

rmmod -a

 

per caricare un modulo con rimozione automatica usare :

 

insmod -k modulo1

 

La situazione dei moduli caricati e le loro opzioni e' possibile visualizzarla con :

 

lsmod

 

Per far caricare in automatico le dipendenze e' possibile usare il comando :

 

modprobe module1

 

Cio' carichera' anche il modulo2, in quanto modprobe analizza il file modules.dep

 

modprobe permette anche la rimozione di un modulo con le varie dipendenze :

 

modprobe -r module1

 

Un altra opzione di modprobe e' la ricerca di un modulo a seconda della sua funzione quindi :

 

modprobe -t scsi "ultra" carichera' il modulo ultrastor.o della sezione SCSI.

 

per avere un elenco ( e' possibile usare -t per limitare la ricerca ) dei moduli disponibili, digitare :

modprobe -l

 

Per generare il file modules.dep, digitare ( molte volte e' presente nello script di avvio ) :

 

depmod -a (se vengono visualizzati degli "Unresolved Symbol" usare anche il parametro -e, cio' permette di visualizzare quali sono le funzioni mancanti per trovarle poi nei sorgenti, e capire quindi quale modulo includere nella compilazione per risolvere il problema )

 

Se qualche modulo ha bisogno di avere qualche parametro passato per il corretto funzionamento, e' possibile farlo tramite il file /etc/conf.modules con l'opzione OPTION.

 

Tutto questo per una gestione manuale dei moduli ma dalla versione 2.2 di Linux esiste un demone Kmod che provvede al caricamento automatico dei moduli necessari tramite il comando modprobe di cui ha bisogno di conoscere il percorso tramite la valorizzazione di /proc/sys/kernel/modprobe con :

 

echo "/sbin/modprobe" > /proc/sys/kernel/modprobe

 

Kmod provvede solo alla installazione, per la rimozione e' opportuno mettere in /etc/crontab la riga :

 

0-59/5 * * * * root /sbin/rmmod -a

 

che provvede alla rimozione periodica dei moduli non piu' uitilizzati.

 

 

I sorgenti del Kernel si trovano in /usr/src/linux.

 

 

Il cuore del kernel per la gestione dei processi e' il file /usr/src/linux/kernel/sched.c.

 

Per aumentare lo spazio di buffer da usare per rivedere le linee uscite dallo schermo dopo un output di un comando su console visibile con SHIFT+PGUP e' necessario aggiungere #define VGA_CAN_DO_64K all'inizio del file /usr/src/linux/vgacon.c