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. 24 25Novamente, tenha em mente que esta lista pressupõe que você já possui um kernel 26Linux em execução funcional. Além disso, nem todas as ferramentas são 27necessárias em todos os sistemas; obviamente, se você não possui nenhum hardware 28PC Card por exemplo, provavelmente não precisará se preocupar com o pcmciautils. 29 30====================== =============== ======================================== 31 Programa Versão mínima Comando para verificar a versão 32====================== =============== ======================================== 33GNU C 8.1 gcc --version 34Clang/LLVM (optional) 15.0.0 clang --version 35Rust (optional) 1.78.0 rustc --version 36bindgen (optional) 0.65.1 bindgen --version 37GNU make 4.0 make --version 38bash 4.2 bash --version 39binutils 2.30 ld -v 40flex 2.5.35 flex --version 41bison 2.0 bison --version 42pahole 1.16 pahole --version 43util-linux 2.10o mount --version 44kmod 13 depmod -V 45e2fsprogs 1.41.4 e2fsck -V 46jfsutils 1.1.3 fsck.jfs -V 47xfsprogs 2.6.0 xfs_db -V 48squashfs-tools 4.0 mksquashfs -version 49btrfs-progs 0.18 btrfs --version 50pcmciautils 004 pccardctl -V 51quota-tools 3.09 quota -V 52PPP 2.4.0 pppd --version 53nfs-utils 1.0.5 showmount --version 54procps 3.2.0 ps --version 55udev 081 udevd --version 56grub 0.93 grub --version || grub-install --version 57mcelog 0.6 mcelog --version 58iptables 1.4.2 iptables -V 59openssl & libcrypto 1.0.0 openssl version 60bc 1.06.95 bc --version 61Sphinx\ [#f1]_ 3.4.3 sphinx-build --version 62GNU tar 1.28 tar --version 63gtags (opcional) 6.6.5 gtags --version 64mkimage (opcional) 2017.01 mkimage --version 65Python 3.9.x python3 --version 66GNU AWK (opcional) 5.1.0 gawk --version 67====================== =============== ======================================== 68 69.. [#f1] O Sphinx é necessário apenas para gerar a documentação do Kernel. 70 71Compilação do Kernel 72********************* 73 74GCC 75--- 76 77Os requisitos da versão do gcc podem variar dependendo do tipo de CPU 78do seu computador. 79 80Clang/LLVM (opcional) 81--------------------- 82 83A versão formal mais recente do clang e dos utilitários LLVM (de acordo com 84releases.llvm.org <https://releases.llvm.org>_) é suportada para a compilação 85de kernels. Versões anteriores não têm funcionamento garantido, e poderemos 86remover do kernel soluções de contorno (workarounds) que eram utilizadas para 87suportar versões mais antigas. Por favor, veja a documentação adicional em: 88ref:Building Linux with Clang/LLVM <kbuild_llvm>. 89 90Rust (opcional) 91--------------- 92 93É necessária uma versão recente do compilador Rust. 94 95Por favor, consulte Documentation/rust/quick-start.rst para obter instruções 96sobre como atender aos requisitos de compilação do suporte a Rust. Em 97particular, o alvo (target) rustavailable do Makefile é útil para verificar por 98que a cadeia de ferramentas (toolchain) Rust pode não estar sendo detectada. 99 100bindgen (opcional) 101------------------ 102 103O ``bindgen`` é utilizado para gerar os vínculos (bindings) Rust para o lado C 104do kernel. Ele depende da ``libclang``. 105 106Make 107---- 108 109Você precisará do GNU make 4.0 ou superior para compilar o kernel. 110 111Bash 112---- 113 114Alguns scripts bash são usados para a compilação do kernel. 115É necessário o Bash 4.2 ou mais recente. 116 117Binutils 118-------- 119 120O binutils 2.30 ou mais recente é necessário para compilar o kernel. 121 122pkg-config 123---------- 124 125O sistema de compilação, a partir da versão 4.18, requer o pkg-config para 126verificar as ferramentas kconfig instaladas e para determinar as configurações 127de flags para uso em make {g,x}config. Anteriormente, o pkg-config já era 128utilizado, mas não era verificado nem documentado. 129 130Flex 131---- 132 133Desde o Linux 4.16, o sistema de compilação gera analisadores léxicos durante a 134compilação. Isso requer o flex 2.5.35 ou superior. 135 136 137Bison 138----- 139 140Desde o Linux 4.16, o sistema de compilação gera analisadores sintáticos durante 141a compilação. Isso requer o bison 2.0 ou superior 142 143pahole 144------ 145 146Desde o Linux 5.2, se CONFIG_DEBUG_INFO_BTF estiver selecionado, o sistema de 147compilação gera BTF (BPF Type Format) a partir do DWARF no vmlinux, e um pouco 148depois para os módulos do kernel também. Isso requer o pahole v1.16 ou superior. 149 150Ele pode ser encontrado nos pacotes ``dwarves`` ou ``pahole`` das 151distribuições, ou em https://fedorapeople.org/~acme/dwarves/. 152 153Perl 154---- 155 156Você precisará do perl 5 e dos seguintes módulos: Getopt::Long, 157Getopt::Std, File::Basename e File::Find para compilar o kernel. 158 159Python 160------ 161 162Várias opções de configuração o exigem: ele é necessário para as configurações 163padrão (defconfigs) de arm/arm64, CONFIG_LTO_CLANG, algumas configurações 164opcionais de DRM, a ferramenta kernel-doc e a geração da documentação (Sphinx), 165entre outros. 166 167BC 168-- 169 170Você precisará do bc para compilar kernels 3.10 ou superior. 171 172 173OpenSSL 174------- 175 176A assinatura de módulos e a manipulação de certificados externos utilizam o 177programa OpenSSL e a biblioteca de criptografia para realizar a criação de 178chaves e a geração de assinaturas. 179 180Você precisará do openssl para compilar kernels 3.7 e superiores se a assinatura 181de módulos estiver habilitada. Você também precisará dos pacotes de 182desenvolvimento do openssl para compilar kernels 4.3 e superiores. 183 184Tar 185--- 186 187O GNU tar é necessário caso você deseje habilitar o acesso aos cabeçalhos do 188kernel via sysfs (CONFIG_IKHEADERS). 189 190gtags / GNU GLOBAL (optional) 191----------------------------- 192 193A compilação do kernel requer o GNU GLOBAL versão 6.6.5 ou superior para gerar 194arquivos de tags através de make gtags. Isso se deve ao uso da flag -C 195(--directory) pelo gtags. 196 197mkimage 198------- 199 200Esta ferramenta é utilizada ao gerar uma Flat Image Tree (FIT), comumente usada 201em plataformas ARM. A ferramenta está disponível através do pacote u-boot-tools 202ou pode ser compilada a partir do código-fonte do U-Boot. Veja as instruções em 203https://docs.u-boot.org/en/latest/build/tools.html#building-tools-for-linux 204 205GNU AWK 206------- 207 208O GNU AWK é necessário caso você deseje que a compilação do kernel gere dados de 209intervalo de endereços para 210módulos integrados (CONFIG_BUILTIN_MODULE_RANGES). 211 212Utilitários de sistema 213*********************** 214 215Mudanças de arquitetura 216------------------------ 217 218O DevFS tornou-se obsoleto em favor do udev 219(https://www.kernel.org/pub/linux/utils/kernel/hotplug/) 220 221O suporte a UIDs de 32 bits já está implementado. Divirta-se! 222 223A documentação das funções do Linux está migrando para a documentação embutida 224(inline), por meio de comentários com formatação especial próximos às suas 225definições no código-fonte. Esses comentários podem ser combinados com arquivos 226ReST no diretório Documentation/ para criar uma documentação enriquecida, que 227pode então ser convertida para arquivos PostScript, HTML, LaTeX, ePUB e PDF. 228Para converter do formato ReST para o formato de sua escolha,você precisará do 229Sphinx. 230 231Util-linux 232---------- 233 234Novas versões do util-linux oferecem suporte no fdisk para discos maiores, 235suporte a novas opções para o mount, reconhecimento de mais tipos de partição e 236outras funcionalidades interessantes. Você provavelmente vai querer atualizar. 237 238Ksymoops 239-------- 240 241Se o impensável acontecer e o seu kernel sofrer um oops, você pode precisar da 242ferramenta ksymoops para decodificá-lo, mas na maioria dos casos, não será 243necessário. É geralmente preferível compilar o kernel com CONFIG_KALLSYMS para 244que ele produza dumps legíveis que possam ser usados no estado em que se 245encontram (isso também gera uma saída melhor do que a do ksymoops). 246Se por algum motivo o seu kernel não for compilado com CONFIG_KALLSYMS e você 247não tiver como recompilar e reproduzir o oops com essa opção, você ainda poderá 248decodificá-lo com o ksymoops. 249 250Mkinitrd 251-------- 252 253Estas mudanças no layout da árvore de arquivos /lib/modules também exigem que o 254mkinitrd seja atualizado. 255 256E2fsprogs 257--------- 258 259A versão mais recente do e2fsprogs corrige diversos bugs no fsck e no debugfs. 260Obviamente, é uma boa ideia atualizar. 261 262JFSutils 263-------- 264 265O pacote jfsutils contém os utilitários para o sistema de arquivos. Os seguintes 266utilitários estão disponíveis: 267 268- ``fsck.jfs`` - inicia a reprodução (replay) do log de transações, além de 269 verificar e reparar uma partição formatada em JFS. 270 271- ``mkfs.jfs`` - cria uma partição formatada em JFS. 272 273- Para o seu arquivo changes.rst, a tradução técnica adequada é: 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 312Se você não estiver usando o udev, você 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 fat 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