LeoBenelli
|
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