vmlinuz-4.18.12-041812-generic possui assinatura inválida


15

Atualizei meu kernel hoje com o ukuu e, desde então, não consigo inicializar porque estou recebendo esses erros:

error: /boot/vmlinuz-4.18.12-041812-generic has invalid signature
error: you need to load the kernel first

Eu tenho dual boot com o windows 10 e o ubuntu 18.10 (atualizado hoje)

Atualização: Eu consegui inicializar no kernel mais antigo que eu escolhi em "Opções avançadas para Ubuntu" no grub

Mas preciso atualizar meu kernel e, se fizer isso, continuo com o mesmo problema ...


Estou enfrentando esse mesmo problema agora após atualizar o firmware do meu Lenovo T480 e não entendo por que os kernels mais antigos ainda funcionam.
User205301

Respostas:


5

Em vez de assinar o kernel em questão, acabei de desligar o Secure Boot no menu BIOS / UEFI do meu laptop.

Geralmente, você pode entrar no menu pressionando uma tecla especial durante a inicialização , pode pesquisar no google uma específica para o seu dispositivo ou pode até aparecer na tela durante a inicialização.


Obrigado! Acabei de atualizar meu BIOS e esqueci de desabilitar isso!
Lucas Bustamante

5

https://github.com/jakeday/linux-surface/blob/master/SIGNING.md possui instruções mais específicas sobre assinatura de kernel (adaptadas do mesmo tutorial vinculado na resposta aceita). As instruções são reproduzidas na íntegra da seguinte maneira:

Assinando um kernel personalizado para inicialização segura

As instruções são para o ubuntu, mas devem funcionar de maneira semelhante para outras distribuições, se estiverem usando shim e grub como gerenciador de inicialização. Se sua distribuição não estiver usando o shim (por exemplo, Linux Foundation Preloader), deve haver etapas semelhantes para concluir a assinatura (por exemplo, HashTool em vez do MokUtil for LF Preloader) ou você pode instalar o shim para usá-lo. O pacote ubuntu para shim é chamado shim-signed, mas informe-se sobre como instalá-lo corretamente, para não atrapalhar o seu gerenciador de inicialização.

Desde a atualização mais recente do GRUB2 (2.02 + dfsg1-5ubuntu1) no Ubuntu, o GRUB2 não carrega mais kernels não assinados, desde que o Secure Boot esteja ativado. Os usuários do Ubuntu 18.04 serão notificados durante a atualização do pacote grub-efi, de que este kernel não está assinado e a atualização será cancelada.

Portanto, você tem três opções para resolver esse problema:

  1. Você assina o kernel você mesmo.
  2. Você usa um kernel assinado e genérico da sua distribuição.
  3. Você desabilita a Inicialização segura.

Como as opções dois e três não são realmente viáveis, estas são as etapas para assinar o kernel você mesmo.

Instruções adaptadas do Ubuntu Blog . Antes de seguir, faça backup do diretório / boot / EFI, para que você possa restaurar tudo. Siga estas etapas por sua conta e risco.

  1. Crie a configuração para criar a chave de assinatura, salve como mokconfig.cnf:
# This definition stops the following lines failing if HOME isn't
# defined.
HOME                    = .
RANDFILE                = $ENV::HOME/.rnd 
[ req ]
distinguished_name      = req_distinguished_name
x509_extensions         = v3
string_mask             = utf8only
prompt                  = no

[ req_distinguished_name ]
countryName             = <YOURcountrycode>
stateOrProvinceName     = <YOURstate>
localityName            = <YOURcity>
0.organizationName      = <YOURorganization>
commonName              = Secure Boot Signing Key
emailAddress            = <YOURemail>

[ v3 ]
subjectKeyIdentifier    = hash
authorityKeyIdentifier  = keyid:always,issuer
basicConstraints        = critical,CA:FALSE
extendedKeyUsage        = codeSigning,1.3.6.1.4.1.311.10.3.6
nsComment               = "OpenSSL Generated Certificate"

Ajuste todas as peças com os seus detalhes.

  1. Crie a chave pública e privada para assinar o kernel:
openssl req -config ./mokconfig.cnf \
        -new -x509 -newkey rsa:2048 \
        -nodes -days 36500 -outform DER \
        -keyout "MOK.priv" \
        -out "MOK.der"
  1. Converta a chave também no formato PEM (mokutil precisa de DER, sbsign precisa de PEM):
openssl x509 -in MOK.der -inform DER -outform PEM -out MOK.pem
  1. Registre a chave da sua instalação do shim:
sudo mokutil --import MOK.der

Você será solicitado a fornecer uma senha; basta usá-la para confirmar sua seleção de chave na próxima etapa; portanto, escolha uma.

  1. Reinicie seu sistema. Você encontrará uma tela azul de uma ferramenta chamada MOKManager. Selecione "Registrar MOK" e, em seguida, "Visualizar chave". Verifique se foi a sua chave que você criou na etapa 2. Depois, continue o processo e digite a senha que você forneceu na etapa 4. Continue com a inicialização do sistema.

  2. Verifique se sua chave está registrada via:

sudo mokutil --list-enrolled
  1. Assine o kernel instalado (ele deve estar em / boot / vmlinuz- [KERNEL-VERSION] -surface-linux-surface):
sudo sbsign --key MOK.priv --cert MOK.pem /boot/vmlinuz-[KERNEL-VERSION]-surface-linux-surface --output /boot/vmlinuz-[KERNEL-VERSION]-surface-linux-surface.signed
  1. Copie o initram do kernel não assinado, para que também tenhamos um initram para o assinado.
sudo cp /boot/initrd.img-[KERNEL-VERSION]-surface-linux-surface{,.signed}
  1. Atualize seu grub-config
sudo update-grub
  1. Reinicie seu sistema e selecione o kernel assinado. Se a inicialização funcionar, você poderá remover o kernel não assinado:
sudo mv /boot/vmlinuz-[KERNEL-VERSION]-surface-linux-surface{.signed,}
sudo mv /boot/initrd.img-[KERNEL-VERSION]-surface-linux-surface{.signed,}
sudo update-grub

Agora seu sistema deve ser executado sob um kernel assinado e a atualização do GRUB2 funciona novamente. Se você deseja atualizar o kernel personalizado, pode assinar a nova versão facilmente seguindo as etapas acima novamente a partir da etapa sete. Assim, faça backup das teclas MOK (MOK.der, MOK.pem, MOK.priv).


Resposta excelente, eu não poderia ter chegado lá apenas com as instruções do Ubuntu
User632716 21/01

Ótimo atalho para renomear e sobrescrever arquivos com correções posteriores.
Tom

1

Resolvi meu problema seguindo este tutorial para assinar o arquivo / boot / vmlinuz para uma inicialização segura, observe a última parte do tutorial


6
Você poderia fornecer informações detalhadas sobre como resolver esse problema? Tenho absolutamente o mesmo erro, mas não entendo o que devo fazer de acordo com o tutorial mencionado.
Slon

Não me lembro agora, vou tentar ajudá-lo mais tarde neste dia, se ainda for relevante
Nadav Shabtai 12/03/19

É relevante para mim também. Eu tenho o mesmo problema #
Vitalii Diravka

Só encontrei isso, eu preciso disso também
Mitch Talmadge

1
Parece ser uma "resposta apenas para links". Edite a pergunta e forneça alguns detalhes para ajudar outros usuários que têm o mesmo problema. Obrigado!
Mchid 30/07/19
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.