Eu tenho um laptop rodando 20.04 (não secure-boot
, dê um título old
). Eu queria mover o disco de inicialização para um novo laptop (intitulado new
) que tenha inicialização segura habilitada. Não quero desabilitar secure boot
o on new
, porque tenho o Windows instalado new
com requisitos para mantê-lo secure boot
habilitado.
Para testar se isso era possível new
, conectei minha mídia ao vivo de instalação original (a xubuntu 18.04
imagem de inicialização ao vivo de 2019 em USB, usada para instalar old
) e tentei inicializá new
-la. Isso funcionou perfeitamente.
Em seguida, peguei o disco de inicialização old
, conectei-o new
, selecionei o disco como mídia de inicialização e acessei o console do grub. Foi aqui que fiquei preso com a seguinte mensagem de erro:
Loading Linux 5.4.0-70-generic ...
error: bad shim signature.
Loading initial ramdisk ...
error: you need to load the kernel first.
Press any key to continue...
Inicializei old
para comparar o kernel na mídia de inicialização com o kernel no disco:
samveen@samveen-X230:~$ sudo sbverify --list /media/temp/casper/vmlinuz
signature 1
image signature issuers:
- /C=GB/ST=Isle of Man/L=Douglas/O=Canonical Ltd./CN=Canonical Ltd. Master Certificate Authority
image signature certificates:
- subject: /C=GB/ST=Isle of Man/O=Canonical Ltd./OU=Secure Boot/CN=Canonical Ltd. Secure Boot Signing
issuer: /C=GB/ST=Isle of Man/L=Douglas/O=Canonical Ltd./CN=Canonical Ltd. Master Certificate Authority
samveen@samveen-X230:/media/temp/casper$ sudo sbverify --list /boot/vmlinuz-5.4.0-70-generic
signature 1
image signature issuers:
- /C=GB/ST=Isle of Man/L=Douglas/O=Canonical Ltd./CN=Canonical Ltd. Master Certificate Authority
image signature certificates:
- subject: /C=GB/ST=Isle of Man/O=Canonical Ltd./OU=Secure Boot/CN=Canonical Ltd. Secure Boot Signing (2017)
issuer: /C=GB/ST=Isle of Man/L=Douglas/O=Canonical Ltd./CN=Canonical Ltd. Master Certificate Authority
Ambos estão assinados e válidos, então verifiquei a cadeia do bootloader (shim e grub):
samveen@samveen-X230:~$ sudo sbverify --list /boot/efi/EFI/ubuntu/shimx64.efi
warning: data remaining[834920 vs 960472]: gaps between PE/COFF sections?
signature 1
image signature issuers:
- /C=US/ST=Washington/L=Redmond/O=Microsoft Corporation/CN=Microsoft Corporation UEFI CA 2011
image signature certificates:
- subject: /C=US/ST=Washington/L=Redmond/O=Microsoft Corporation/CN=Microsoft Windows UEFI Driver Publisher
issuer: /C=US/ST=Washington/L=Redmond/O=Microsoft Corporation/CN=Microsoft Corporation UEFI CA 2011
- subject: /C=US/ST=Washington/L=Redmond/O=Microsoft Corporation/CN=Microsoft Corporation UEFI CA 2011
issuer: /C=US/ST=Washington/L=Redmond/O=Microsoft Corporation/CN=Microsoft Corporation Third Party Marketplace Root
samveen@samveen-X230:~$ sudo sbverify --list /boot/efi/EFI/ubuntu/grubx64.efi
signature 1
image signature issuers:
- /C=GB/ST=Isle of Man/L=Douglas/O=Canonical Ltd./CN=Canonical Ltd. Master Certificate Authority
image signature certificates:
- subject: /C=GB/ST=Isle of Man/O=Canonical Ltd./OU=Secure Boot/CN=Canonical Ltd. Secure Boot Signing (2022 v1)
issuer: /C=GB/ST=Isle of Man/L=Douglas/O=Canonical Ltd./CN=Canonical Ltd. Master Certificate Authority
samveen@samveen-X230:~$ sudo sbverify --list /boot/efi/EFI/ubuntu/mmx64.efi
warning: data remaining[742792 vs 860824]: gaps between PE/COFF sections?
signature 1
image signature issuers:
- /C=GB/ST=Isle of Man/L=Douglas/O=Canonical Ltd./CN=Canonical Ltd. Master Certificate Authority
image signature certificates:
- subject: /C=GB/ST=Isle of Man/O=Canonical Ltd./OU=Secure Boot/CN=Canonical Ltd. Secure Boot Signing (2022 v1)
issuer: /C=GB/ST=Isle of Man/L=Douglas/O=Canonical Ltd./CN=Canonical Ltd. Master Certificate Authority
Tudo isso é válido, podendo Canonical Ltd. Master CA
validar tudo.
O que estou faltando aqui que está causando a falha na inicialização?
Depois de investigar muito mais, descobri que o certificado usado para assinar o kernel que eu estava inicializando estava no banco de dados de assinatura proibida de inicialização segura ( )
dbx
(Canonical Ltd. Secure Boot Signing (2017)
).Para corrigir o problema, tive que atualizar para o
image-generic
kernel mais recentelinux-image-5.4.0-172-generic
(assinado pela CA mais recente) em vez do desatualizadolinux-image-5.4.0-70-generic
que eu estava usando.Alguns outros problemas com drivers ausentes foram corrigidos com a substituição da
image-generic
série de kernel pela série de kernel Hardware Enablementlinux-generic-hwe-20.04
. Mais detalhes em https://wiki.ubuntu.com/Kernel/LTSEnablementStackA assinatura dos módulos DKMS já foi implementada, mesmo em
old
(mesmo que não tenha sido utilizada), com a chave do proprietário da máquina já criada quando instalei o sistema operacional pela primeira vez (xubuntu 18.04 emold
, em 2019). Eu só precisava inscrever meu MOK no Shim seguindo o processo documentado em https://wiki.ubuntu.com/UEFI/SecureBoot . Editar: eu precisava disso apenas para carregar módulos upstream do kernel do VirtualBox construídos por DKMS, caso contrário, esta etapa não era necessária.Nota lateral : eu instalei o Xubuntu
18.04
emold
2019 e depois passei pelo processo de atualização dist20.04
no início de 2021. A configuração de inicialização segura criada na instalação era válida emnew
2024 (5 anos após a instalação) mesmo após a atualização dist para20.04
. Isso é um grande planejamento para a preparação futura do Ubuntu. Embora eu esteja insatisfeito com a forma como22.04
está estruturado e esteja planejando mudar para o Debian upstream eventualmente, a série de kernel é uma boa aposta até mesmo para os laptops mais recentes20.04
.hwe