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