1.. SPDX-License-Identifier: GPL-2.0 2 3 4 5Requisitos mínimos para compilar o Kernel 6++++++++++++++++++++++++++++++++++++++++++ 7 8Introdução 9=========== 10 11Este documento foi projetado para fornecer uma lista das versões mínimas 12de software necessárias para executar a versão atual do kernel. 13 14Este documento é originalmente baseado no meu arquivo 'Changes' para os kernels 152.0.x e portanto, deve créditos às mesmas pessoas que aquele arquivo (Jared 16Mauch, Axel Boldt, Alessandro Sigala e inúmeros outros usuários em toda a rede). 17 18Requisitos Mínimos Atuais 19**************************** 20 21Atualize para pelo menos estas revisões de software antes de pensar que 22encontrou um bug! Se não tiver certeza de qual versão está executando atualmente 23, o comando sugerido deve lhe informar. Para uma lista dos programas em seu 24sistema, incluindo as versões, execute ./scripts/ver_linux. 25 26Novamente, tenha em mente que esta lista pressupõe que você já possui um kernel 27Linux em execução funcional. Além disso, nem todas as ferramentas são 28necessárias em todos os sistemas; obviamente, se você não possui nenhum hardware 29PC Card por exemplo, provavelmente não precisará se preocupar com o pcmciautils. 30 31====================== =============== ======================================== 32Programa Versão mínima Comando para verificar a versão 33====================== =============== ======================================== 34GNU C 8.1 gcc --version 35Clang/LLVM (optional) 17.0.1 clang --version 36Rust (optional) 1.85.0 rustc --version 37bindgen (optional) 0.71.1 bindgen --version 38GNU make 4.0 make --version 39bash 4.2 bash --version 40binutils 2.30 ld -v 41flex 2.5.35 flex --version 42gdb 7.2 gdb --version 43bison 2.0 bison --version 44pahole 1.22 pahole --version 45util-linux 2.10o mount --version 46kmod 13 kmod -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 btrfs --version 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 udevadm --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]_ 3.4.3 sphinx-build --version 64GNU tar 1.28 tar --version 65gtags (opcional) 6.6.5 gtags --version 66mkimage (opcional) 2017.01 mkimage --version 67Python 3.9.x python3 --version 68GNU AWK (opcional) 5.1.0 gawk --version 69====================== =============== ======================================== 70 71.. [#f1] O Sphinx é necessário apenas para gerar a documentação do Kernel. 72 73Compilação do Kernel 74********************* 75 76GCC 77--- 78 79Os requisitos da versão do gcc podem variar dependendo do tipo de CPU 80do seu computador. 81 82Clang/LLVM (opcional) 83--------------------- 84 85A versão formal mais recente do clang e dos utilitários LLVM (de acordo com 86`releases.llvm.org <https://releases.llvm.org>`_) é suportada para a compilação 87de kernels. Versões anteriores não têm funcionamento garantido, e poderemos 88remover do kernel soluções de contorno (workarounds) que eram utilizadas para 89suportar versões mais antigas. Por favor, veja a documentação adicional em 90:ref:`Building Linux with Clang/LLVM <kbuild_llvm>`. 91 92Rust (opcional) 93--------------- 94 95É necessária uma versão recente do compilador Rust. 96 97Por favor, consulte Documentation/rust/quick-start.rst para obter instruções 98sobre como atender aos requisitos de compilação do suporte a Rust. Em 99particular, o alvo (target) rustavailable do Makefile é útil para verificar por 100que a cadeia de ferramentas (toolchain) Rust pode não estar sendo detectada. 101 102bindgen (opcional) 103------------------ 104 105O ``bindgen`` é utilizado para gerar os vínculos (bindings) Rust para o lado C 106do kernel. Ele depende da ``libclang``. 107 108Make 109---- 110 111Você precisará do GNU make 4.0 ou superior para compilar o kernel. 112 113Bash 114---- 115 116Alguns scripts bash são usados para a compilação do kernel. 117É necessário o Bash 4.2 ou mais recente. 118 119Binutils 120-------- 121 122O binutils 2.30 ou mais recente é necessário para compilar o kernel. 123 124pkg-config 125---------- 126 127O sistema de compilação, a partir da versão 4.18, requer o pkg-config para 128verificar as ferramentas kconfig instaladas e para determinar as configurações 129de flags para uso em 'make {g,x}config'. Anteriormente, o pkg-config já era 130utilizado, mas não era verificado nem documentado. 131 132Flex 133---- 134 135Desde o Linux 4.16, o sistema de compilação gera analisadores léxicos durante a 136compilação. Isso requer o flex 2.5.35 ou superior. 137 138 139Bison 140----- 141 142Desde o Linux 4.16, o sistema de compilação gera analisadores sintáticos durante 143a compilação. Isso requer o bison 2.0 ou superior 144 145pahole 146------ 147 148Desde o Linux 5.2, se CONFIG_DEBUG_INFO_BTF estiver selecionado, o sistema de 149compilação gera BTF (BPF Type Format) a partir do DWARF no vmlinux, e um pouco 150depois para os módulos do kernel também. Isso requer o pahole v1.22 ou superior. 151 152Ele pode ser encontrado nos pacotes ``dwarves`` ou ``pahole`` das 153distribuições, ou em https://fedorapeople.org/~acme/dwarves/. 154 155Perl 156---- 157 158Você precisará do perl 5 e dos seguintes módulos: ``Getopt::Long``, 159``Getopt::Std``, ``File::Basename`` e ``File::Find`` para compilar o kernel. 160 161Python 162------ 163 164Várias opções de configuração o exigem: ele é necessário para as configurações 165padrão (defconfigs) de arm/arm64, CONFIG_LTO_CLANG, algumas configurações 166opcionais de DRM, a ferramenta kernel-doc e a geração da documentação (Sphinx), 167entre outros. 168 169BC 170-- 171 172Você precisará do bc para compilar kernels 3.10 ou superior. 173 174 175OpenSSL 176------- 177 178A assinatura de módulos e a manipulação de certificados externos utilizam o 179programa OpenSSL e a biblioteca de criptografia para realizar a criação de 180chaves e a geração de assinaturas. 181 182Você precisará do openssl para compilar kernels 3.7 e superiores se a assinatura 183de módulos estiver habilitada. Você também precisará dos pacotes de 184desenvolvimento do openssl para compilar kernels 4.3 e superiores. 185 186Tar 187--- 188 189O GNU tar é necessário caso você deseje habilitar o acesso aos cabeçalhos do 190kernel via sysfs (CONFIG_IKHEADERS). 191 192gtags / GNU GLOBAL (optional) 193----------------------------- 194 195A compilação do kernel requer o GNU GLOBAL versão 6.6.5 ou superior para gerar 196arquivos de tags através de make gtags. Isso se deve ao uso da flag ``-C 197(--directory)`` pelo ``gtags``. 198 199mkimage 200------- 201 202Esta ferramenta é utilizada ao gerar uma Flat Image Tree (FIT), comumente usada 203em plataformas ARM. A ferramenta está disponível através do pacote ``u-boot-tools`` 204ou pode ser compilada a partir do código-fonte do U-Boot. Veja as instruções em 205https://docs.u-boot.org/en/latest/build/tools.html#building-tools-for-linux 206 207GNU AWK 208------- 209 210O GNU AWK é necessário caso você deseje que a compilação do kernel gere dados de 211intervalo de endereços para 212módulos integrados (CONFIG_BUILTIN_MODULE_RANGES). 213 214Utilitários de sistema 215*********************** 216 217Mudanças de arquitetura 218------------------------ 219 220O DevFS tornou-se obsoleto em favor do udev 221(https://www.kernel.org/pub/linux/utils/kernel/hotplug/) 222 223O suporte a UIDs de 32 bits já está implementado. Divirta-se! 224 225A documentação das funções do Linux está migrando para a documentação embutida 226(inline), por meio de comentários com formatação especial próximos às suas 227definições no código-fonte. Esses comentários podem ser combinados com arquivos 228ReST no diretório Documentation/ para criar uma documentação enriquecida, que 229pode então ser convertida para arquivos PostScript, HTML, LaTeX, ePUB e PDF. 230Para converter do formato ReST para o formato de sua escolha, você precisará do 231Sphinx. 232 233Util-linux 234---------- 235 236Novas versões do util-linux oferecem suporte no ``fdisk`` para discos maiores, 237suporte a novas opções para o mount, reconhecimento de mais tipos de partição e 238outras funcionalidades interessantes. Você provavelmente vai querer atualizar. 239 240Ksymoops 241-------- 242 243Se o impensável acontecer e o seu kernel sofrer um oops, você pode precisar da 244ferramenta ksymoops para decodificá-lo, mas na maioria dos casos, não será 245necessário. É geralmente preferível compilar o kernel com ``CONFIG_KALLSYMS`` para 246que ele produza dumps legíveis que possam ser usados no estado em que se 247encontram (isso também gera uma saída melhor do que a do ksymoops). 248Se por algum motivo o seu kernel não for compilado com ``CONFIG_KALLSYMS`` e você 249não tiver como recompilar e reproduzir o oops com essa opção, você ainda poderá 250decodificá-lo com o ksymoops. 251 252Mkinitrd 253-------- 254 255Estas mudanças no layout da árvore de arquivos ``/lib/modules`` também exigem que o 256mkinitrd seja atualizado. 257 258E2fsprogs 259--------- 260 261A versão mais recente do ``e2fsprogs`` corrige diversos bugs no fsck e no debugfs. 262Obviamente, é uma boa ideia atualizar. 263 264JFSutils 265-------- 266 267O pacote jfsutils contém os utilitários para o sistema de arquivos. Os seguintes 268utilitários estão disponíveis: 269 270- ``fsck.jfs`` - inicia a reprodução (replay) do log de transações, além de 271 verificar e reparar uma partição formatada em JFS. 272 273- ``mkfs.jfs`` - cria uma partição formatada em JFS. 274 275Outros utilitários de sistema de arquivos também estão disponíveis neste pacote. 276 277Xfsprogs 278-------- 279 280A versão mais recente do ``xfsprogs`` contém os utilitários ``mkfs.xfs``, 281``xfs_db`` e ``xfs_repair``, entre outros, para o sistema de arquivos XFS. Ele é 282independente de arquitetura e qualquer versão a partir da 2.0.0 deve funcionar 283corretamente com esta versão do código do kernel XFS (recomenda-se a 284versão 2.6.0 ou posterior, devido a algumas melhorias significativas). 285 286PCMCIAutils 287----------- 288 289O PCMCIAutils substitui o pcmcia-cs. Ele configura corretamente os sockets 290PCMCIA na inicialização do sistema e carrega os módulos apropriados para 291dispositivos PCMCIA de 16 bits, caso o kernel esteja modularizado e o subsistema 292de hotplug seja utilizado. 293 294Quota-tools 295----------- 296 297O suporte a UIDs e GIDs de 32 bits é necessário caso você deseje utilizar o 298formato de cota versão 2 mais recente. O quota-tools versão 3.07 e superiores 299possuem esse suporte. Utilize a versão recomendada ou superior da tabela acima. 300 301Intel IA32 microcode 302-------------------- 303 304Um driver foi adicionado para permitir a atualização do microcódigo Intel IA32, 305acessível como um dispositivo de caracteres comum (misc). Se você não estiver 306usando o udev, você poderá precisar de:: 307 308 mkdir /dev/cpu 309 mknod /dev/cpu/microcode c 10 184 310 chmod 0644 /dev/cpu/microcode 311 312você poderá precisar executar os comandos 313acima como root antes de poder usar isso. Você provavelmente também desejará 314obter o utilitário de espaço de usuário ``microcode_ctl`` para utilizar em 315conjunto com este driver. 316 317udev 318---- 319 320O udev é uma aplicação de espaço de usuário para popular o diretório /dev 321dinamicamente, apenas com entradas para dispositivos de fato presentes no 322sistema. O udev substitui a funcionalidade básica do devfs, permitindo ao mesmo 323tempo a nomeação persistente de dispositivos. 324 325FUSE 326---- 327 328Necessita do libfuse 2.4.0 ou posterior. O mínimo absoluto é a versão 2.3.0, 329mas as opções de montagem direct_io e kernel_cache não funcionarão. 330 331Redes 332****** 333 334Mudanças gerais 335---------------- 336 337Caso você tenha necessidades avançadas de configuração de rede, você deve 338provavelmente considerar o uso das ferramentas de rede do iproute2. 339 340Filtro de Pacotes / NAT 341------------------------ 342 343O código de filtragem de pacotes e NAT utiliza as mesmas ferramentas da série 344anterior de kernels 2.4.x (iptables). Ele ainda inclui módulos de 345retrocompatibilidade para o ipchains (estilo 2.2.x) e o ipfwadm (estilo 2.0.x). 346 347PPP 348--- 349 350O driver PPP foi reestruturado para suportar multilink e permitir que opere 351sobre diversas camadas de mídia. Se você utiliza PPP, atualize o pppd para, no 352mínimo, a versão 2.4.0. 353 354Se você não estiver usando o udev, você deve possuir o arquivo de dispositivo 355``/dev/ppp``, o qual pode ser criado por:: 356 357 mknod /dev/ppp c 108 0 358 359como root. 360 361NFS-utils 362--------- 363 364Em kernels antigos (2.4 e anteriores), o servidor NFS precisava conhecer 365qualquer cliente que pretendesse acessar arquivos via NFS. Essa informação era 366fornecida ao kernel pelo mountd quando o cliente montava o sistema de arquivos, 367ou pelo exportfs na inicialização do sistema. O exportfs obtinha informações 368sobre clientes ativos a partir de /var/lib/nfs/rmtab. 369 370Esta abordagem é bastante frágil, pois depende da integridade do rmtab, o que 371nem sempre é fácil, particularmente ao tentar implementar fail-over. Mesmo 372quando o sistema está funcionando bem, o rmtab sofre com o acúmulo de muitas 373entradas antigas que nunca são removidas. 374 375Com kernels modernos, temos a opção de fazer o kernel informar ao mountd quando 376recebe uma requisição de um host desconhecido, permitindo que o mountd forneça 377as informações de exportação apropriadas ao kernel. Isso remove a dependência do 378rmtab e significa que o kernel só precisa conhecer os clientes ativos no 379momento. 380 381Para habilitar esta nova funcionalidade, você precisa:: 382 383 mount -t nfsd nfsd /proc/fs/nfsd 384 385antes de executar o exportfs ou o mountd. Recomenda-se que todos os serviços NFS 386sejam protegidos da internet em geral por um firewall, sempre que possível. 387 388mcelog 389------ 390 391Em kernels x86, o utilitário mcelog é necessário para processar e registrar 392eventos de machine check quando opção CONFIG_X86_MCE está ativada. Eventos de 393machine check são erros relatados pela CPU. O processamento desses eventos é 394fortemente recomendado. 395 396Documentação do Kernel 397*********************** 398 399Sphinx 400------ 401 402Por favor, consulte Documentation/doc-guide/sphinx.rst para detalhes sobre os 403requisitos do Sphinx. 404 405rustdoc 406------- 407 408O rustdoc é utilizado para gerar a documentação para código Rust. Por favor, 409consulte Documentation/rust/general-information.rst para mais informações. 410 411Obtendo software atualizado 412============================ 413 414Compilação do kernel 415********************** 416 417gcc 418--- 419 420- <ftp://ftp.gnu.org/gnu/gcc/> 421 422Clang/LLVM 423---------- 424 425- :ref:`Getting LLVM <getting_llvm>`. 426 427Rust 428---- 429 430- Documentation/rust/quick-start.rst. 431 432bindgen 433------- 434 435- Documentation/rust/quick-start.rst. 436 437Make 438---- 439 440- <ftp://ftp.gnu.org/gnu/make/> 441 442Bash 443---- 444 445- <ftp://ftp.gnu.org/gnu/bash/> 446 447Binutils 448-------- 449 450- <https://www.kernel.org/pub/linux/devel/binutils/> 451 452Flex 453---- 454 455- <https://github.com/westes/flex/releases> 456 457Bison 458----- 459 460- <ftp://ftp.gnu.org/gnu/bison/> 461 462OpenSSL 463------- 464 465- <https://www.openssl.org/> 466 467System utilities 468**************** 469 470Util-linux 471---------- 472 473- <https://www.kernel.org/pub/linux/utils/util-linux/> 474 475Kmod 476---- 477 478- <https://www.kernel.org/pub/linux/utils/kernel/kmod/> 479- <https://git.kernel.org/pub/scm/utils/kernel/kmod/kmod.git> 480 481Ksymoops 482-------- 483 484- <https://www.kernel.org/pub/linux/utils/kernel/ksymoops/v2.4/> 485 486Mkinitrd 487-------- 488 489- <https://code.launchpad.net/initrd-tools/main> 490 491E2fsprogs 492--------- 493 494- <https://www.kernel.org/pub/linux/kernel/people/tytso/e2fsprogs/> 495- <https://git.kernel.org/pub/scm/fs/ext2/e2fsprogs.git/> 496 497JFSutils 498-------- 499 500- <https://jfs.sourceforge.net/> 501 502Xfsprogs 503-------- 504 505- <https://git.kernel.org/pub/scm/fs/xfs/xfsprogs-dev.git> 506- <https://www.kernel.org/pub/linux/utils/fs/xfs/xfsprogs/> 507 508Pcmciautils 509----------- 510 511- <https://www.kernel.org/pub/linux/utils/kernel/pcmcia/> 512 513Quota-tools 514----------- 515 516- <https://sourceforge.net/projects/linuxquota/> 517 518 519Intel P6 microcode 520------------------ 521 522- <https://downloadcenter.intel.com/> 523 524udev 525---- 526 527- <https://www.freedesktop.org/software/systemd/man/udev.html> 528 529FUSE 530---- 531 532- <https://github.com/libfuse/libfuse/releases> 533 534mcelog 535------ 536 537- <https://www.mcelog.org/> 538 539Redes 540****** 541 542PPP 543--- 544 545- <https://download.samba.org/pub/ppp/> 546- <https://git.ozlabs.org/?p=ppp.git> 547- <https://github.com/paulusmack/ppp/> 548 549NFS-utils 550--------- 551 552- <https://sourceforge.net/project/showfiles.php?group_id=14> 553- <https://nfs.sourceforge.net/> 554 555Iptables 556-------- 557 558- <https://netfilter.org/projects/iptables/index.html> 559 560Ip-route2 561--------- 562 563- <https://www.kernel.org/pub/linux/utils/net/iproute2/> 564 565OProfile 566-------- 567 568- <https://oprofile.sf.net/download/> 569 570Kernel documentation 571******************** 572 573Sphinx 574------ 575 576- <https://www.sphinx-doc.org/> 577