Em primeiro lugar: gere uma chave própria
openssl req -new -nodes -utf8 -sha256 -days 36500 -batch -x509 \
-subj "/ CN = Chave do Kernel" - executa o DER - sai kernel.der \
-keyout kernel.key
Tente compilar o kernel do linux com o CONFIG_EFI_STUB e incorpore o initramfs como descrito aqui: https://prosauce.org/blog/2015/10/31/booting-linux-security , para assinar os módulos que você pode usar no próximo script:
/ usr / src / linux-headers - $ (uname -r) / scripts / arquivo de sinal sha256 kernel.key kernel.der module.ko
Em seguida, crie um arquivo com o cmdline do kernel para o seu laptop \ estação de trabalho e crie uma imagem e copie-a para o diretório de inicialização efi, como este:
# objcopy \
--add-section .osrel = / etc / os-release --change-section-vma .osrel = 0x20000 \
--add-section .cmdline = / tmp / cmdline --change-section-vma .cmdline = 0x30000 \
--add-section .linux = / boot / vmlinuz --change-section-vma .linux = 0x2000000 \
--add-section .initrd = / boot / initrd.img --change-section-vma .initrd = 0x3000000 \
/usr/lib/systemd/boot/efi/linuxx64.efi.stub linux.efi
# mkdir -p / boot / efi / EFI / BOOT
# sbsign --key /root/keys/ISK.key --cert /root/keys/ISK.pem --output /boot/efi/EFI/BOOT/BOOTX64.EFI linux.efi / boot / efi / EFI / BOOT /BOOTX64.EFI
Para instalar a própria chave no firmware MB, você pode fazer cmds assim:
openssl x509 -inform der -in kernel.der -outform pem -out kernel.pem
cert-to-efi-sig-list -g "$ (uuidgen)" kernel.pem kernel.esl
sign-efi-sig-list -k KEK.key -c KEK.pem kernel.esl kernel.auth