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