1 .. include:: ../disclaimer-ita.rst
3 :Original: :ref:`Documentation/process/changes.rst <changes>`
4 :Translator: Federico Vaga <federico.vaga@vaga.pv.it>
8 Requisiti minimi per compilare il kernel
9 ++++++++++++++++++++++++++++++++++++++++
14 Questo documento fornisce una lista dei software necessari per eseguire questa
17 Questo documento è basato sul file "Changes" del kernel 2.0.x e quindi le
18 persone che lo scrissero meritano credito (Jared Mauch, Axel Boldt,
19 Alessandro Sigala, e tanti altri nella rete).
21 Requisiti minimi correnti
22 *************************
24 Prima di pensare d'avere trovato un baco, aggiornate i seguenti programmi
25 **almeno** alla versione indicata! Se non siete certi della versione che state
26 usando, il comando indicato dovrebbe dirvelo.
28 Questa lista presume che abbiate già un kernel Linux funzionante. In aggiunta,
29 non tutti gli strumenti sono necessari ovunque; ovviamente, se non avete una
30 PC Card, per esempio, probabilmente non dovreste preoccuparvi di pcmciautils.
32 ====================== ================= ========================================
33 Programma Versione minima Comando per verificare la versione
34 ====================== ================= ========================================
35 GNU C 5.1 gcc --version
36 Clang/LLVM (optional) 11.0.0 clang --version
37 GNU make 3.81 make --version
39 flex 2.5.35 flex --version
40 bison 2.0 bison --version
41 pahole 1.16 pahole --version
42 util-linux 2.10o fdformat --version
44 e2fsprogs 1.41.4 e2fsck -V
45 jfsutils 1.1.3 fsck.jfs -V
46 reiserfsprogs 3.6.3 reiserfsck -V
47 xfsprogs 2.6.0 xfs_db -V
48 squashfs-tools 4.0 mksquashfs -version
49 btrfs-progs 0.18 btrfsck
50 pcmciautils 004 pccardctl -V
51 quota-tools 3.09 quota -V
52 PPP 2.4.0 pppd --version
53 nfs-utils 1.0.5 showmount --version
54 procps 3.2.0 ps --version
55 udev 081 udevd --version
56 grub 0.93 grub --version || grub-install --version
57 mcelog 0.6 mcelog --version
58 iptables 1.4.2 iptables -V
59 openssl & libcrypto 1.0.0 openssl version
60 bc 1.06.95 bc --version
61 Sphinx\ [#f1]_ 1.7 sphinx-build --version
62 cpio any cpio --version
63 ====================== ================= ========================================
65 .. [#f1] Sphinx è necessario solo per produrre la documentazione del Kernel
67 Compilazione del kernel
68 ***********************
73 La versione necessaria di gcc potrebbe variare a seconda del tipo di CPU nel
76 Clang/LLVM (opzionale)
77 ----------------------
79 L'ultima versione di clang e *LLVM utils* (secondo `releases.llvm.org
80 <https://releases.llvm.org>`_) sono supportati per la generazione del
81 kernel. Non garantiamo che anche i rilasci più vecchi funzionino, inoltre
82 potremmo rimuovere gli espedienti che abbiamo implementato per farli
83 funzionare. Per maggiori informazioni
84 :ref:`Building Linux with Clang/LLVM <kbuild_llvm>`.
89 Per compilare il kernel vi servirà GNU make 3.81 o successivo.
94 Per generare il kernel è necessario avere Binutils 2.23 o superiore.
99 Il sistema di compilazione, dalla versione 4.18, richiede pkg-config per
100 verificare l'esistenza degli strumenti kconfig e per determinare le
101 impostazioni da usare in 'make {g,x}config'. Precedentemente pkg-config
102 veniva usato ma non verificato o documentato.
107 Dalla versione 4.16, il sistema di compilazione, durante l'esecuzione, genera
108 un analizzatore lessicale. Questo richiede flex 2.5.35 o successivo.
113 Dalla versione 4.16, il sistema di compilazione, durante l'esecuzione, genera
114 un parsificatore. Questo richiede bison 2.0 o successivo.
119 Dalla versione 5.2, quando viene impostato CONFIG_DEBUG_INFO_BTF, il sistema di
120 compilazione genera BTF (BPF Type Format) a partire da DWARF per vmlinux. Più
121 tardi anche per i moduli. Questo richiede pahole v1.16 o successivo.
123 A seconda della distribuzione, lo si può trovare nei pacchetti 'dwarves' o
124 'pahole'. Oppure lo si può trovare qui: https://fedorapeople.org/~acme/dwarves/.
129 Per compilare il kernel vi servirà perl 5 e i seguenti moduli ``Getopt::Long``,
130 ``Getopt::Std``, ``File::Basename``, e ``File::Find``.
135 Vi servirà bc per compilare i kernel dal 3.10 in poi.
140 Il programma OpenSSL e la libreria crypto vengono usati per la firma dei moduli
141 e la gestione dei certificati; sono usati per la creazione della chiave e
142 la generazione della firma.
144 Se la firma dei moduli è abilitata, allora vi servirà openssl per compilare il
145 kernel 3.7 e successivi. Vi serviranno anche i pacchetti di sviluppo di
146 openssl per compilare il kernel 4.3 o successivi.
152 Modifiche architetturali
153 ------------------------
155 DevFS è stato reso obsoleto da udev
156 (http://www.kernel.org/pub/linux/utils/kernel/hotplug/)
158 Il supporto per UID a 32-bit è ora disponibile. Divertitevi!
160 La documentazione delle funzioni in Linux è una fase di transizione
161 verso una documentazione integrata nei sorgenti stessi usando dei commenti
162 formattati in modo speciale e posizionati vicino alle funzioni che descrivono.
163 Al fine di arricchire la documentazione, questi commenti possono essere
164 combinati con i file ReST presenti in Documentation/; questi potranno
165 poi essere convertiti in formato PostScript, HTML, LaTex, ePUB o PDF.
166 Per convertire i documenti da ReST al formato che volete, avete bisogno di
172 Le versioni più recenti di util-linux: forniscono il supporto a ``fdisk`` per
173 dischi di grandi dimensioni; supportano le nuove opzioni di mount; riconoscono
174 più tipi di partizioni; hanno un fdformat che funziona con i kernel 2.4;
175 e altre chicche. Probabilmente vorrete aggiornarlo.
180 Se l'impensabile succede e il kernel va in oops, potrebbe servirvi lo strumento
181 ksymoops per decodificarlo, ma nella maggior parte dei casi non vi servirà.
182 Generalmente è preferibile compilare il kernel con l'opzione ``CONFIG_KALLSYMS``
183 cosicché venga prodotto un output più leggibile che può essere usato così com'è
184 (produce anche un output migliore di ksymoops). Se per qualche motivo il
185 vostro kernel non è stato compilato con ``CONFIG_KALLSYMS`` e non avete modo di
186 ricompilarlo e riprodurre l'oops con quell'opzione abilitata, allora potete
187 usare ksymoops per decodificare l'oops.
192 I cambiamenti della struttura in ``/lib/modules`` necessita l'aggiornamento di
198 L'ultima versione di ``e2fsprogs`` corregge diversi bachi in fsck e debugfs.
199 Ovviamente, aggiornarlo è una buona idea.
204 Il pacchetto ``jfsutils`` contiene programmi per il file-system JFS.
205 Sono disponibili i seguenti strumenti:
207 - ``fsck.jfs`` - avvia la ripetizione del log delle transizioni, e verifica e
208 ripara una partizione formattata secondo JFS
210 - ``mkfs.jfs`` - crea una partizione formattata secondo JFS
212 - sono disponibili altri strumenti per il file-system.
217 Il pacchetto reiserfsprogs dovrebbe essere usato con reiserfs-3.6.x (Linux
218 kernel 2.4.x). Questo è un pacchetto combinato che contiene versioni
219 funzionanti di ``mkreiserfs``, ``resize_reiserfs``, ``debugreiserfs`` e
220 ``reiserfsck``. Questi programmi funzionano sulle piattaforme i386 e alpha.
225 L'ultima versione di ``xfsprogs`` contiene, fra i tanti, i programmi
226 ``mkfs.xfs``, ``xfs_db`` e ``xfs_repair`` per il file-system XFS.
227 Dipendono dell'architettura e qualsiasi versione dalla 2.0.0 in poi
228 dovrebbe funzionare correttamente con la versione corrente del codice
229 XFS nel kernel (sono raccomandate le versioni 2.6.0 o successive per via
230 di importanti miglioramenti).
235 PCMCIAutils sostituisce ``pcmica-cs``. Serve ad impostare correttamente i
236 connettori PCMCIA all'avvio del sistema e a caricare i moduli necessari per
237 i dispositivi a 16-bit se il kernel è stato modularizzato e il sottosistema
243 Il supporto per uid e gid a 32 bit richiedono l'uso della versione 2 del
244 formato quota. La versione 3.07 e successive di quota-tools supportano
245 questo formato. Usate la versione raccomandata nella lista qui sopra o una
248 Micro codice per Intel IA32
249 ---------------------------
251 Per poter aggiornare il micro codice per Intel IA32, è stato aggiunto un
252 apposito driver; il driver è accessibile come un normale dispositivo a
253 caratteri (misc). Se non state usando udev probabilmente sarà necessario
254 eseguire i seguenti comandi come root prima di poterlo aggiornare::
257 mknod /dev/cpu/microcode c 10 184
258 chmod 0644 /dev/cpu/microcode
260 Probabilmente, vorrete anche il programma microcode_ctl da usare con questo
266 ``udev`` è un programma in spazio utente il cui scopo è quello di popolare
267 dinamicamente la cartella ``/dev`` coi dispositivi effettivamente presenti.
268 ``udev`` sostituisce le funzionalità base di devfs, consentendo comunque
269 nomi persistenti per i dispositivi.
274 Serve libfuse 2.4.0 o successiva. Il requisito minimo assoluto è 2.3.0 ma
275 le opzioni di mount ``direct_io`` e ``kernel_cache`` non funzioneranno.
284 Se per quanto riguarda la configurazione di rete avete esigenze di un certo
285 livello dovreste prendere in considerazione l'uso degli strumenti in ip-route2.
287 Filtro dei pacchetti / NAT
288 --------------------------
290 Il codice per filtraggio dei pacchetti e il NAT fanno uso degli stessi
291 strumenti come nelle versioni del kernel antecedenti la 2.4.x (iptables).
292 Include ancora moduli di compatibilità per 2.2.x ipchains e 2.0.x ipdwadm.
297 Il driver per PPP è stato ristrutturato per supportare collegamenti multipli e
298 per funzionare su diversi livelli. Se usate PPP, aggiornate pppd almeno alla
301 Se non usate udev, dovete avere un file /dev/ppp che può essere creato da root
302 col seguente comando::
304 mknod /dev/ppp c 108 0
310 Nei kernel più antichi (2.4 e precedenti), il server NFS doveva essere
311 informato sui clienti ai quali si voleva fornire accesso via NFS. Questa
312 informazione veniva passata al kernel quando un cliente montava un file-system
313 mediante ``mountd``, oppure usando ``exportfs`` all'avvio del sistema.
314 exportfs prende le informazioni circa i clienti attivi da ``/var/lib/nfs/rmtab``.
316 Questo approccio è piuttosto delicato perché dipende dalla correttezza di
317 rmtab, che non è facile da garantire, in particolare quando si cerca di
318 implementare un *failover*. Anche quando il sistema funziona bene, ``rmtab``
319 ha il problema di accumulare vecchie voci inutilizzate.
321 Sui kernel più recenti il kernel ha la possibilità di informare mountd quando
322 arriva una richiesta da una macchina sconosciuta, e mountd può dare al kernel
323 le informazioni corrette per l'esportazione. Questo rimuove la dipendenza con
324 ``rmtab`` e significa che il kernel deve essere al corrente solo dei clienti
327 Per attivare questa funzionalità, dovete eseguire il seguente comando prima di
328 usare exportfs o mountd::
330 mount -t nfsd nfsd /proc/fs/nfsd
332 Dove possibile, raccomandiamo di proteggere tutti i servizi NFS dall'accesso
333 via internet mediante un firewall.
338 Quando ``CONFIG_x86_MCE`` è attivo, il programma mcelog processa e registra
339 gli eventi *machine check*. Gli eventi *machine check* sono errori riportati
340 dalla CPU. Incoraggiamo l'analisi di questi errori.
343 Documentazione del kernel
344 *************************
349 Per i dettaglio sui requisiti di Sphinx, fate riferimento a :ref:`it_sphinx_install`
350 in :ref:`Documentation/translations/it_IT/doc-guide/sphinx.rst <it_sphinxdoc>`
352 Ottenere software aggiornato
353 ============================
355 Compilazione del kernel
356 ***********************
361 - <ftp://ftp.gnu.org/gnu/gcc/>
366 - :ref:`Getting LLVM <getting_llvm>`.
371 - <ftp://ftp.gnu.org/gnu/make/>
376 - <https://www.kernel.org/pub/linux/devel/binutils/>
381 - <https://github.com/westes/flex/releases>
386 - <ftp://ftp.gnu.org/gnu/bison/>
391 - <https://www.openssl.org/>
399 - <https://www.kernel.org/pub/linux/utils/util-linux/>
404 - <https://www.kernel.org/pub/linux/utils/kernel/kmod/>
405 - <https://git.kernel.org/pub/scm/utils/kernel/kmod/kmod.git>
410 - <https://www.kernel.org/pub/linux/utils/kernel/ksymoops/v2.4/>
415 - <https://code.launchpad.net/initrd-tools/main>
420 - <https://www.kernel.org/pub/linux/kernel/people/tytso/e2fsprogs/>
421 - <https://git.kernel.org/pub/scm/fs/ext2/e2fsprogs.git/>
426 - <http://jfs.sourceforge.net/>
431 - <https://git.kernel.org/pub/scm/linux/kernel/git/jeffm/reiserfsprogs.git/>
436 - <https://git.kernel.org/pub/scm/fs/xfs/xfsprogs-dev.git>
437 - <https://www.kernel.org/pub/linux/utils/fs/xfs/xfsprogs/>
442 - <https://www.kernel.org/pub/linux/utils/kernel/pcmcia/>
447 - <http://sourceforge.net/projects/linuxquota/>
453 - <https://downloadcenter.intel.com/>
458 - <http://www.freedesktop.org/software/systemd/man/udev.html>
463 - <https://github.com/libfuse/libfuse/releases>
468 - <http://www.mcelog.org/>
473 - <https://www.gnu.org/software/cpio/>
481 - <https://download.samba.org/pub/ppp/>
482 - <https://git.ozlabs.org/?p=ppp.git>
483 - <https://github.com/paulusmack/ppp/>
489 - <http://sourceforge.net/project/showfiles.php?group_id=14>
494 - <https://netfilter.org/projects/iptables/index.html>
499 - <https://www.kernel.org/pub/linux/utils/net/iproute2/>
504 - <http://oprofile.sf.net/download/>
509 - <http://nfs.sourceforge.net/>
511 Documentazione del kernel
512 *************************
517 - <http://www.sphinx-doc.org/>