← Documents Documentation/translations/it_IT/process/changes.rst GitHub 원문 ↗

Linux 6.18.37 · Translations

Kernel build를 위한 최소 software 요구 사항

Kernel build·실행에 필요한 compiler, build tool, filesystem·network utility의 최소 version과 다운로드 위치를 정리합니다.

Source pathDocumentation/translations/it_IT/process/changes.rst
Source versionLinux v6.18.37
TranslationDUJINLABS 전문 번역 + 해설

요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.

1. 요약·해설

원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.

요약·해설

changes.rst:1-553

Linux kernel을 build하고 실행하기 전에 확인할 compiler·build tool·system utility의 최소 version과 확인 command를 표로 제공합니다.

Filesystem, device, network, documentation 도구가 필요한 이유와 update 위치를 함께 설명합니다. 이탈리아어판의 오래된 version 값은 원문대로 보존하고 같은 v6.18.37 영어 정식 문서와 차이가 있음을 명확히 표시합니다.

2. 영어 원문 전체

번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.

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

3. 한국어 전문 번역

영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.

현재 kernel을 위한 최소 software version

1-72

이 문서는 current kernel version을 실행하고 compile하는 데 필요한 software의 최소 수준을 정리한다. 원래 2.0.x kernel용 Changes file을 기반으로 하며 Jared Mauch, Axel Boldt, Alessandro Sigala와 수많은 internet user의 기여를 이어받았다.

Kernel bug라고 판단하기 전에 적어도 아래 revision까지 upgrade해야 한다. Current version을 모르면 표의 command로 확인한다. 이 목록은 이미 Linux kernel이 정상적으로 실행되는 system을 전제로 한다. 모든 system에 모든 tool이 필요한 것은 아니며 PC Card hardware가 없다면 pcmciautils를 신경 쓸 필요가 없는 식이다.

이탈리아어 changes 문서의 최소 버전
Program최소 versionVersion 확인 command
GNU C8.1gcc --version
Clang/LLVM (optional)13.0.0clang --version
Rust (optional)1.78.0rustc --version
bindgen (optional)0.65.1bindgen --version
GNU make4.0make --version
bash4.2bash --version
binutils2.30ld -v
flex2.5.35flex --version
bison2.0bison --version
pahole1.16pahole --version
util-linux2.10omount --version
kmod13depmod -V
e2fsprogs1.41.4e2fsck -V
jfsutils1.1.3fsck.jfs -V
xfsprogs2.6.0xfs_db -V
squashfs-tools4.0mksquashfs -version
btrfs-progs0.18btrfsck
pcmciautils004pccardctl -V
quota-tools3.09quota -V
PPP2.4.0pppd --version
nfs-utils1.0.5showmount --version
procps3.2.0ps --version
udev081udevd --version
grub0.93grub --version || grub-install --version
mcelog0.6mcelog --version
iptables1.4.2iptables -V
openssl & libcrypto1.0.0openssl version
bc1.06.95bc --version
Sphinx2.4.4sphinx-build --version
cpioanycpio --version
GNU tar1.28tar --version
gtags (optional)6.6.5gtags --version
mkimage (optional)2017.01mkimage --version
Python (optional)3.5.xpython3 --version

Linux v6.18.37의 이탈리아어 원문 표에 적힌 program, 최소 version과 확인 command를 그대로 옮겼습니다.

Sphinx는 kernel documentation을 생성할 때만 필요합니다. 이 표는 이탈리아어 문서 자체의 상태를 번역한 것이며 같은 source tree의 영어 정식 문서에는 일부 더 새로운 minimum version과 항목이 있습니다.

.. include:: ../disclaimer-ita.rst

:Original: :ref:`Documentation/process/changes.rst <changes>`
:Translator: Federico Vaga <federico.vaga@vaga.pv.it>

.. _it_changes:

Requisiti minimi per compilare il kernel
++++++++++++++++++++++++++++++++++++++++

Introduzione
============

Questo documento fornisce una lista dei software necessari per eseguire questa
versione del kernel.

Questo documento è basato sul file "Changes" del kernel 2.0.x e quindi le
persone che lo scrissero meritano credito (Jared Mauch, Axel Boldt,
Alessandro Sigala, e tanti altri nella rete).

Requisiti minimi correnti
*************************

Prima di pensare d'avere trovato un baco, aggiornate i seguenti programmi
**almeno** alla versione indicata!  Se non siete certi della versione che state
usando, il comando indicato dovrebbe dirvelo.

Questa lista presume che abbiate già un kernel Linux funzionante.  In aggiunta,
non tutti gli strumenti sono necessari ovunque; ovviamente, se non avete una
PC Card, per esempio, probabilmente non dovreste preoccuparvi di pcmciautils.

====================== =================  ========================================
        Programma       Versione minima       Comando per verificare la versione
====================== =================  ========================================
GNU C                  8.1                gcc --version
Clang/LLVM (optional)  13.0.0             clang --version
Rust (opzionale)       1.78.0             rustc --version
bindgen (opzionale)    0.65.1             bindgen --version
GNU make               4.0                make --version
bash                   4.2                bash --version
binutils               2.30               ld -v
flex                   2.5.35             flex --version
bison                  2.0                bison --version
pahole                 1.16               pahole --version
util-linux             2.10o              mount --version
kmod                   13                 depmod -V
e2fsprogs              1.41.4             e2fsck -V
jfsutils               1.1.3              fsck.jfs -V
xfsprogs               2.6.0              xfs_db -V
squashfs-tools         4.0                mksquashfs -version
btrfs-progs            0.18               btrfsck
pcmciautils            004                pccardctl -V
quota-tools            3.09               quota -V
PPP                    2.4.0              pppd --version
nfs-utils              1.0.5              showmount --version
procps                 3.2.0              ps --version
udev                   081                udevd --version
grub                   0.93               grub --version || grub-install --version
mcelog                 0.6                mcelog --version
iptables               1.4.2              iptables -V
openssl & libcrypto    1.0.0              openssl version
bc                     1.06.95            bc --version
Sphinx\ [#f1]_         2.4.4              sphinx-build --version
cpio                   any                cpio --version
GNU tar                1.28               tar --version
gtags (opzionale)      6.6.5              gtags --version
mkimage (opzionale)    2017.01            mkimage --version
Python (opzionale)     3.5.x              python3 --version
====================== =================  ========================================

.. [#f1] Sphinx è necessario solo per produrre la documentazione del Kernel

GCC, Clang/LLVM과 Rust toolchain

73-106

필요한 GCC version은 system CPU type에 따라 달라질 수 있다.

Kernel build는 releases.llvm.org 기준 최신 formal release의 Clang과 LLVM utility를 지원한다. 더 오래된 release는 동작을 보장하지 않으며 kernel에서 old version용 workaround를 제거할 수 있다. 자세한 내용은 Building Linux with Clang/LLVM 문서를 본다.

Rust support에는 recent Rust compiler가 필요하다. Documentation/rust/quick-start.rst에 build requirement 충족 방법이 있으며 Makefile의 rustavailable target은 Rust toolchain이 detect되지 않는 이유를 확인하는 데 유용하다.

make rustavailable

bindgen은 kernel C side에 대한 Rust binding을 생성하며 libclang에 의존한다.

Compilazione del kernel
***********************

GCC
---

La versione necessaria di gcc potrebbe variare a seconda del tipo di CPU nel
vostro calcolatore.

Clang/LLVM (opzionale)
----------------------

L'ultima versione di clang e *LLVM utils* (secondo `releases.llvm.org
<https://releases.llvm.org>`_) sono supportati per la generazione del
kernel. Non garantiamo che anche i rilasci più vecchi funzionino, inoltre
potremmo rimuovere gli espedienti che abbiamo implementato per farli
funzionare. Per maggiori informazioni
:ref:`Building Linux with Clang/LLVM <kbuild_llvm>`.

Rust (opzionale)
----------------

È necessaria una versione recente del compilatore Rust.

Verificate le istruzioni Documentation/rust/quick-start.rst su come soddisfare i
requisiti per compilare code Rust. In particolare, la regola ``rustavailable``
nel ``Makefile`` è utile per verificare perché gli strumenti di compilazione non
vengono trovati.

bindgen (opzionale)
-------------------

``bindgen`` viene usato per generare il collegamento (binding) da Rust al lato C del kernel. Dipende da ``libclang``.

Build system의 기본 tool

107-161
  • GNU make 4.0 이상이 kernel build에 필요하다.
  • Kernel build의 일부 Bash script를 위해 Bash 4.2 이상이 필요하다.
  • Binutils 2.30 이상이 필요하다.
  • Linux 4.18부터 build system은 installed kconfig tool을 확인하고 make {g,x}config flag를 결정하기 위해 pkg-config를 요구한다. 이전에도 사용했지만 검증하거나 문서화하지 않았다.
  • Linux 4.16부터 build 중 lexical analyzer를 생성하므로 flex 2.5.35 이상이 필요하다.
  • Linux 4.16부터 parser를 생성하므로 bison 2.0 이상이 필요하다.

Linux 5.2부터 CONFIG_DEBUG_INFO_BTF를 선택하면 build system이 vmlinux의 DWARF에서 BTF(BPF Type Format)를 생성하고 이후 kernel module에도 생성한다. Pahole 1.16 이상이 필요하며 distribution의 dwarves 또는 pahole package나 upstream location에서 구할 수 있다.

Kernel build에는 Perl 5와 Getopt::Long, Getopt::Std, File::Basename, File::Find module이 필요하다.

Make
----

Per compilare il kernel vi servirà GNU make 4.0 o successivo.

Bash
----
Per generare il kernel vengono usati alcuni script per bash.
Questo richiede bash 4.2 o successivo.

Binutils
--------

Per generare il kernel è necessario avere Binutils 2.30 o superiore.

pkg-config
----------

Il sistema di compilazione, dalla versione 4.18, richiede pkg-config per
verificare l'esistenza degli strumenti kconfig e per determinare le
impostazioni da usare in 'make {g,x}config'.  Precedentemente pkg-config
veniva usato ma non verificato o documentato.

Flex
----

Dalla versione 4.16, il sistema di compilazione, durante l'esecuzione, genera
un analizzatore lessicale.  Questo richiede flex 2.5.35 o successivo.

Bison
-----

Dalla versione 4.16, il sistema di compilazione, durante l'esecuzione, genera
un parsificatore.  Questo richiede bison 2.0 o successivo.

pahole
------

Dalla versione 5.2, quando viene impostato CONFIG_DEBUG_INFO_BTF, il sistema di
compilazione genera BTF (BPF Type Format) a partire da DWARF per vmlinux. Più
tardi anche per i moduli. Questo richiede pahole v1.16 o successivo.

A seconda della distribuzione, lo si può trovare nei pacchetti 'dwarves' o
'pahole'. Oppure lo si può trovare qui: https://fedorapeople.org/~acme/dwarves/.

Perl
----

Per compilare il kernel vi servirà perl 5 e i seguenti moduli ``Getopt::Long``,
``Getopt::Std``, ``File::Basename``, e ``File::Find``.

BC
--

Vi servirà bc per compilare i kernel dal 3.10 in poi.

bc, OpenSSL, tar, gtags와 mkimage

162-196

Kernel 3.10 이상을 build하려면 bc가 필요하다.

Module signing과 external certificate 처리는 OpenSSL program과 crypto library를 사용해 key와 signature를 만든다. Module signing을 enable한 kernel 3.7 이상에는 openssl이 필요하고 kernel 4.3 이상 build에는 openssl development package도 필요하다.

CONFIG_IKHEADERS로 sysfs를 통해 kernel header에 접근하게 하려면 GNU tar가 필요하다.

make gtags로 tag file을 만들려면 GNU GLOBAL 6.6.5 이상이 필요하다. Gtags의 -C 또는 --directory flag를 사용하기 때문이다.

Mkimage는 ARM platform에서 흔히 쓰는 Flat Image Tree(FIT)를 build할 때 사용한다. u-boot-tools package로 설치하거나 U-Boot source에서 build할 수 있다.


OpenSSL
-------

Il programma OpenSSL e la libreria crypto vengono usati per la firma dei moduli
e la gestione dei certificati; sono usati per la creazione della chiave e
la generazione della firma.

Se la firma dei moduli è abilitata, allora vi servirà openssl per compilare il
kernel 3.7 e successivi.  Vi serviranno anche i pacchetti di sviluppo di
openssl per compilare il kernel 4.3 o successivi.

Tar
---

GNU Tar è necessario per accedere ai file d'intestazione del kernel usando sysfs
(CONFIG_IKHEADERS)

gtags / GNU GLOBAL (opzionale)
------------------------------

Il programma GNU GLOBAL versione 6.6.5, o successiva, è necessario quando si
vuole eseguire ``make gtags`` e generare i relativi indici. Internamente si fa
uso del parametro gtags ``-C (--directory)`` che compare in questa versione.

mkimage
-------

Questo strumento viene usato per produrre un *Flat Image Tree* (FIT),
tipicamente usato su sistemi ARM. Questo strumento è disponibile tramite il
pacchetto ``u-boot-tools`` oppure può essere compilato dal codice sorgente di
U-Boot. Consultate le istruzioni
https://docs.u-boot.org/en/latest/build/tools.html#building-tools-for-linux

System utility와 architecture 변화

197-242

DevFS는 obsolete되어 udev로 대체되었고 32-bit UID support가 들어왔다.

Linux function documentation은 source definition 근처의 특별한 형식 comment를 이용한 inline documentation으로 전환 중이다. 이 comment를 Documentation/의 ReST file과 결합해 enriched documentation을 만들고 PostScript, HTML, LaTeX, ePUB, PDF로 변환할 수 있다. ReST를 원하는 format으로 변환하려면 Sphinx가 필요하다.

새 util-linux는 더 큰 disk를 위한 fdisk support, 새 mount option, 더 많은 partition type 인식 등을 제공하므로 upgrade하는 편이 좋다.

Kernel oops가 발생하면 ksymoops로 decode해야 할 수 있지만 대부분의 경우는 필요 없다. CONFIG_KALLSYMS를 켜면 그대로 사용할 수 있는 readable dump를 만들고 ksymoops보다 나은 출력을 제공하므로 이 방법을 선호한다. CONFIG_KALLSYMS 없이 build했고 해당 option으로 rebuild·reproduce할 수 없다면 ksymoops로 기존 Oops를 decode할 수 있다.

/lib/modules file tree layout 변경에 맞춰 mkinitrd도 upgrade해야 한다.

Strumenti di sistema
********************

Modifiche architetturali
------------------------

DevFS è stato reso obsoleto da udev
(http://www.kernel.org/pub/linux/utils/kernel/hotplug/)

Il supporto per UID a 32-bit è ora disponibile.  Divertitevi!

La documentazione delle funzioni in Linux è una fase di transizione
verso una documentazione integrata nei sorgenti stessi usando dei commenti
formattati in modo speciale e posizionati vicino alle funzioni che descrivono.
Al fine di arricchire la documentazione, questi commenti possono essere
combinati con i file ReST presenti in Documentation/; questi potranno
poi essere convertiti in formato PostScript, HTML, LaTex, ePUB o PDF.
Per convertire i documenti da ReST al formato che volete, avete bisogno di
Sphinx.

Util-linux
----------

Le versioni più recenti di util-linux: forniscono il supporto a ``fdisk`` per
dischi di grandi dimensioni; supportano le nuove opzioni di mount; riconoscono
più tipi di partizioni; hanno un fdformat che funziona con i kernel 2.4;
e altre chicche.  Probabilmente vorrete aggiornarlo.

Ksymoops
--------

Se l'impensabile succede e il kernel va in oops, potrebbe servirvi lo strumento
ksymoops per decodificarlo, ma nella maggior parte dei casi non vi servirà.
Generalmente è preferibile compilare il kernel con l'opzione ``CONFIG_KALLSYMS``
cosicché venga prodotto un output più leggibile che può essere usato così com'è
(produce anche un output migliore di ksymoops).  Se per qualche motivo il
vostro kernel non è stato compilato con ``CONFIG_KALLSYMS`` e non avete modo di
ricompilarlo e riprodurre l'oops con quell'opzione abilitata, allora potete
usare ksymoops per decodificare l'oops.

Mkinitrd
--------

I cambiamenti della struttura in ``/lib/modules`` necessita l'aggiornamento di
mkinitrd.

Filesystem utility 요구 사항

243-287

최신 e2fsprogs는 fsck와 debugfs의 여러 bug를 고치므로 upgrade하는 것이 좋다.

jfsutils에는 filesystem utility가 들어 있다. fsck.jfs는 transaction log replay를 시작하고 JFS partition을 검사·수리한다. mkfs.jfs는 JFS partition을 생성하며 package에는 다른 filesystem utility도 있다.

xfsprogs에는 XFS용 mkfs.xfs, xfs_db, xfs_repair 등이 있다. Architecture-independent하며 2.0.0 이후 version은 이 XFS kernel code와 정상 동작해야 하지만 중요한 개선 때문에 2.6.0 이상을 권장한다.

PCMCIAutils는 pcmcia-cs를 대체한다. System startup 때 PCMCIA socket을 올바르게 설정하고 kernel이 modularized되어 hotplug subsystem을 사용하면 16-bit PCMCIA device에 맞는 module을 load한다.

새 version 2 quota format을 사용하려면 32-bit uid·gid support가 필요하다. Quota-tools 3.07 이상이 이를 지원하며 위 표의 권장 version 이상을 사용한다.

E2fsprogs
---------

L'ultima versione di ``e2fsprogs`` corregge diversi bachi in fsck e debugfs.
Ovviamente, aggiornarlo è una buona idea.

JFSutils
--------

Il pacchetto ``jfsutils`` contiene programmi per il file-system JFS.
Sono disponibili i seguenti strumenti:

- ``fsck.jfs`` - avvia la ripetizione del log delle transizioni, e verifica e
  ripara una partizione formattata secondo JFS

- ``mkfs.jfs`` - crea una partizione formattata secondo JFS

- sono disponibili altri strumenti per il file-system.

Xfsprogs
--------

L'ultima versione di ``xfsprogs`` contiene, fra i tanti, i programmi
``mkfs.xfs``, ``xfs_db`` e ``xfs_repair`` per il file-system XFS.
Dipendono dell'architettura e qualsiasi versione dalla 2.0.0 in poi
dovrebbe funzionare correttamente con la versione corrente del codice
XFS nel kernel (sono raccomandate le versioni 2.6.0 o successive per via
di importanti miglioramenti).

PCMCIAutils
-----------

PCMCIAutils sostituisce ``pcmica-cs``.  Serve ad impostare correttamente i
connettori PCMCIA all'avvio del sistema e a caricare i moduli necessari per
i dispositivi a 16-bit se il kernel è stato modularizzato e il sottosistema
hotplug è in uso.

Quota-tools
-----------

Il supporto per uid e gid a 32 bit richiedono l'uso della versione 2 del
formato quota.  La versione 3.07 e successive di quota-tools supportano
questo formato.  Usate la versione raccomandata nella lista qui sopra o una
successiva.

Microcode device, udev와 FUSE

288-317

Intel IA32 microcode를 normal misc character device를 통해 update하는 driver가 추가되었다. Udev를 사용하지 않으면 root로 다음 device node를 만들어야 할 수 있으며 user-space microcode_ctl utility도 필요하다.

mkdir /dev/cpu
mknod /dev/cpu/microcode c 10 184
chmod 0644 /dev/cpu/microcode

udev는 실제로 존재하는 device entry만 /dev에 동적으로 만드는 user-space application이다. Devfs의 기본 기능을 대체하면서 persistent device naming도 허용한다.

FUSE에는 libfuse 2.4.0 이상이 필요하다. 절대 minimum은 2.3.0이지만 direct_io와 kernel_cache mount option이 동작하지 않는다.

Micro codice per Intel IA32
---------------------------

Per poter aggiornare il micro codice per Intel IA32, è stato aggiunto un
apposito driver; il driver è accessibile come un normale dispositivo a
caratteri (misc).  Se non state usando udev probabilmente sarà necessario
eseguire i seguenti comandi come root prima di poterlo aggiornare::

  mkdir /dev/cpu
  mknod /dev/cpu/microcode c 10 184
  chmod 0644 /dev/cpu/microcode

Probabilmente, vorrete anche il programma microcode_ctl da usare con questo
dispositivo.

udev
----

``udev`` è un programma in spazio utente il cui scopo è quello di popolare
dinamicamente la cartella ``/dev`` coi dispositivi effettivamente presenti.
``udev`` sostituisce le funzionalità base di devfs, consentendo comunque
nomi persistenti per i dispositivi.

FUSE
----

Serve libfuse 2.4.0 o successiva.  Il requisito minimo assoluto è 2.3.0 ma
le opzioni di mount ``direct_io`` e ``kernel_cache`` non funzioneranno.

Networking user-space tool

318-382

고급 network configuration이 필요하면 ip-route2 network tool을 사용하는 것이 좋다.

Packet filtering과 NAT code는 이전 2.4.x kernel series와 같은 iptables tool을 사용한다. 2.2.x style ipchains와 2.0.x style ipfwadm용 backward-compatibility module도 여전히 포함한다.

PPP driver는 multilink와 다양한 media layer에서 동작하도록 재구성되었다. PPP를 사용하면 pppd 2.4.0 이상으로 upgrade한다. Udev를 사용하지 않으면 root로 /dev/ppp device file을 만든다.

mknod /dev/ppp c 108 0

오래된 2.4 이전 kernel의 NFS server는 NFS file에 접근할 client를 미리 알아야 했다. Client mount 시 mountd가, system startup 때 exportfs가 이 정보를 kernel에 전달했고 exportfs는 /var/lib/nfs/rmtab에서 active client 정보를 읽었다.

Rmtab 정확성에 의존하는 이 방식은 fragile하며 fail-over에서 특히 어렵다. 정상 system에서도 제거되지 않은 old entry가 많이 쌓인다. Modern kernel은 unknown host request를 kernel이 mountd에 알리고 mountd가 적절한 export 정보를 되돌려 줄 수 있다. Rmtab dependency가 사라지고 kernel은 current active client만 알면 된다.

새 기능을 enable하려면 exportfs 또는 mountd를 실행하기 전에 nfsd filesystem을 mount한다. 가능하면 firewall로 모든 NFS service를 public internet에서 보호하는 것이 좋다.

mount -t nfsd nfsd /proc/fs/nfsd

x86 kernel에서 CONFIG_X86_MCE를 enable하면 CPU가 보고한 error인 machine check event를 처리하고 기록하는 mcelog utility가 필요하다. 이 event 처리를 강하게 권장한다.

Rete
****

Cambiamenti generali
--------------------

Se per quanto riguarda la configurazione di rete avete esigenze di un certo
livello dovreste prendere in considerazione l'uso degli strumenti in ip-route2.

Filtro dei pacchetti / NAT
--------------------------

Il codice per filtraggio dei pacchetti e il NAT fanno uso degli stessi
strumenti come nelle versioni del kernel antecedenti la 2.4.x (iptables).
Include ancora moduli di compatibilità per 2.2.x ipchains e 2.0.x ipdwadm.

PPP
---

Il driver per PPP è stato ristrutturato per supportare collegamenti multipli e
per funzionare su diversi livelli.  Se usate PPP, aggiornate pppd almeno alla
versione 2.4.0.

Se non usate udev, dovete avere un file /dev/ppp che può essere creato da root
col seguente comando::

  mknod /dev/ppp c 108 0


NFS-utils
---------

Nei kernel più antichi (2.4 e precedenti), il server NFS doveva essere
informato sui clienti ai quali si voleva fornire accesso via NFS.  Questa
informazione veniva passata al kernel quando un cliente montava un file-system
mediante ``mountd``, oppure usando ``exportfs`` all'avvio del sistema.
exportfs prende le informazioni circa i clienti attivi da ``/var/lib/nfs/rmtab``.

Questo approccio è piuttosto delicato perché dipende dalla correttezza di
rmtab, che non è facile da garantire, in particolare quando si cerca di
implementare un *failover*.  Anche quando il sistema funziona bene, ``rmtab``
ha il problema di accumulare vecchie voci inutilizzate.

Sui kernel più recenti il kernel ha la possibilità di informare mountd quando
arriva una richiesta da una macchina sconosciuta, e mountd può dare al kernel
le informazioni corrette per l'esportazione.  Questo rimuove la dipendenza con
``rmtab`` e significa che il kernel deve essere al corrente solo dei clienti
attivi.

Per attivare questa funzionalità, dovete eseguire il seguente comando prima di
usare exportfs o mountd::

  mount -t nfsd nfsd /proc/fs/nfsd

Dove possibile, raccomandiamo di proteggere tutti i servizi NFS dall'accesso
via internet mediante un firewall.

mcelog
------

Quando ``CONFIG_x86_MCE`` è attivo, il programma mcelog processa e registra
gli eventi *machine check*.  Gli eventi *machine check* sono errori riportati
dalla CPU.  Incoraggiamo l'analisi di questi errori.

Kernel documentation tool

383-391

Sphinx 요구 사항의 자세한 내용은 Documentation/doc-guide/sphinx.rst의 sphinx_install 절을 참고한다.

Documentazione del kernel
*************************

Sphinx
------

Per i dettaglio sui requisiti di Sphinx, fate riferimento a :ref:`it_sphinx_install`
in :ref:`Documentation/translations/it_IT/doc-guide/sphinx.rst <it_sphinxdoc>`

Compiler와 build tool update 위치

392-437

Clang/LLVM은 `Getting LLVM` 문서의 안내를 따릅니다.

Ottenere software aggiornato
============================

Compilazione del kernel
***********************

gcc
---

- <ftp://ftp.gnu.org/gnu/gcc/>

Clang/LLVM
----------

- :ref:`Getting LLVM <getting_llvm>`.

Make
----

- <ftp://ftp.gnu.org/gnu/make/>

Bash
----

- <ftp://ftp.gnu.org/gnu/bash/>

Binutils
--------

- <https://www.kernel.org/pub/linux/devel/binutils/>

Flex
----

- <https://github.com/westes/flex/releases>

Bison
-----

- <ftp://ftp.gnu.org/gnu/bison/>

OpenSSL
-------

- <https://www.openssl.org/>

System utility update 위치

438-514
Strumenti di sistema
********************

Util-linux
----------

- <https://www.kernel.org/pub/linux/utils/util-linux/>

Kmod
----

- <https://www.kernel.org/pub/linux/utils/kernel/kmod/>
- <https://git.kernel.org/pub/scm/utils/kernel/kmod/kmod.git>

Ksymoops
--------

- <https://www.kernel.org/pub/linux/utils/kernel/ksymoops/v2.4/>

Mkinitrd
--------

- <https://code.launchpad.net/initrd-tools/main>

E2fsprogs
---------

- <https://www.kernel.org/pub/linux/kernel/people/tytso/e2fsprogs/>
- <https://git.kernel.org/pub/scm/fs/ext2/e2fsprogs.git/>

JFSutils
--------

- <https://jfs.sourceforge.net/>

Xfsprogs
--------

- <https://git.kernel.org/pub/scm/fs/xfs/xfsprogs-dev.git>
- <https://www.kernel.org/pub/linux/utils/fs/xfs/xfsprogs/>

Pcmciautils
-----------

- <https://www.kernel.org/pub/linux/utils/kernel/pcmcia/>

Quota-tools
-----------

- <https://sourceforge.net/projects/linuxquota/>


Microcodice Intel P6
--------------------

- <https://downloadcenter.intel.com/>

udev
----

- <http://www.freedesktop.org/software/systemd/man/udev.html>

FUSE
----

- <https://github.com/libfuse/libfuse/releases>

mcelog
------

- <https://www.mcelog.org/>

cpio
----

- <https://www.gnu.org/software/cpio/>

Networking과 documentation tool update 위치

515-553
Rete
****

PPP
---

- <https://download.samba.org/pub/ppp/>
- <https://git.ozlabs.org/?p=ppp.git>
- <https://github.com/paulusmack/ppp/>


NFS-utils
---------

- <https://sourceforge.net/project/showfiles.php?group_id=14>
- <https://nfs.sourceforge.net/>

Iptables
--------

- <https://netfilter.org/projects/iptables/index.html>

Ip-route2
---------

- <https://www.kernel.org/pub/linux/utils/net/iproute2/>

OProfile
--------

- <https://oprofile.sf.net/download/>

Documentazione del kernel
*************************

Sphinx
------

- <http://www.sphinx-doc.org/>