Info:
Este processo foi feito com systemd-boot, não testei ainda com grub.
Mudar para uma Imagem de Kernel Unificado (UKI - Unified Kernel Image) no Linux vale a pena se você busca inicialização mais rápida, segurança avançada com inicialização segura (Secure Boot) ou um sistema altamente otimizado. No entanto, ela centraliza componentes essenciais e exige configuração manual, o que pode quebrar o boot se feito incorretamente. [1, 2]
A decisão de adotar essa estrutura depende dos seus objetivos:
-
Segurança Reforçada: O UKI agrupa o kernel, o initramfs, o microcódigo e a linha de comando em um único arquivo assinado criptograficamente. Isso impede que agentes maliciosos modifiquem o kernel antes da inicialização.
-
Boot mais Rápido e Limpo: Como o arquivo único é executado diretamente pelo firmware UEFI (dispensando gerenciadores de boot intermediários como GRUB), o tempo de carregamento é reduzido.
-
Simplificação: Útil em distribuições com foco em contêineres ou sistemas portáteis, facilitando a atualização atômica do sistema.
O tamanho da pastição /boot/efi tem que ser no mínimo 512M. Pois dependendo as imagens efi criadas podem ficar grandes.
Instale os pacotes
sudo apt install systemd-ukify sbsigntool
sbsigntool - é para usar com secure boot.
Crie uma pasta para guardar sua chave
mkdir -p /root/kernel-keys
cd /root/kernel-keys
Gere a chave
openssl req -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform PEM -out MOK.pem -nodes -days 3650 -subj "/CN=Minha Chave de Kernel/"
Registrar a Chave no UEFI
Para que o Secure Boot aceite seu kernel assinado, você precisa registrar a chave pública no firmware da placa-mãe: O pem foi usado, pois foi o que foi aceito pelo ukifi.
sudo mokutil --import MOK.pem
- Reinicie o computador.
- Durante a inicialização, a tela azul do MOK Manager (Shim) aparecerá.
- Escolha Enroll MOK > View key 0 (para confirmar) > Continue > Yes e digite a senha que você criou no Passo 1.
- Selecione Reboot para reiniciar novamente
4K Debian Wallpapers - Top Free 4K Debian Backgrounds - WallpaperAccess
Baixe a imagem que preferir e converta para bmp
O resolução da imagem é a resolção do seu monitor.
Instale o pacote ImageMagick
convert imagem.jpg -resize 1366x768 splash.jpg
convert splash.jpg -colorspace sRGB -type truecolor BMP3:splash.bmp
No fim copie para pasta /etc/kernel/
sudo cp splash.bmp /etc/kernel/
Crie o arquivo /etc/kernel/cmdline senão existir, e adicione os parâmetros do kernel
root=UUID=44288da0-5fca-4320-bc44-b3c17b4c9513 vga=current loglevel=3 systemd.show_status=auto rd.udev.log_level=3 systemd.gpt_auto=no fbcon=nodefer rw quiet
Crie os arquivos, para gerar os EFI usando o initramfs.
Caso não queira usar splah ao iniciar remova --splash=“/etc/kernel/splash.bmp” *
/etc/kernel/postinst.d/zz-ukify
#!/bin/bash
set -e
# Use o ukify para criar e, opcionalmente, assinar o UKI.
/usr/lib/systemd/ukify build \
--linux="$2" \
--initrd="/boot/initrd.img-$1" \
--cmdline="@/etc/kernel/cmdline" \
--splash="/etc/kernel/splash.bmp" \
--output="/boot/efi/EFI/Linux/linux-$1.efi"
# Adicione esta linha se desejar assinar a imagem para inicialização segura.
sbsign --key /root/kernel-keys/MOK.priv --cert /root/kernel-keys/MOK.pem --output /boot/efi/EFI/Linux/linux-$1.efi /boot/efi/EFI/Linux/linux-$1.efi
/etc/initramfs/post-update.d/zz-ukify
#!/bin/bash
set -e
/usr/lib/systemd/ukify build \
--linux="/boot/vmlinuz-$1" \
--initrd="$2" \
--cmdline="@/etc/kernel/cmdline" \
--splash="/etc/kernel/splash.bmp" \
--output="/boot/efi/EFI/Linux/linux-$1.efi"
# Adicione esta linha se desejar assinar a imagem para inicialização segura.
sbsign --key /root/kernel-keys/MOK.priv --cert /root/kernel-keys/MOK.pem --output /boot/efi/EFI/Linux/linux-$1.efi /boot/efi/EFI/Linux/linux-$1.efi
Dê permissão de execução para os arquivos
chmod +x /etc/kernel/postinst.d/zz-ukify
chmod +x /etc/initramfs/post-update.d/zz-ukify
Crie a pasta se não existir
mkdir -p /boot/efi/EFI/Linux
Atualize o initramfs se não existir do kernel que está em execução
update-initramfs -u
Reinicie e veja se funciona iniciando com a imagem efi criada
Se funcionar gere todas as imagens
sudo update-initramfs -u -k all
Caso esteja tudo funcionado , pode apagar as entradas dentro da pasta /boot/efi/loader/entries/