<!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: Compilare il kernel </TITLE> <LINK HREF="Kernel-HOWTO-6.html" REL=next> <LINK HREF="Kernel-HOWTO-4.html" REL=previous> <LINK HREF="Kernel-HOWTO.html#toc5" REL=contents> </HEAD> <BODY> <A HREF="Kernel-HOWTO-6.html">Avanti</A> <A HREF="Kernel-HOWTO-4.html">Indietro</A> <A HREF="Kernel-HOWTO.html#toc5">Indice</A> <HR> <H2><A NAME="s5">5. Compilare il kernel </A></H2> <P> <P> <H2><A NAME="ss5.1">5.1 Far pulizia e sistemare le dipendenze </A> </H2> <P> <P>Quando termina lo script di configurazione, dice pure di dare "<CODE>make dep</CODE>" e (possibilmente) "<CODE>make clean</CODE>". Quindi, si faccia il "<CODE>make dep</CODE>". Ciò assicura che tutte le dipendenze, come i file include, siano a posto. Non ci mette tanto, a meno che il proprio computer non sia piuttosto lento. Per le vecchie versioni del kernel, quando terminava, si doveva fare un "<CODE>make clean</CODE>". Ciò rimuoveva tutte i file oggetto e alcune altre cose che le vecchie versioni lasciavano in giro. In ogni caso, <I>non</I> si dimentichi questo passo prima di provare a ricompilare il kernel. <P> <P> <H2><A NAME="ss5.2">5.2 Tempo di compilazione </A> </H2> <P> <P>Dopo il <CODE>make dep</CODE> ed il <CODE>make clean</CODE>, si può dare "<CODE>make bzImage</CODE>" o "<CODE>make bzdisk</CODE>" (questa è la parte che richiede un tempo più lungo). "<CODE>make bzImage</CODE>" compilerà il kernel e lascerà (tra le altre cose) in <CODE>arch/i386/boot</CODE> un file chiamato "<CODE>bzImage</CODE>". Questo è il nuovo kernel compresso. "<CODE>make bzdisk</CODE>" fa la stessa cosa, ma piazza pure il nuovo <CODE>bzImage</CODE> su un dischetto che si spera sia stato messo nel lettore "A:". "<CODE>bzdisk</CODE>" è piuttosto comodo per verificare un nuovo kernel; se si pianta (o semplicemente non funziona bene), basta solo rimuovere il dischetto e riavviare il sistema con il proprio vecchio kernel. È pure un modo comodo di fare il boot se accidentalmente si cancella il proprio kernel (o capitano altre cose ugualmente terribili). Lo si può pure usare per installare un nuovo sistema quando si è semplicemente scaricato il contenuto di un disco in un altro ("tutto questo e molto altro ancora! ORA quanto vorresti pagare?"). <P> <P>Tutti i kernel ragionevolmente recenti sono compressi, da qui il "<CODE>bz</CODE>" di fronte al nome. Un kernel compresso si decomprime da solo automaticamente quando eseguito. <P>Nei kernel più vecchi, non c'era l'opzione per costruire un <CODE>bzImage</CODE>; era semplicemente un <CODE>zImage</CODE>. Tale opzione al momento è ancora disponibile ma comunque, data la dimensione del codice dei nuovi kernel, ora è più o meno obbligatorio compilare un <CODE>bzImage</CODE> perché il vecchio metodo non riesce a gestire kernel molto grossi. <P> <P> <H2><A NAME="ss5.3">5.3 Altri "make"</A> </H2> <P> <P>"<CODE>make mrproper</CODE>" è come un "<CODE>make clean</CODE>" molto più accurato. Qualche volta è necessario; si può desiderare di farlo dopo aver applicato una patch. "<CODE>make mrproper</CODE>" cancellerà anche il file di configurazione e quindi conviene salvarselo (<CODE>.config</CODE>) se si pensa che può essere utile. <P> <P>"<CODE>make oldconfig</CODE>" proverà a configurare il kernel da un vecchio file di configurazione; eseguirà da solo tutto il processo "<CODE>make config</CODE>". Se non si è mai compilato un kernel prima o non si possiede un vecchio file di configurazione, allora probabilmente non lo si dovrebbe fare, in quanto molto probabilmente si vorrà modificare la configurazione predefinita. <P> <P>Si veda la sezione sui moduli per una descrizione di "<CODE>make modules</CODE>". <P> <P> <H2><A NAME="ss5.4">5.4 Installare il kernel </A> </H2> <P> <P>Quando si ha un kernel che sembra funzionare nel modo desiderato, allora è il momento di installarlo. Molti usano LILO (LInux LOader) per questo. "<CODE>make bzlilo</CODE>" installerà il kernel, lancerà LILO e preparerà tutto per il boot, MA SOLO se lilo è configurato nel proprio sistema nel modo seguente: il kernel è <CODE>/vmlinuz</CODE>, lilo è in <CODE>/sbin</CODE> e il file di configurazione di lilo (<CODE>/etc/lilo.conf</CODE>) è coerente con tutto ciò. <P> <P>Altrimenti, è necessario usare LILO direttamente. È un pacchetto abbastanza semplice da installare e da usare, ma ha la tendenza a confondere la gente con il file di configurazione. Si dia un'occhiata al file di configurazione (<CODE>/etc/lilo/config</CODE> per le vecchie versioni oppure <CODE>/etc/lilo.conf</CODE> per quelle nuove) e si veda qual è l'impostazione corrente. Il file di configurazione è simile a questo: <P> <P> <PRE> image = /vmlinuz label = Linux root = /dev/hda1 ... </PRE> <P>"<CODE>image =</CODE>" è impostato al kernel attualmente installato. La maggior parte della gente usa <CODE>/vmlinuz</CODE>. "<CODE>label</CODE>" è usato da lilo per determinare quale kernel o sistema operativo avviare, "<CODE>root</CODE>" è la <CODE>root</CODE> ("/") di quel particolare sistema operativo. Si faccia una copia di backup del vecchio kernel e si copi il <CODE>bzImage</CODE> appena creato al suo posto (si dovrà dare "<CODE>cp bzImage /vmlinuz</CODE>" se si usa "<CODE>/vmlinuz</CODE>"). Poi, si rilanci lilo: su un nuovo sistema si può semplicemente lanciare "<CODE>lilo</CODE>", ma in uno vecchio si dovrà fare <CODE>/etc/lilo/install</CODE> o addirittura <CODE>/etc/lilo/lilo -C /etc/lilo/config</CODE>. <P> <P>Se si vuol saperne di più sulla configurazione di LILO, o non si ha LILO, si prenda la versione più recente dal proprio sito ftp preferito e si seguano le istruzioni. <P> <P>Per avviare uno dei propri vecchi kernel dal disco fisso (un altro modo per salvarsi nel caso si facciano casini con il nuovo), si copino le righe che seguono "<CODE>image = xxx</CODE>" (compresa) alla fine del file di configurazione di LILO e si modifichi "<CODE>image = xxx</CODE>" in "<CODE>image = yyy</CODE>", dove "<CODE>yyy</CODE>" è il percorso completo del file in cui si fatto il backup del kernel. Poi si cambi "<CODE>label = zzz</CODE>" in "<CODE>label = linux-backup</CODE>" e si rilanci <CODE>lilo</CODE>. Può essere necessario mettere nel file di configurazione una riga con "<CODE>delay=x</CODE>", dove x è il numero di decimi di secondo che LILO dovrà attendere prima di fare il boot, in modo da poterlo interrompere (con il tasto shift, per esempio), e inserire l'etichetta della immagine di boot di backup (nel caso succedano cose non proprio piacevoli). <P> <P> <HR> <A HREF="Kernel-HOWTO-6.html">Avanti</A> <A HREF="Kernel-HOWTO-4.html">Indietro</A> <A HREF="Kernel-HOWTO.html#toc5">Indice</A> </BODY> </HTML>