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