1.. include:: ../disclaimer-ita.rst
2
3:Original: :ref:`Documentation/process/changes.rst <changes>`
4:Translator: Federico Vaga <federico.vaga@vaga.pv.it>
5
6.. _it_changes:
7
8Requisiti minimi per compilare il kernel
9++++++++++++++++++++++++++++++++++++++++
10
11Introduzione
12============
13
14Questo documento fornisce una lista dei software necessari per eseguire questa
15versione del kernel.
16
17Questo documento è basato sul file "Changes" del kernel 2.0.x e quindi le
18persone che lo scrissero meritano credito (Jared Mauch, Axel Boldt,
19Alessandro Sigala, e tanti altri nella rete).
20
21Requisiti minimi correnti
22*************************
23
24Prima di pensare d'avere trovato un baco, aggiornate i seguenti programmi
25**almeno** alla versione indicata!  Se non siete certi della versione che state
26usando, il comando indicato dovrebbe dirvelo.
27
28Questa lista presume che abbiate già un kernel Linux funzionante.  In aggiunta,
29non tutti gli strumenti sono necessari ovunque; ovviamente, se non avete una
30PC Card, per esempio, probabilmente non dovreste preoccuparvi di pcmciautils.
31
32====================== =================  ========================================
33        Programma       Versione minima       Comando per verificare la versione
34====================== =================  ========================================
35GNU C                  5.1                gcc --version
36Clang/LLVM (optional)  11.0.0             clang --version
37Rust (opzionale)       1.74.1             rustc --version
38bindgen (opzionale)    0.65.1             bindgen --version
39GNU make               3.81               make --version
40bash                   4.2                bash --version
41binutils               2.25               ld -v
42flex                   2.5.35             flex --version
43bison                  2.0                bison --version
44pahole                 1.16               pahole --version
45util-linux             2.10o              mount --version
46kmod                   13                 depmod -V
47e2fsprogs              1.41.4             e2fsck -V
48jfsutils               1.1.3              fsck.jfs -V
49reiserfsprogs          3.6.3              reiserfsck -V
50xfsprogs               2.6.0              xfs_db -V
51squashfs-tools         4.0                mksquashfs -version
52btrfs-progs            0.18               btrfsck
53pcmciautils            004                pccardctl -V
54quota-tools            3.09               quota -V
55PPP                    2.4.0              pppd --version
56nfs-utils              1.0.5              showmount --version
57procps                 3.2.0              ps --version
58udev                   081                udevd --version
59grub                   0.93               grub --version || grub-install --version
60mcelog                 0.6                mcelog --version
61iptables               1.4.2              iptables -V
62openssl & libcrypto    1.0.0              openssl version
63bc                     1.06.95            bc --version
64Sphinx\ [#f1]_         2.4.4              sphinx-build --version
65cpio                   any                cpio --version
66GNU tar                1.28               tar --version
67gtags (opzionale)      6.6.5              gtags --version
68====================== =================  ========================================
69
70.. [#f1] Sphinx è necessario solo per produrre la documentazione del Kernel
71
72Compilazione del kernel
73***********************
74
75GCC
76---
77
78La versione necessaria di gcc potrebbe variare a seconda del tipo di CPU nel
79vostro calcolatore.
80
81Clang/LLVM (opzionale)
82----------------------
83
84L'ultima versione di clang e *LLVM utils* (secondo `releases.llvm.org
85<https://releases.llvm.org>`_) sono supportati per la generazione del
86kernel. Non garantiamo che anche i rilasci più vecchi funzionino, inoltre
87potremmo rimuovere gli espedienti che abbiamo implementato per farli
88funzionare. Per maggiori informazioni
89:ref:`Building Linux with Clang/LLVM <kbuild_llvm>`.
90
91Make
92----
93
94Per compilare il kernel vi servirà GNU make 3.81 o successivo.
95
96Bash
97----
98Per generare il kernel vengono usati alcuni script per bash.
99Questo richiede bash 4.2 o successivo.
100
101Binutils
102--------
103
104Per generare il kernel è necessario avere Binutils 2.25 o superiore.
105
106pkg-config
107----------
108
109Il sistema di compilazione, dalla versione 4.18, richiede pkg-config per
110verificare l'esistenza degli strumenti kconfig e per determinare le
111impostazioni da usare in 'make {g,x}config'.  Precedentemente pkg-config
112veniva usato ma non verificato o documentato.
113
114Flex
115----
116
117Dalla versione 4.16, il sistema di compilazione, durante l'esecuzione, genera
118un analizzatore lessicale.  Questo richiede flex 2.5.35 o successivo.
119
120Bison
121-----
122
123Dalla versione 4.16, il sistema di compilazione, durante l'esecuzione, genera
124un parsificatore.  Questo richiede bison 2.0 o successivo.
125
126pahole
127------
128
129Dalla versione 5.2, quando viene impostato CONFIG_DEBUG_INFO_BTF, il sistema di
130compilazione genera BTF (BPF Type Format) a partire da DWARF per vmlinux. Più
131tardi anche per i moduli. Questo richiede pahole v1.16 o successivo.
132
133A seconda della distribuzione, lo si può trovare nei pacchetti 'dwarves' o
134'pahole'. Oppure lo si può trovare qui: https://fedorapeople.org/~acme/dwarves/.
135
136Perl
137----
138
139Per compilare il kernel vi servirà perl 5 e i seguenti moduli ``Getopt::Long``,
140``Getopt::Std``, ``File::Basename``, e ``File::Find``.
141
142BC
143--
144
145Vi servirà bc per compilare i kernel dal 3.10 in poi.
146
147OpenSSL
148-------
149
150Il programma OpenSSL e la libreria crypto vengono usati per la firma dei moduli
151e la gestione dei certificati; sono usati per la creazione della chiave e
152la generazione della firma.
153
154Se la firma dei moduli è abilitata, allora vi servirà openssl per compilare il
155kernel 3.7 e successivi.  Vi serviranno anche i pacchetti di sviluppo di
156openssl per compilare il kernel 4.3 o successivi.
157
158Tar
159---
160
161GNU Tar è necessario per accedere ai file d'intestazione del kernel usando sysfs
162(CONFIG_IKHEADERS)
163
164gtags / GNU GLOBAL (opzionale)
165------------------------------
166
167Il programma GNU GLOBAL versione 6.6.5, o successiva, è necessario quando si
168vuole eseguire ``make gtags`` e generare i relativi indici. Internamente si fa
169uso del parametro gtags ``-C (--directory)`` che compare in questa versione.
170
171Strumenti di sistema
172********************
173
174Modifiche architetturali
175------------------------
176
177DevFS è stato reso obsoleto da udev
178(http://www.kernel.org/pub/linux/utils/kernel/hotplug/)
179
180Il supporto per UID a 32-bit è ora disponibile.  Divertitevi!
181
182La documentazione delle funzioni in Linux è una fase di transizione
183verso una documentazione integrata nei sorgenti stessi usando dei commenti
184formattati in modo speciale e posizionati vicino alle funzioni che descrivono.
185Al fine di arricchire la documentazione, questi commenti possono essere
186combinati con i file ReST presenti in Documentation/; questi potranno
187poi essere convertiti in formato PostScript, HTML, LaTex, ePUB o PDF.
188Per convertire i documenti da ReST al formato che volete, avete bisogno di
189Sphinx.
190
191Util-linux
192----------
193
194Le versioni più recenti di util-linux: forniscono il supporto a ``fdisk`` per
195dischi di grandi dimensioni; supportano le nuove opzioni di mount; riconoscono
196più tipi di partizioni; hanno un fdformat che funziona con i kernel 2.4;
197e altre chicche.  Probabilmente vorrete aggiornarlo.
198
199Ksymoops
200--------
201
202Se l'impensabile succede e il kernel va in oops, potrebbe servirvi lo strumento
203ksymoops per decodificarlo, ma nella maggior parte dei casi non vi servirà.
204Generalmente è preferibile compilare il kernel con l'opzione ``CONFIG_KALLSYMS``
205cosicché venga prodotto un output più leggibile che può essere usato così com'è
206(produce anche un output migliore di ksymoops).  Se per qualche motivo il
207vostro kernel non è stato compilato con ``CONFIG_KALLSYMS`` e non avete modo di
208ricompilarlo e riprodurre l'oops con quell'opzione abilitata, allora potete
209usare ksymoops per decodificare l'oops.
210
211Mkinitrd
212--------
213
214I cambiamenti della struttura in ``/lib/modules`` necessita l'aggiornamento di
215mkinitrd.
216
217E2fsprogs
218---------
219
220L'ultima versione di ``e2fsprogs`` corregge diversi bachi in fsck e debugfs.
221Ovviamente, aggiornarlo è una buona idea.
222
223JFSutils
224--------
225
226Il pacchetto ``jfsutils`` contiene programmi per il file-system JFS.
227Sono disponibili i seguenti strumenti:
228
229- ``fsck.jfs`` - avvia la ripetizione del log delle transizioni, e verifica e
230  ripara una partizione formattata secondo JFS
231
232- ``mkfs.jfs`` - crea una partizione formattata secondo JFS
233
234- sono disponibili altri strumenti per il file-system.
235
236Reiserfsprogs
237-------------
238
239Il pacchetto reiserfsprogs dovrebbe essere usato con reiserfs-3.6.x (Linux
240kernel 2.4.x).  Questo è un pacchetto combinato che contiene versioni
241funzionanti di ``mkreiserfs``, ``resize_reiserfs``, ``debugreiserfs`` e
242``reiserfsck``.  Questi programmi funzionano sulle piattaforme i386 e alpha.
243
244Xfsprogs
245--------
246
247L'ultima versione di ``xfsprogs`` contiene, fra i tanti, i programmi
248``mkfs.xfs``, ``xfs_db`` e ``xfs_repair`` per il file-system XFS.
249Dipendono dell'architettura e qualsiasi versione dalla 2.0.0 in poi
250dovrebbe funzionare correttamente con la versione corrente del codice
251XFS nel kernel (sono raccomandate le versioni 2.6.0 o successive per via
252di importanti miglioramenti).
253
254PCMCIAutils
255-----------
256
257PCMCIAutils sostituisce ``pcmica-cs``.  Serve ad impostare correttamente i
258connettori PCMCIA all'avvio del sistema e a caricare i moduli necessari per
259i dispositivi a 16-bit se il kernel è stato modularizzato e il sottosistema
260hotplug è in uso.
261
262Quota-tools
263-----------
264
265Il supporto per uid e gid a 32 bit richiedono l'uso della versione 2 del
266formato quota.  La versione 3.07 e successive di quota-tools supportano
267questo formato.  Usate la versione raccomandata nella lista qui sopra o una
268successiva.
269
270Micro codice per Intel IA32
271---------------------------
272
273Per poter aggiornare il micro codice per Intel IA32, è stato aggiunto un
274apposito driver; il driver è accessibile come un normale dispositivo a
275caratteri (misc).  Se non state usando udev probabilmente sarà necessario
276eseguire i seguenti comandi come root prima di poterlo aggiornare::
277
278  mkdir /dev/cpu
279  mknod /dev/cpu/microcode c 10 184
280  chmod 0644 /dev/cpu/microcode
281
282Probabilmente, vorrete anche il programma microcode_ctl da usare con questo
283dispositivo.
284
285udev
286----
287
288``udev`` è un programma in spazio utente il cui scopo è quello di popolare
289dinamicamente la cartella ``/dev`` coi dispositivi effettivamente presenti.
290``udev`` sostituisce le funzionalità base di devfs, consentendo comunque
291nomi persistenti per i dispositivi.
292
293FUSE
294----
295
296Serve libfuse 2.4.0 o successiva.  Il requisito minimo assoluto è 2.3.0 ma
297le opzioni di mount ``direct_io`` e ``kernel_cache`` non funzioneranno.
298
299
300Rete
301****
302
303Cambiamenti generali
304--------------------
305
306Se per quanto riguarda la configurazione di rete avete esigenze di un certo
307livello dovreste prendere in considerazione l'uso degli strumenti in ip-route2.
308
309Filtro dei pacchetti / NAT
310--------------------------
311
312Il codice per filtraggio dei pacchetti e il NAT fanno uso degli stessi
313strumenti come nelle versioni del kernel antecedenti la 2.4.x (iptables).
314Include ancora moduli di compatibilità per 2.2.x ipchains e 2.0.x ipdwadm.
315
316PPP
317---
318
319Il driver per PPP è stato ristrutturato per supportare collegamenti multipli e
320per funzionare su diversi livelli.  Se usate PPP, aggiornate pppd almeno alla
321versione 2.4.0.
322
323Se non usate udev, dovete avere un file /dev/ppp che può essere creato da root
324col seguente comando::
325
326  mknod /dev/ppp c 108 0
327
328
329NFS-utils
330---------
331
332Nei kernel più antichi (2.4 e precedenti), il server NFS doveva essere
333informato sui clienti ai quali si voleva fornire accesso via NFS.  Questa
334informazione veniva passata al kernel quando un cliente montava un file-system
335mediante ``mountd``, oppure usando ``exportfs`` all'avvio del sistema.
336exportfs prende le informazioni circa i clienti attivi da ``/var/lib/nfs/rmtab``.
337
338Questo approccio è piuttosto delicato perché dipende dalla correttezza di
339rmtab, che non è facile da garantire, in particolare quando si cerca di
340implementare un *failover*.  Anche quando il sistema funziona bene, ``rmtab``
341ha il problema di accumulare vecchie voci inutilizzate.
342
343Sui kernel più recenti il kernel ha la possibilità di informare mountd quando
344arriva una richiesta da una macchina sconosciuta, e mountd può dare al kernel
345le informazioni corrette per l'esportazione.  Questo rimuove la dipendenza con
346``rmtab`` e significa che il kernel deve essere al corrente solo dei clienti
347attivi.
348
349Per attivare questa funzionalità, dovete eseguire il seguente comando prima di
350usare exportfs o mountd::
351
352  mount -t nfsd nfsd /proc/fs/nfsd
353
354Dove possibile, raccomandiamo di proteggere tutti i servizi NFS dall'accesso
355via internet mediante un firewall.
356
357mcelog
358------
359
360Quando ``CONFIG_x86_MCE`` è attivo, il programma mcelog processa e registra
361gli eventi *machine check*.  Gli eventi *machine check* sono errori riportati
362dalla CPU.  Incoraggiamo l'analisi di questi errori.
363
364
365Documentazione del kernel
366*************************
367
368Sphinx
369------
370
371Per i dettaglio sui requisiti di Sphinx, fate riferimento a :ref:`it_sphinx_install`
372in :ref:`Documentation/translations/it_IT/doc-guide/sphinx.rst <it_sphinxdoc>`
373
374Ottenere software aggiornato
375============================
376
377Compilazione del kernel
378***********************
379
380gcc
381---
382
383- <ftp://ftp.gnu.org/gnu/gcc/>
384
385Clang/LLVM
386----------
387
388- :ref:`Getting LLVM <getting_llvm>`.
389
390Make
391----
392
393- <ftp://ftp.gnu.org/gnu/make/>
394
395Bash
396----
397
398- <ftp://ftp.gnu.org/gnu/bash/>
399
400Binutils
401--------
402
403- <https://www.kernel.org/pub/linux/devel/binutils/>
404
405Flex
406----
407
408- <https://github.com/westes/flex/releases>
409
410Bison
411-----
412
413- <ftp://ftp.gnu.org/gnu/bison/>
414
415OpenSSL
416-------
417
418- <https://www.openssl.org/>
419
420Strumenti di sistema
421********************
422
423Util-linux
424----------
425
426- <https://www.kernel.org/pub/linux/utils/util-linux/>
427
428Kmod
429----
430
431- <https://www.kernel.org/pub/linux/utils/kernel/kmod/>
432- <https://git.kernel.org/pub/scm/utils/kernel/kmod/kmod.git>
433
434Ksymoops
435--------
436
437- <https://www.kernel.org/pub/linux/utils/kernel/ksymoops/v2.4/>
438
439Mkinitrd
440--------
441
442- <https://code.launchpad.net/initrd-tools/main>
443
444E2fsprogs
445---------
446
447- <https://www.kernel.org/pub/linux/kernel/people/tytso/e2fsprogs/>
448- <https://git.kernel.org/pub/scm/fs/ext2/e2fsprogs.git/>
449
450JFSutils
451--------
452
453- <https://jfs.sourceforge.net/>
454
455Reiserfsprogs
456-------------
457
458- <https://git.kernel.org/pub/scm/linux/kernel/git/jeffm/reiserfsprogs.git/>
459
460Xfsprogs
461--------
462
463- <https://git.kernel.org/pub/scm/fs/xfs/xfsprogs-dev.git>
464- <https://www.kernel.org/pub/linux/utils/fs/xfs/xfsprogs/>
465
466Pcmciautils
467-----------
468
469- <https://www.kernel.org/pub/linux/utils/kernel/pcmcia/>
470
471Quota-tools
472-----------
473
474- <https://sourceforge.net/projects/linuxquota/>
475
476
477Microcodice Intel P6
478--------------------
479
480- <https://downloadcenter.intel.com/>
481
482udev
483----
484
485- <http://www.freedesktop.org/software/systemd/man/udev.html>
486
487FUSE
488----
489
490- <https://github.com/libfuse/libfuse/releases>
491
492mcelog
493------
494
495- <https://www.mcelog.org/>
496
497cpio
498----
499
500- <https://www.gnu.org/software/cpio/>
501
502Rete
503****
504
505PPP
506---
507
508- <https://download.samba.org/pub/ppp/>
509- <https://git.ozlabs.org/?p=ppp.git>
510- <https://github.com/paulusmack/ppp/>
511
512
513NFS-utils
514---------
515
516- <https://sourceforge.net/project/showfiles.php?group_id=14>
517- <https://nfs.sourceforge.net/>
518
519Iptables
520--------
521
522- <https://netfilter.org/projects/iptables/index.html>
523
524Ip-route2
525---------
526
527- <https://www.kernel.org/pub/linux/utils/net/iproute2/>
528
529OProfile
530--------
531
532- <https://oprofile.sf.net/download/>
533
534Documentazione del kernel
535*************************
536
537Sphinx
538------
539
540- <http://www.sphinx-doc.org/>
541