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