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