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