Como compilar o kernel de baunilha linux da fonte no Fedora
- 2484
- 372
- Spencer Emard
O kernel é o componente mais importante de um sistema operacional: entre as outras coisas, fornece suporte para diferentes tipos de hardware e gerencia alocações de recursos.
Linux é um kernel monolítico: embora suas funcionalidades possam ser incluídas estaticamente ou construídas e carregadas como separadas módulos
, Ele sempre funciona como uma "peça única" no mesmo espaço de endereço. Neste tutorial, veremos como baixar, compilar e instalar um kernel de baunilha linux. As instruções fornecidas devem funcionar em todas as distribuições Linux, no entanto, este guia está focado em compilar o kernel em um sistema de Fedora.
Neste tutorial, você aprenderá:
- Como configurar, compilar e instalar um kernel de baunilha linux
- Como empacotar o kernel compilado e seus módulos
O menu de configuração baseado em ncurses para o kernel Linux
Requisitos de software e convenções usadas
Categoria | Requisitos, convenções ou versão de software usada |
---|---|
Sistema | Fedora |
Programas |
|
Outro | Permissões radiculares para instalar as dependências necessárias e o kernel compilado |
Convenções | # - requer que os comandos Linux sejam executados com privilégios root diretamente como usuário root ou por uso de sudo comando$ - Requer que os comandos do Linux sejam executados como um usuário não privilegiado regular |
Instalando as dependências
Para poder compilar o kernel Linux da fonte, precisamos instalar alguns pacotes em nosso sistema:
$ sudo dnf install gcc flex make bison OpenSSL-devel elfutils-libelf-devel
Os acima são apenas os pacotes 'núcleos' que precisamos. Para invocar metas de configuração específicas, alguns pacotes extras devem ser instalados: o ncurses-devel
e qt-devel
Pacotes, por exemplo, são necessários para configurar o kernel que utiliza, respectivamente, da interface gráfica baseada em Ncurses e QT, enquanto o RPM-Build
é necessário o pacote para construir um RPM contendo o kernel compilado.
Baixando o tarball de origem
No início, precisamos obter o tarball contendo as mais recentes fontes de kernel linux estável. Podemos baixar e extrair o tarball com apenas um comando:
$ curl https: // cdn.núcleo.org/pub/linux/kernel/v5.X/Linux-5.1.5.alcatrão.xz | tar -xj
No final do processo de download, dentro do nosso diretório de trabalho atual, devemos encontrar uma nova pasta que contém o código -fonte do kernel. Precisamos entrar, neste caso:
$ CD Linux-5.1.5
Neste ponto, podemos configurar o kernel. No próximo parágrafo, vamos dar uma olhada nos alvos de configuração mais comuns usados para realizar a tarefa.
Configurando o kernel
Existem várias maneiras pelas quais podemos configurar o kernel e eles correspondem a diferentes alvos de configuração
. Quando um alvo de configuração é invocado, se um arquivo nomeado .Config
Contendo uma configuração válida do kernel é encontrada no diretório de fontes, é usado como ponto de partida para a configuração. Isso torna a possibilidade de atualizar ou modificar uma configuração já existente, talvez a que vem com o kernel instalado por padrão em nossa distribuição (ele pode ser encontrado dentro do /bota
diretório, nomeado após o kernel em uso).
Se o arquivo não for encontrado, a configuração começará do zero e o .Config
O arquivo será gerado assim que salvarmos nossa configuração. Vamos ver parte do alvos de configuração
podemos usar:
Config
Se esse alvo for chamado, o usuário será solicitado a configurar o kernel, respondendo a uma série de perguntas, da maneira seguinte:
* * Linux/x86 5.1.5 Configuração do kernel * * * Compilador: GCC (GCC) 9.1.1 20190503 (Red Hat 9.1.1-1) * * * Configuração geral * Compile também drivers que não carregarão (compile_test) [n/y/?]
Menuconfig
Este alvo usa um bom e fácil de usar ncurses
Interface para nos deixar gerar ou atualizar a configuração do kernel. Como dito antes, poder usar esta interface o ncurses-devel
o pacote deve ser instalado no sistema.
A configuração baseada em Ncurses
Usando esta interface, podemos pressionar o h
Chave ao destacar uma opção específica para obter informações e sugestões sobre isso:
Obter informações sobre uma opção é apenas uma questão de selecioná -las e pressionar a tecla H pressionando
Y
em uma opção, incluirá no kernel estaticamente (a opção será marcada com um *
), pressionando N
excluirá e pressionando o M
a chave o incluirá como um módulo (a opção será marcada com um M
). Para procurar uma opção específica, podemos usar o /
Chave e forneça a string ou regex para pesquisar: A interface do NCURSses para procurar uma opção específica
xconfig
Ao invocar esse alvo, é possível configurar o kernel por meio de uma interface gráfica com base no Qt
Kit de ferramentas se o qt-devel
o pacote está instalado no sistema.
A interface de configuração baseada no QT
OldConfig
Esse alvo é útil quando queremos usar uma configuração de kernel já existente como ponto de partida. Quando invocamos esse alvo, somos solicitados a configurar apenas os recursos disponíveis no kernel que estamos configurando, mas não incluídos no arquivo de configuração original.
LOCALMODCONFIG
Invocar esse alvo irá gerar ou atualizar um novo arquivo de configuração do kernel na base dos módulos atualmente carregados no sistema. Somente eles serão incluídos na configuração, os outros serão desativados. Isso pode ser usado como uma maneira rápida de obter um kernel personalizado com base no estado atual de uma máquina.
LocalyesConfig
Este alvo funciona de maneira semelhante a LOCALMODCONFIG
Com uma grande diferença: as funcionalidades fornecidas pelos módulos atualmente carregados no sistema serão estaticamente incluídos no kernel.
Compilando e instalando o kernel
Depois que terminamos de configurar o kernel, podemos compilar o código -fonte. Tudo o que precisamos fazer é executar:
$ make
A operação pode demorar um pouco, dependendo dos recursos que decidimos incluir no kernel. Para acelerar o processo que podemos executar fazer
com o -j
opção e especifique o número de trabalhos para executar simultaneamente: um valor frequentemente usado para esta opção é o número de núcleos lógicos da CPU + 1. Em uma máquina com 4 núcleos lógicos, funcionaríamos: portanto, funcionaríamos:
$ make -j5
Uma vez compilado, para instalar o kernel, podemos simplesmente executar:
$ sudo fazer instalar
Os arquivos do núcleo do kernel serão copiados dentro do /bota
diretório. Para compilar e instalar os módulos do kernel, em vez disso, podemos executar:
$ sudo make modules_install
Os módulos do kernel serão instalados em um diretório em /lib/módulos
Nomeado após a versão do kernel. Finalmente, para que o novo kernel esteja disponível e selecionado na inicialização, devemos regenerar a configuração do GRUB:
$ sudo grub2 -mkconfig -o/boot/grub2/grub.cfg
Embalagem o kernel
Em vez de instalar o kernel compilado diretamente como fizemos acima, para poder gerenciar sua instalação e remoção através do gerenciador de pacotes do sistema, podemos criar um pacote de rpm
. Para realizar a tarefa, devemos usar uma entre o RPM-PKG
e Binrpm-pkg
alvos. O primeiro construirá os pacotes de RPM de origem e binários, o segundo somente o binário. Para que este alvo seja executado corretamente, o RPM-Build
o pacote deve ser instalado. Para construir apenas o pacote binário de RPM, nós executaríamos:
$ Make Binrpm-Pkg
Se as operações forem realizadas sem erros, o rpMbuild
A árvore do diretório será criada em nosso diretório doméstico. O pacote RPM construído estará disponível em um subdiretório de ~/rpmbuild/rpms
nomeado após a arquitetura do sistema.
Outra opção é empacotar o kernel e seus módulos dentro de um tarball comprimido, usando um entre o Targz-pkg
, Tarbz2-pkg
e Tarxz-pkg
alvos, dependendo da compressão que queremos usar. O tarball será criado dentro do diretório de origem do kernel.
Conclusões
Neste tutorial, aprendemos a saber por que o Linux é chamado de kernel monolítico e como seus componentes podem ser configurados estaticamente ou como módulos. Vimos como baixar um kernel de baunilha e os vários métodos que podemos usar para configurá -lo. Finalmente, vimos como compilá -lo, empacotá -lo e instalá -lo em nosso sistema. Um último conselho: se você decidir recompilar o kernel, é sempre uma boa ideia invocar um dos alvos de limpeza
antes de proceder:
- limpar: Remove a maioria dos arquivos gerados, mas mantenha a configuração e o suporte suficiente para criar módulos externos
- MRPROPER: Remove todos os arquivos gerados + configuração + vários arquivos de backup
- distclean: Executa o MrProper e também remove os arquivos de backup e patch do editor
Tutoriais do Linux relacionados:
- Coisas para instalar no Ubuntu 20.04
- Coisas para fazer depois de instalar o Ubuntu 20.04 fossa focal linux
- Uma introdução à automação, ferramentas e técnicas do Linux
- Download do Linux
- Arquivos de configuração do Linux: os 30 primeiros mais importantes
- Coisas para fazer depois de instalar o Ubuntu 22.04 Jellyfish…
- Mint 20: Melhor que o Ubuntu e o Microsoft Windows?
- Linux pode obter vírus? Explorando a vulnerabilidade do Linux…
- Coisas para instalar no Ubuntu 22.04
- Como fazer bota dupla kali linux e windows 10
- « Como configurar um servidor NFS no Debian 10 Buster
- Como instalar o Veracrypt no Debian 10 Buster »