Como Construir e Instalar um Kernel Personalizado no Ubuntu

A ideia de compilar seus próprios kernels assusta os novos usuários do Linux. Parece aterrorizante, construir a parte mais crucial do seu sistema do zero. A verdade, no entanto, é que construir o kernel Linux no Ubuntu é realmente fácil.
Construir kernels Linux não requer programação. Alguns dos melhores programadores do mundo já escreveram todo o código. Você só precisa escolher os recursos que deseja e juntar tudo. Aqui, vamos mostrar como construir e instalar um kernel personalizado no Ubuntu.
Índice
- Obtendo as Dependências
- Obtendo a Fonte do Kernel para Ubuntu
- Configurando para Sua Compilação
- Configurando o Kernel do Ubuntu
- Construindo Pacotes de Kernel para Ubuntu
- Instalando o Kernel
- Instalando Kernels Binários Personalizados
- Instalando Mainline no Ubuntu
- Usando Mainline
Leia também: Como Reverter o Kernel no Linux
Obtendo as Dependências
Antes de tocar em um kernel, você precisa das ferramentas certas para construí-lo. Use o comando abaixo para baixá-las dos repositórios do Ubuntu.
sudo apt install wget build-essential bison flex libncurses-dev libssl-dev libelf-devObtendo a Fonte do Kernel para Ubuntu
Agora você pode pegar a fonte que deseja construir. Todos os kernels estão disponíveis nos repositórios oficiais do Linux. Você pode dar uma olhada nas últimas versões em seu repositório cdn. No momento deste artigo, a mais recente é a 5.16. Você pode baixar usando os comandos:
cd /home/$USER/
mkdir kernelbuild
cd kernelbuild
wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.16.19.tar.xz
Vai levar um tempo para baixar o kernel, então seja paciente.
Configurando para Sua Compilação
Comece sua configuração descompactando o arquivo tar do kernel. Em seguida, copie a configuração do seu kernel existente para ele.
tar xavf linux-5.16.19.tar.xz && cd ./linux-5.16.19
cp /boot/config-`uname -r` .configAgora você precisa adaptar a configuração antiga para o novo kernel.
make oldconfigEste script irá perguntar o que fazer com cada novo recurso. Se você quiser usar as configurações padrão, use make olddefconfig em vez disso.
Leia também: Como Montar um Novo PC Para Linux
Configurando o Kernel do Ubuntu
Você pode deixar sua configuração como está, e provavelmente ficará tudo bem. Não faz sentido construir um kernel personalizado se você não vai personalizá-lo, no entanto.
Para personalizar sua configuração, execute
make menuconfig
Um menu azul será aberto com uma lista de categorias. Essas categorias contêm recursos que você pode selecionar para construir em seu kernel.

Por exemplo, se você realmente quiser construir suporte para o sistema de arquivos BTRFS diretamente no kernel e habilitar outros recursos, você deve ir para “Sistemas de arquivos ->”. Em seguida, role para baixo até ver “Suporte ao sistema de arquivos Btrfs.” Selecione a opção que deseja e pressione a barra de espaço. A barra de espaço alterna entre “M,” “*” e vazio.
- “M” significa que o recurso será construído como um módulo que será carregado se necessário quando o Ubuntu iniciar.
- “*” significa que o recurso será construído no kernel e sempre carregado.
O script não inclui opções em branco no produto final. Quando você terminar de configurar as coisas, limpe o diretório.
make cleanAgora seu kernel está pronto para ser construído.
Construindo Pacotes de Kernel para Ubuntu
Há um método no Ubuntu para construir seus kernels, mas isso força você a usar scripts escritos para versões mais antigas. Às vezes isso é aceitável; outras vezes quebra horrivelmente. Portanto, geralmente é melhor usar o método Linux mais genérico com o GNU make.
make -j `getconf _NPROCESSORS_ONLN`
make deb-pkg LOCALVERSION=-customToda essa linha faz é compilar o kernel em pacotes .deb usando a quantidade de núcleos de CPU em seu sistema mais um. Também adiciona “custom” ao final da versão do pacote para diferenciar seu kernel personalizado de outros.
Nota: Pode levar horas para compilar um kernel. Seja paciente.
Instalando o Kernel
Você encontrará seus novos pacotes de kernel um diretório acima. Eles serão facilmente identificáveis pelo número da versão. Você pode usar dpkg para instalá-los.
cd ./../
sudo dpkg -i linux-firmware-image-5.16.19-custom_5.16.19-custom-1_amd64.deb
sudo dpkg -i linux-libc-dev_5.16.19-custom-1_amd64.deb
sudo dpkg -i linux-headers-5.16.19-custom_5.16.19-custom-1_amd64.deb
sudo dpkg -i linux-image-5.16.19-custom-dbg_5.16.19-custom-1_amd64.deb
sudo dpkg -i linux-image-5.16.19-custom_5.16.19-custom-1_amd64.debQuando a instalação terminar, reinicie seu computador. O Ubuntu irá inicializar automaticamente no seu novo kernel. Você pode verificar se isso aconteceu executando uname -r em um terminal quando ele iniciar.
Instalando Kernels Binários Personalizados
Outra forma de usar kernels Linux personalizados no Ubuntu é instalando uma versão binária pré-compilada dele. Ao contrário da versão baseada em fonte, estas são cópias do kernel que já foram compiladas para o sistema e arquitetura que você está executando.

Além disso, kernels binários personalizados também podem fornecer a flexibilidade de poder alternar entre versões de kernel para sua instalação do Ubuntu. Isso pode ser especialmente útil se você estiver executando uma máquina com problemas de compatibilidade de hardware e não quiser lidar com a compilação do seu próprio kernel.
Sabendo disso, a maneira mais popular de instalar kernels binários personalizados é através do Mainline. Este é um programa GUI desenvolvido por bkw777 que visa simplificar o processo de instalação de um kernel Linux.

Nesse sentido, este programa combina todas as etapas que você precisa seguir para baixar e configurar corretamente o kernel. Por exemplo, o Mainline permite que você escolha facilmente um binário de kernel e cabeçalho que deseja instalar. Ele então mantém essa versão em um cache onde você pode facilmente carregar sempre que precisar.
Leia também: 5 Ferramentas para Criar Facilmente uma Distro Linux Personalizada
Instalando Mainline no Ubuntu
Com isso, instalar o Mainline é relativamente fácil. Primeiro, você precisa informar ao apt para incluir o repositório de pacotes do Mainline. Para fazer isso, você pode executar o seguinte comando no seu Terminal:
sudo add-apt-repository ppa:cappelikan/ppa
A partir daqui, você precisa atualizar o diretório de pacotes do Ubuntu. Isso permitirá que o apt leia do repositório que você acabou de adicionar e, por sua vez, permitirá que você baixe o Mainline através dele:
sudo apt updateCom isso, a única coisa que resta a fazer é instalar o próprio Mainline:
sudo apt install mainline
Usando Mainline
Uma vez feito isso, você pode carregar o Mainline indo ao seu Menu de Aplicativos e pesquisando por ele. O programa Mainline será carregado e exibirá todos os pacotes de kernel que você pode instalar para seu sistema.

A partir daí, você pode selecionar e instalar a versão do kernel que deseja usar para seu sistema. Por exemplo, posso selecionar “Linux 5.16.19” e clicar em Instalar na barra lateral direita para carregar completamente essa versão do kernel na minha máquina.

Por outro lado, também posso usar o Mainline para remover os kernels que não quero mais usar. Por exemplo, posso selecionar “Linux 5.15” e clicar em Remover na mesma barra lateral direita para remover esse kernel do meu sistema.

Fazendo isso dessa maneira, permite que você adicione ou remova arquivos e binários relacionados a essa versão do kernel de forma limpa. Isso porque um binário de kernel também inclui as bibliotecas, cabeçalhos e firmware que, por sua vez, permitem que ele funcione corretamente.
Leia também: Como Corrigir Falha de Verificação de Segurança do Kernel no Windows 10
Perguntas Frequentes
Quais são os problemas de executar um kernel personalizado?
Um dos maiores problemas de executar um kernel personalizado é que você está retirando uma parte vital do seu sistema das atualizações regulares. Isso significa que você precisa instalar manualmente todas as atualizações do kernel a partir deste ponto. Isso inclui recursos de hardware adicionais, bem como atualizações de segurança críticas.
Isso pode ser um problema se você precisar de um sistema que funcione e se mantenha com mínima intervenção do usuário. Assim, executar um kernel personalizado não só requer que você saiba quais recursos do kernel deseja, mas também esteja ciente das atualizações críticas.
Existem desvantagens em usar um binário de kernel?
Sim. Uma das principais desvantagens de usar um binário de kernel é que você não tem controle sobre seus recursos integrados. Isso significa que, ao contrário de um kernel baseado em fonte, um binário de kernel não conterá otimizações e suporte específicos de hardware.
Isso significa que, se você pretende usar peças de hardware exóticas com o Ubuntu, precisará compilar seu kernel do zero.
É melhor compilar um recurso do kernel como um módulo ou embutido?
Isso depende muito do que você deseja usar seu kernel. Por exemplo, compilar um recurso como embutido garantirá que ele será carregado imediatamente assim que o kernel for carregado na memória. No entanto, fazer isso aumentará o tamanho total do kernel final.
Enquanto isso, compilar um recurso como um módulo o removerá do kernel base. Em vez disso, esse módulo será carregado assim que o kernel já estiver na memória. Isso reduz o tamanho do arquivo do kernel final, o que, por sua vez, o torna rápido e seguro.
Sabendo disso, é uma boa prática compilar recursos do kernel como embutidos, pois reduz as chances de quaisquer problemas de compatibilidade em seu sistema. No entanto, você também deve ter cuidado ao incluir muitos recursos, pois isso aumentará significativamente o tamanho total do seu kernel.