<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> <HTML> <HEAD> <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9"> <TITLE>The Linux Kernel HOWTO: Moduli</TITLE> <LINK HREF="Kernel-HOWTO-11.html" REL=next> <LINK HREF="Kernel-HOWTO-9.html" REL=previous> <LINK HREF="Kernel-HOWTO.html#toc10" REL=contents> </HEAD> <BODY> <A HREF="Kernel-HOWTO-11.html">Avanti</A> <A HREF="Kernel-HOWTO-9.html">Indietro</A> <A HREF="Kernel-HOWTO.html#toc10">Indice</A> <HR> <H2><A NAME="s10">10. Moduli</A></H2> <P>I moduli caricabili del kernel possono far risparmiare memoria e facilitare la configurazione. Lo scopo dei moduli è cresciuto fino a includere filesystem, driver per schede Ethernet, driver per dispositivi a nastro, driver per la stampante e altro. <P> <P> <H2><A NAME="ss10.1">10.1 Installare le utility per i moduli</A> </H2> <P> <P>Le utility per i moduli sono disponibili nello stesso posto dove si sono presi i sorgenti del proprio kernel come <CODE>modutils-x.y.z.tar.gz</CODE>; si scelga il più alto livello di patch <CODE>x.y.z</CODE> che sia minore o uguale a quello del proprio kernel corrente. Le si decomprima con "<CODE>tar zxvf modutils-x.y.z.tar.gz</CODE>", si entri nella directory creata (<CODE>modutils-x.y.z</CODE>), si legga il file <CODE>README</CODE> e si seguano le istruzioni di installazione (solitamente qualcosa di semplice, come <CODE>make install</CODE>). Ora si dovrebbero avere i programmi <CODE>insmod</CODE>, <CODE>rmmod</CODE>, <CODE>ksyms</CODE>, <CODE>lsmod</CODE>, <CODE>genksyms</CODE>, <CODE>modprobe</CODE> e <CODE>depmod</CODE> in <CODE>/sbin</CODE>. Se si vuole, si verifichino le utility con il driver di esempio "hw" nella directory <CODE>insmod</CODE>; si veda il file <CODE>INSTALL</CODE> in quella sottodirectory per i dettagli. <P><CODE>insmod</CODE> inserisce un modulo dentro un kernel in esecuzione. I moduli solitamente hanno un'estensione <CODE>.o</CODE>; il driver di esempio summenzionato è chiamato <CODE>drv_hello.o</CODE>, così per inserirlo uno dovrebbe usare "<CODE>insmod drv_hello.o</CODE>". Per vedere i moduli che il kernel sta attualmente usando si usi <CODE>lsmod</CODE>. L'output è simile a questo: <PRE> blah# lsmod Module: #pages: Used by: drv_hello 1 </PRE> "<CODE>drv_hello</CODE>" è il nome del modulo, usa una pagina (4k) di memoria e al momento nessun'altro modulo del kernel dipende da esso. Per rimuovere questo modulo, si usi "<CODE>rmmod drv_hello</CODE>". Si noti che <CODE>rmmod</CODE> vuole un <I>nome di modulo</I>, non un nome di file; lo si prenda dall'elenco di <CODE>lsmod</CODE>. Lo scopo delle altre utility per i moduli è documentato nelle relative pagine di man. <P> <P> <H2><A NAME="ss10.2">10.2 Moduli distribuiti con il kernel</A> </H2> <P>Dalla versione 2.0.30, praticamente qualsiasi cosa è disponibile come modulo caricabile. Per usarli, per prima cosa ci si assicuri di non configurarli dentro il kernel; ovvero, non si risponda <CODE>y</CODE> ad essi durante il "<CODE>make config</CODE>". Si compili un nuovo kernel e si riavvii. Poi, si faccia <CODE>cd /usr/src/linux</CODE> e si esegua un "<CODE>make modules</CODE>". Questo compila tutti i moduli che si sono specificati nella configurazione del kernel e mette dei link a essi in <CODE>/usr/src/linux/modules</CODE>. Li si può usare direttamente da quella directory o eseguire "<CODE>make modules_install</CODE>", che li installa in <CODE>/lib/modules/x.y.z</CODE>, dove <CODE>x.y.z</CODE> è la versione del kernel. <P> <P>Questo può essere utile specialmente con i filesystem. È probabile che non si faccia uso frequente dei filesystem minix o msdos. Per esempio, per un dischetto msdos, si può fare <CODE>insmod /usr/src/linux/modules/msdos.o</CODE> e poi <CODE>rmmod msdos</CODE> quando si è finito. Questa procedura fa risparmiare circa 50Kb di RAM nel kernel durante le normali operazioni. Un piccola nota al contorno per il filesystem minix: si dovrà <I>sempre</I> configurarlo direttamente dentro il kernel per usarlo sui dischetti di ripristino. <P> <P> <HR> <A HREF="Kernel-HOWTO-11.html">Avanti</A> <A HREF="Kernel-HOWTO-9.html">Indietro</A> <A HREF="Kernel-HOWTO.html#toc10">Indice</A> </BODY> </HTML>