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