O kernelstub é uma ferramenta para você criar um menu de boot no Pop!_OS (e outras distribuições) ou gerenciar a partição de sistema EFI (ESP) do seu computador, aquela partição do seu disco que armazena os arquivos carregados no processo de inicialização.
Mas por que você deveria aprender a utilizá-lo? Venha comigo para um passeio nesta ferramenta de código aberto e descubra as suas utilidades.
O que o kernelstub faz?
Sendo um gerenciador do carregamento dos arquivos de boot a partir da partição ESP, ele simplifica a cópia do kernel atual e da imagem initramfs para a partição ESP, permitindo a detecção automática pelos carregadores de inicialização UEFI (GRUB, bootctl, systemd-boot ou rEFIt/rEFInd).
Ele também permite configurar a NVRAM do sistema, adicionando entradas ao menu de inicialização do firmware para os kernels que estiverem instalados e atualizando tudo quando uma nova versão do kernel for instalada.
Como instalar o kernelstub?
Na página de lançamentos (releases) do projeto no Github, você pode baixar um arquivo .deb para executar uma instalação local. Caso não esteja presente, instale o pacote wget no seu sistema e faça as alterações necessárias nos nomes dos arquivos abaixo para instalar a última versão disponível.
wget https://github.com/isantop/kernelstub/releases/download/3.1.0/kernelstub_3.1.0_all.deb -O ~/Downloads/kernelstub_3.1.0_all.deb
sudo dpkg -i ~/Downloads/kernelstub_3.1.0_all.deb
Caso apareçam erros de dependências, você precisará instalá-las manualmente, por exemplo, a ausência do pacote efibootmg pode ser solucionada através do seguinte comando:
sudo apt install efibootmg
Caso você use uma distribuição não baseada no Debian, pode compilar a ferramenta, instalando antes as dependências que forem necessárias no seu caso específico.
git clone https://github.com/isantop/kernelstub
cd kernelstub
debuild -b -us -uc
sudo dpkg -i ../kernelstub*.deb
Você também pode instalar através do Python, conforme os comandos a seguir que, além de instalar a ferramenta, criam uma lista de todos os arquivos instalados no seu computador (arquivo installed_files.txt na pasta raiz do código-fonte baixado); caso você deseje, poderá utilizar esse arquivo para desinstalar todos os pacotes e dependências.
git clone https://github.com/isantop/kernelstub
cd kernelstub
sudo python3 setup.py install --record > installed_files.txt
Para que usá-lo?
O kernelstub é desenvolvido pela System76, a mesma empresa que criou a distribuição Pop!_OS e permite que você gerenciar os parâmetros de carregamento do kernel, por exemplo:
- Alterar o nível de latência (suspensão ou hibernação) do sistema;
- Controlar o estado da luz de fundo do seu teclado;
- Definir a quantidade de memória RAM a ser utilizada no processo de boot;
- Definir o nível de log do kernel;
- Especificar a partição swap para ser usada ao acordar da hibernação;
- Especificar o local das partições criptografadas (dm-crypt);
- Especificar o local dos arquivos de kernel e ramdisk;
- Habilitar ou desabilitar o carregamento de módulos do kernel como o das placas de vídeo;
- Uso ou não da animação de carregamento do boot.
Por exemplo, para visualizar uma animação durante o carregamento do kernel, utilize o seguinte comando:
sudo kernelstub -o "quiet splash"
Ele certifica-se de evitar quaisquer duplicações de opções e, caso já existam, manterá apenas uma delas. Os parâmetros de linha de comando estão detalhados no GitHub ou você pode listá-los através do comando:
sudo kernelstub -h
Por se tratar de uma ferramenta que modifica configurações sensíveis no seu sistema, sugiro que treine o seu uso através do parâmetro dry-run, que apenas simula a execução dos comados sem efetivamente realizá-los no sistema ou utilize uma máquina virtual. Caso ocorra algo errado, você pode conferir o código do erro na página do projeto no GitHub e fazer os ajustes necessários nos comandos digitados.
sudo kernelstub [comandos] --dry-run
Alterar o kernel padrão
Um dos usos mais apreciados do kernelstub é poder alterar o kernel padrão utilizado no carregamento do sistema.
Atenção: caso o seu sistema ou máquina virtual não tenha uma partição ESP (montada em /boot/efi), ele não irá funcionar.
Primeiramente, liste as versões do kernel atualmente instaladas no seu computador através do comando abaixo.
dpkg --list | grep linux-image*
Por exemplo, três versões do kernel no Pop_OS!
linux-image-6.0.2-76060002-generic 6.0.2-76060002.202210150739~1666289067~22.04~fe0ce53 amd64 Linux kernel image for version 6.0.2 on 64 bit x86 SMPii linux-image-6.0.6-76060006-generic 6.0.6-76060006.202210290932~1667401208~22.04~d2df702 amd64 Linux kernel image for version 6.0.6 on 64 bit x86 SMPii linux-image-generic 6.0.6.76060006.202210290932~1667401208~22.04~d2df702 amd64 Generic Linux kernel image
Com o comando “uname -r” você descobre qual versão do kernel utilizando.
uname -r
$ 6.0.6-76060006-generic
Para alterar a versão do kernel utilizada na inicialização do sistema, você pode digitar um comando semelhante ao mostrado a seguir, adaptando o que for necessário para o seu caso; simule primeiro com a opção dry-run. Por exemplo, para utilizar a versão anterior do kernel (6.0.2-76060002), você poderia usar o seguinte comando.
sudo kernelstub --dry-run -v -k /boot/vmlinuz-6.0.2-76060002-generic -i /boot/initrd.img-6.0.2-76060002-generic
Se nenhuma mensagem de erro aparecer, você pode executar efetivamente o comando para trocar o kernel.
sudo kernelstub -v -k /boot/vmlinuz-6.0.2-76060002-generic -i /boot/initrd.img-6.0.2-76060002-generic
Após reiniciar o sistema, o kernel padrão será a versão 6.0.2-76060002.
uname -r
$ 6.0.2-76060002-generic
Gostou do kernelstub? Assine a nossa newsletter para não perder nenhuma dica sobre o Pop_OS! ou a sua distribuição favorita!