LKN: Guida di Riferimento dei Parametri di Compilazione del Kernel: differenze tra le versioni

nuova caetgoria
m (link indice)
(nuova caetgoria)
 
(9 versioni intermedie di 4 utenti non mostrate)
Riga 1: Riga 1:
''Torna all'indice: [[Linux Kernel in a Nutshell]]''
{{Template:LKN}}
__TOC__


Come discusso nel Capitolo 4, lo strumento che unisce insieme il kernel è ''make'', al quale si passa un ''target'' che specifica cosa si vuole compilare. Il capitolo 4 è andato oltre gli obiettivi base necessari alla corretta compilazione del kernel, ma il sistema di compilazione del kernel ha anche una larga scala di altri ''targets''. Questo capitolo dettaglia questi targets, e per cosa possono venir utilizzati.
Come discusso nel Capitolo 4, lo strumento che unisce insieme il kernel è ''make'', al quale si passa un ''target'' che specifica cosa si vuole compilare. Il capitolo 4 è andato oltre gli obiettivi base necessari alla corretta compilazione del kernel, ma il sistema di compilazione del kernel ha anche una larga scala di altri ''target''. Questo capitolo dettaglia questi target, e per cosa possono venir utilizzati.


* Nota di prima traduzione: nel testo, targets è stato tradotto a volte come obiettivi, anche se forse sarebbe meglio parlare di etichette dal momento che in un Makefile si chiamano così, la maggior parte delle volte inceve si è preferito lasciare la parola in lingua originale ''italianizzandola'' in ''target'' senza ''s''.  
* Nota di prima traduzione: nel testo, target è stato tradotto a volte come obiettivi, anche se forse sarebbe meglio parlare di etichette dal momento che in un Makefile si chiamano così, la maggior parte delle volte inceve si è preferito lasciare la parola in lingua originale ''italianizzandola'' in ''target'' senza ''s''.  


Tutti questi target vengono passati al programma ''make'' a linea di comando, e un numero di questi può venir raggruppato insieme se lo si desidera. Per esempio:
Tutti questi target vengono passati al programma ''make'' a linea di comando, e un numero di questi può venir raggruppato insieme se lo si desidera. Per esempio:
Riga 22: Riga 23:




== Target Informativi ==
== Target informativi ==


La tabella 10-1 mostra i target che stampano la versione del kernel, basato su un numero di opzioni differenti. Sono solitamente usati da scripts per determinare la versione del kernel che si sta per compilare.
La tabella 10-1 mostra i target che stampano la versione del kernel, basato su un numero di opzioni differenti. Sono solitamente usati da script per determinare la versione del kernel che si sta per compilare.


''Tabella 10-1. Target informativi''
''Tabella 10-1. Target informativi''
Riga 46: Riga 47:
== Target di pulizia ==
== Target di pulizia ==


La tabella 10-2 mostra i target che semplicemente rimuovono i file delle compilazioni precedenti. Il loro uso è caldamente raccomandato per essere sicuri di non contaminare le nuove compilazioni con file abbandonati che possono essere stati compilati con opzioni differenti. Differiscono da quanto eliminano; a volte si preferisce mantenere file che si è cambiati.
La tabella 10-2 mostra i target che semplicemente rimuovono i file delle compilazioni precedenti. Il loro uso è vivamente consigliato per essere sicuri di non contaminare le nuove compilazioni con file abbandonati che possono essere stati compilati con opzioni differenti. Differiscono da quanto eliminano; a volte si preferisce mantenere file che si è cambiati.


''Table 10-2. Target di pulizia''
''Table 10-2. Target di pulizia''
Riga 65: Riga 66:
  <tr>
  <tr>
   <td width="50%">distclean</td>
   <td width="50%">distclean</td>
   <td width="50%">Fa tutto cio' che mrproper fa e rimuove alcuni editor backup e file patch abbandonate.</td>
   <td width="50%">Fa tutto ci&ograve; che mrproper fa e rimuove alcuni editor backup e file patch abbandonate.</td>
  </tr>
  </tr>
</table>
</table>
Riga 84: Riga 85:
  <tr>
  <tr>
   <td width="50%">config</td>
   <td width="50%">config</td>
   <td width="50%">Aggiorna la configurazione corrente del kernel usando il programma a linea di comando.</td>
   <td width="50%">Aggiorna la configurazione corrente del kernel usando il programma a riga di comando.</td>
  </tr>
  </tr>
  <tr>
  <tr>
Riga 112: Riga 113:
  <tr>
  <tr>
   <td width="50%">defconfig</td>
   <td width="50%">defconfig</td>
   <td width="50%">Genera una nuova configurazione del kernel che usa le risposte di default per tutte le ozioni. I valori di default sono presi da un file situato in ''arch/$ARCH/defconfig, dove $ARCH si riferisce alla specifica architettura per il quale il kernel viene compilato.</td>
   <td width="50%">Genera una nuova configurazione del kernel che usa le risposte predefinite per tutte le ozioni. I valori predefiniti sono presi da un file situato in ''arch/$ARCH/defconfig, dove $ARCH si riferisce alla specifica architettura per il quale il kernel viene compilato.</td>
  </tr>
  </tr>
  <tr>
  <tr>
Riga 155: Riga 156:
Questa variabile non sarebbe stata impostata a ''y'' altrimenti.
Questa variabile non sarebbe stata impostata a ''y'' altrimenti.


Se la variabile KCONFIG_ALLCONFIG non è impostata, il sistema di compilazione controlla i file nella directory di compilazione a più alto livello nominata:
Se la variabile KCONFIG_ALLCONFIG non è impostata, il sistema di compilazione controlla i file nella directory di compilazione a più alto livello con nome:


* ''allmod.config''
* ''allmod.config''
Riga 165: Riga 166:
* ''allyes.config''
* ''allyes.config''


Se qualsiasi di questi file è presente, la compilazione lo usa come lista di valori di configurazione che devono essere forzati ai valori specificati. Se nessuno di questi file viene trovato, il sistema di compilazione alla fine cerca un file chiamato ''all.config'' per una lista di valori di configurazione forzati.
Se qualsiasi di questi file è presente, la compilazione li usa come lista di valori di configurazione che devono essere forzati ai valori specificati. Se nessuno di questi file viene trovato, il sistema di compilazione alla fine cerca un file chiamato ''all.config'' per una lista di valori di configurazione forzati.


Si possono usare questi file differenti per impostare una buona configurazione di base che funzionerà sempre. In seguito le altre opzioni di configurazione possono essere usate per generare differenti configurazioni di testing per le situazioni che lo necessitano.
Si possono usare questi file differenti per impostare una buona configurazione di base che funzionerà sempre. In seguito le altre opzioni di configurazione possono essere usate per generare differenti configurazioni di test per le situazioni che lo necessitano.




Riga 188: Riga 189:
  <tr>
  <tr>
   <td width="50%">vmlinux</td>
   <td width="50%">vmlinux</td>
   <td width="50%">Compila solo la parte statica del kernel, nesusn modulo caricabile.</td>
   <td width="50%">Compila solo la parte statica del kernel, nessun modulo caricabile.</td>
  </tr>
  </tr>
  <tr>
  <tr>
Riga 196: Riga 197:
  <tr>
  <tr>
   <td width="50%">module_install</td>
   <td width="50%">module_install</td>
   <td width="50%">Installa tutti i moduli nella specifica locazione. Se nessuna locazione è specificata con la variabile d'ambiente INSTALL_MODULE_PATH, vengono installati nella directory root di default della macchina.</td>
   <td width="50%">Installa tutti i moduli nella specifica locazione. Se nessuna posizione è specificata con la variabile d'ambiente INSTALL_MODULE_PATH, vengono installati nella directory root predefinita della macchina.</td>
  </tr>
  </tr>
  <tr>
  <tr>
Riga 208: Riga 209:
  <tr>
  <tr>
   <td width="50%">dir/file.ko</td>
   <td width="50%">dir/file.ko</td>
   <td width="50%">Compila tutti i file necessari e li unisce insieme per formare il modulo specificato.</td>
   <td width="50%">Compila tutti i file necessari e li unisce per formare il modulo specificato.</td>
  </tr>
  </tr>
  <tr>
  <tr>
   <td width="50%">tags</td>
   <td width="50%">tags</td>
   <td width="50%">Compila tutti i tags necessari che la maggior parte degli editor di testo possono usare mentre modificano il codice sorgente.</td>
   <td width="50%">Compila tutti i tag necessari che la maggior parte degli editor di testo possono usare mentre modificano il codice sorgente.</td>
  </tr>
  </tr>
  <tr>
  <tr>
   <td width="50%">TAGS</td>
   <td width="50%">TAGS</td>
   <td width="50%">Compila tutti i tags necessari che la maggior parte degli editor di testo possono usare mentre modificano il codice sorgente.</td>
   <td width="50%">Compila tutti i tag necessari che la maggior parte degli editor di testo possono usare mentre modificano il codice sorgente.</td>
  </tr>
  </tr>
  <tr>
  <tr>
   <td width="50%">cscope</td>
   <td width="50%">cscope</td>
   <td width="50%">Compila una immagine ''cscope'', utile nel sorgente treesearches, dell'albero sorgente per l'architettura specificata dal file di configurazione (non tutti i file sorgenti del kernel).</td>
   <td width="50%">Compila un'immagine ''cscope'', utile nel sorgente treesearches, dell'albero sorgente per l'architettura specificata dal file di configurazione (non tutti i file sorgenti del kernel).</td>
  </tr>
  </tr>
</table>
</table>
Riga 237: Riga 238:
   <td width="10%">V</td>
   <td width="10%">V</td>
   <td width="10%">0</td>
   <td width="10%">0</td>
   <td width="80%">Questa dice al sistema di compilazione di girare in maniera silenziosa, mostrando solo il file correntemente in compilazione, e non il comando intero che sta girando ai fini di compilare il file. Questa è l'opzione di default per il sistema di compilazione.</td>
   <td width="80%">Questa dice al sistema di compilazione di funzionare in maniera silenziosa, mostrando solo il file in compilazione, e non il comando intero che sta girando ai fini di compilare il file. Questa è l'opzione predefinita per il sistema di compilazione.</td>
  </tr>
  </tr>
  <tr>
  <tr>
   <td width="10%">V</td>
   <td width="10%">V</td>
   <td width="10%">1</td>
   <td width="10%">1</td>
   <td width="80%">Questo dice al sistema di compilazione di operare in modalità verbose, mostrando il comando completo che si sta usando per generare ognuno dei file specifici.</td>
   <td width="80%">Questo dice al sistema di compilazione di operare in modalità prolissa, mostrando il comando completo che si sta usando per generare ognuno dei file specifici.</td>
  </tr>
  </tr>
  <tr>
  <tr>
   <td width="10%">O</td>
   <td width="10%">O</td>
   <td width="10%">dir</td>
   <td width="10%">dir</td>
   <td width="80%">Questo dice al sistema di compilazione di mettere tutti i file di output nella directory ''dir'', inclusi i file di configurazione del kernel. Questo permette al kernel di venir compilato da un filesystem in sola lettura e avere l'output posto in un altra locazione.</td>
   <td width="80%">Questo dice al sistema di compilazione di mettere tutti i file di output nella directory ''dir'', inclusi i file di configurazione del kernel. Questo permette di compilare il kernel da un filesystem in sola lettura e avere l'output posto in un'altra posizione.</td>
  </tr>
  </tr>
  <tr>
  <tr>
   <td width="10%">C</td>
   <td width="10%">C</td>
   <td width="10%">1</td>
   <td width="10%">1</td>
   <td width="80%">Questo ''checksall'' i file C che verranno compilati con il tool ''sparse'', che scova gli errori comuni di configurazione nei file sorgenti del kernel. ''sparse'' può essere scaricato usando ''git'' da ''git://git.kernel.org/pub/scm/devel/sparse/sparse.git''. Snapshots nottetempo possono essere trovati a ''http://www.codemonkey.org.uk/projects/git-snapshots/sparse/''. Maggiori informazioni su come usare ''sparse'' possono venir trovate nel file Documentation/sparse.txt nell'albero dei sorgenti del kernel.</td>
   <td width="80%">Questo ''checksall'' i file C che verranno compilati con lo strumento ''sparse'', che scova gli errori comuni di configurazione nei file sorgenti del kernel. ''sparse'' può essere scaricato usando ''git'' da ''git://git.kernel.org/pub/scm/devel/sparse/sparse.git''. Snapshot giornalieri possono essere trovati a ''http://www.codemonkey.org.uk/projects/git-snapshots/sparse/''. Maggiori informazioni su come usare ''sparse'' possono essere reperite nel file Documentation/sparse.txt nell'albero dei sorgenti del kernel.</td>
  </tr>
  </tr>
  <tr>
  <tr>
   <td width="10%">C</td>
   <td width="10%">C</td>
   <td width="10%">2</td>
   <td width="10%">2</td>
   <td width="80%">Questa ''forcesall'' i file C da controllare con il tool ''sparse'', anche se essi non devono essere compilati.</td>
   <td width="80%">Questa ''forcesall'' i file C da controllare con lo strumento ''sparse'', anche se essi non devono essere compilati.</td>
  </tr>
  </tr>
</table>
</table>




== Packaging Target ==
== Target di pacchettizzazione ==




Questi target impacchettano un kernel compilato in un pacchetto autonomo che può essere installato su una larga varietà di macchine differenti, come mostrato nella tabella 10-6.
Questi target impacchettano un kernel compilato in un pacchetto autonomo che può essere installato su un'ampia varietà di macchine differenti, come mostrato nella tabella 10-6.


''Tabella 10-6. Packaging target''
''Tabella 10-6. Packaging target''
Riga 276: Riga 277:
  <tr>
  <tr>
   <td width="30%">rpm</td>
   <td width="30%">rpm</td>
   <td width="70%">Compila il kernel e poi lo impacchetta in un pacchetto RPM che può venir installato.</td>
   <td width="70%">Compila il kernel e poi lo impacchetta in un pacchetto RPM che può essere installato.</td>
  </tr>
  </tr>
  <tr>
  <tr>
   <td width="30%">rpm-pkg</td>
   <td width="30%">rpm-pkg</td>
   <td width="70%">Costruisce un pacchetto RPM sorgente che contiene un kernel di base.</td>
   <td width="70%">Crea un pacchetto RPM sorgente che contiene un kernel di base.</td>
  </tr>
  </tr>
  <tr>
  <tr>
   <td width="30%">binrpmpkg</td>
   <td width="30%">binrpmpkg</td>
   <td width="70%">Costruisce un pacchetto RPM che contiene un kernel compilato e i moduli.</td>
   <td width="70%">Crea un pacchetto RPM che contiene un kernel compilato e i moduli.</td>
  </tr>
  </tr>
  <tr>
  <tr>
   <td width="30%">deb-pkg</td>
   <td width="30%">deb-pkg</td>
   <td width="70%">Costruisce un pacchetto Debian che contiene un kernel compilato e i moduli.</td>
   <td width="70%">Crea un pacchetto Debian che contiene un kernel compilato e i moduli.</td>
  </tr>
  </tr>
  <tr>
  <tr>
   <td width="30%">tar-pkg</td>
   <td width="30%">tar-pkg</td>
   <td width="70%">Costruisce un tarball che contiene un kernel compilato e i moduli.</td>
   <td width="70%">Crea un tarball che contiene un kernel compilato e i moduli.</td>
  </tr>
  </tr>
  <tr>
  <tr>
   <td width="30%">targz-pkg</td>
   <td width="30%">targz-pkg</td>
   <td width="70%">Costruisce un tarball compresso con ''gzip'' che contiene il kernel compilato e i moduli.</td>
   <td width="70%">Crea un tarball compresso con ''gzip'' che contiene il kernel compilato e i moduli.</td>
  </tr>
  </tr>
  <tr>
  <tr>
   <td width="30%">tarbz2-pkg</td>
   <td width="30%">tarbz2-pkg</td>
   <td width="70%">Costruisce un tarball compresso con ''bzip2'' che contiene il kernel compilato e i moduli.</td>
   <td width="70%">Crea un tarball compresso con ''bzip2'' che contiene il kernel compilato e i moduli.</td>
  </tr>
  </tr>
</table>
</table>




== Target di Documentazione ==
== Target di documentazione ==




La tabella 10-7 mostra traget che costruiscono la documentazione interna del kernel in una molteciplità di formati differenti.
La tabella 10-7 mostra target che costruiscono la documentazione interna del kernel in molteplici formati.


''Tabella 10-7'' target di documentazione''
''Tabella 10-7'' target di documentazione''
Riga 319: Riga 320:
  <tr>
  <tr>
   <td width="30%">xmldocs</td>
   <td width="30%">xmldocs</td>
   <td width="70%">Costruisce la documentazione del kernel come XML DocBook file.</td>
   <td width="70%">Crea la documentazione del kernel come file XML DocBook.</td>
  </tr>
  </tr>
  <tr>
  <tr>
   <td width="30%">psdocs</td>
   <td width="30%">psdocs</td>
   <td width="70%">Costruisce la documentazione del kernel come Postscript file.</td>
   <td width="70%">Crea la documentazione del kernel come file Postscript.</td>
  </tr>
  </tr>
  <tr>
  <tr>
   <td width="30%">pdfdocs</td>
   <td width="30%">pdfdocs</td>
   <td width="70%">Costruisce la documentazione del kernel come PDF file.</td>
   <td width="70%">Crea la documentazione del kernel come file PDF.</td>
  </tr>
  </tr>
  <tr>
  <tr>
   <td width="30%">htmldocs</td>
   <td width="30%">htmldocs</td>
   <td width="70%">Costruisce la documentazione del kernel come HTML file.</td>
   <td width="70%">Crea la documentazione del kernel come file HTML.</td>
  </tr>
  </tr>
  <tr>
  <tr>
   <td width="30%">mandocs</td>
   <td width="30%">mandocs</td>
   <td width="70%">Costruisce la documentazione del kernel come un set di manpages, che possono venir installate con ''install-mandocs'' target.</td>
   <td width="70%">Crea la documentazione del kernel come un insieme di pagine man, che possono essere installate con il target ''install-mandocs''.</td>
  </tr>
  </tr>
</table>
</table>




== Target su Architetture specifiche ==
== Target per architetture specifiche ==




Ogni architettura kernel ha un set di target specifici unici a se stessi. La tabella 10-8 mostra i target disponibili per l'architettura Intel a 32-bit.
Ogni architettura kernel ha un insieme di target specifici unici a se stessi. La tabella 10-8 mostra i target disponibili per l'architettura Intel a 32-bit.


''Tabella 10-8. Target specifici per architettura 32-bit Intel''
''Tabella 10-8. Target specifici per architettura 32-bit Intel''
Riga 354: Riga 355:
  <tr>
  <tr>
   <td width="30%">bzImage</td>
   <td width="30%">bzImage</td>
   <td width="70%">Crea una immagine compressa del kernel e la pone nel file ''arch/i386/boot/bzImage''. Questo è il target di default per i kernel i386.</td>
   <td width="70%">Crea un'immagine compressa del kernel e la pone nel file ''arch/i386/boot/bzImage''. Questo è il target predefinito per i kernel i386.</td>
  </tr>
  </tr>
  <tr>
  <tr>
Riga 362: Riga 363:
  <tr>
  <tr>
   <td width="30%">bzdisk</td>
   <td width="30%">bzdisk</td>
   <td width="70%">Crea una immagine di boot per floppy e la scrive sul device ''/dev/fd0''.</td>
   <td width="70%">Crea un'immagine di boot per floppy e la scrive sul dispositivo ''/dev/fd0''.</td>
  </tr>
  </tr>
  <tr>
  <tr>
   <td width="30%">fdimage</td>
   <td width="30%">fdimage</td>
   <td width="70%">Crea una immagine di boot per floppy e la mette nel file ''arch/i386/boot/fdimage''. Il pacchetto ''mtools'' deve essere presente sul vostro sistema affinché questo funzioni propriamente.</td>
   <td width="70%">Crea un'immagine di boot per floppy e la mette nel file ''arch/i386/boot/fdimage''. Il pacchetto ''mtools'' deve essere presente sul vostro sistema affinché questo funzioni correttamente.</td>
  </tr>
  </tr>
  <tr>
  <tr>
   <td width="30%">isoimage</td>
   <td width="30%">isoimage</td>
   <td width="70%">Crea una immagine di boot CD-ROM e la pone nel file ''arch/i386/boot/image.iso''. Il pacchetto ''syslinux'' deve essere presente nel vostro sistema affiché questo funzioni propriamente.</td>
   <td width="70%">Crea un'immagine di boot CD-ROM e la pone nel file ''arch/i386/boot/image.iso''. Il pacchetto ''syslinux'' deve essere presente nel vostro sistema affiché questo funzioni correttamente.</td>
  </tr>
  </tr>
</table>
</table>
Riga 378: Riga 379:




La tabella 10-9 mostra i target che sono d'aiuto per trovare problemi nel codice del kernel. E' una buona idea creare una lista degli spazi di stack quando si crea del nuovo codice per determinare che i vostri cambiamenti non stiano prendendo troppo spazio di stack del kernel. Il target namespacecheck è utile per determinare se i vostri cambiamenti possono in sicurezza aggiungere i propri simboli al namespace globale del kernel.
La tabella 10-9 mostra i target che sono d'aiuto per trovare problemi nel codice del kernel. &Egrave; una buona idea creare una lista degli spazi di stack quando si crea del nuovo codice per determinare che i vostri cambiamenti non stiano prendendo troppo spazio di stack del kernel. Il target namespacecheck è utile per determinare se i vostri cambiamenti possono, in sicurezza, aggiungere i propri simboli al namespace globale del kernel.


''Tabella 10-9. Targets di analisi''
''Tabella 10-9. Targets di analisi''
Riga 393: Riga 394:
  <tr>
  <tr>
  <td width="30%">namespace check</td>
  <td width="30%">namespace check</td>
  <td width="70%">Genera una lista di tutti i simboli del kernel e dei loro namespaces. Questa sarà una lunga lista.</td>
  <td width="70%">Genera una lista di tutti i simboli del kernel e dei loro namespace. Questa sarà una lunga lista.</td>
  </tr>
  </tr>
</table>
</table>
----
This is an indipendent translation of the book [http://www.kroah.com/lkn/ Linux Kernel in a Nutshell] by [http://www.kroah.com/log/ Greg Kroah-Hartman]. This translation (like the original work) is available under the terms of [http://creativecommons.org/licenses/by-sa/2.5/ Creative Commons Attribution-ShareAlike 2.5].
----
[http://www.kernel.org/pub/linux/kernel/people/gregkh/lkn/lkn_pdf/ch10.pdf ''Capitolo originale'']
[[Categoria:Documentazione tecnica]]
[[Categoria:Linux Kernel in a Nutshell]]
6 999

contributi