Boa noite, depois de pesquisar no google não encontrei a resposta para minha dúvida.
Ao instalar uma distribuição como o Ubuntu com inicialização segura ativada, o instalador cria uma chave MOK na NVRAM que pode ser vista com 'mokutil -l'.
Mais tarde, decido mudar a distribuição para o Fedora, o instalador irá inserir sua própria chave na NVRAM que posso ver com 'mokutil -l' mas a chave do Ubuntu não é visível no Fedora.
Isso significa que cada distribuição cria seu próprio banco de dados na NVRAM? É possível ver as chaves instaladas anteriormente de outras distribuições? Para limpar a NVRAM desses MOKs antigos de distribuições antigas?
Isto é por razões de segurança, mas também para economizar espaço. Como a quantidade de NVRAM é muito pequena, não há risco de ela ficar cheia se você instalar com frequência?
Restaurar as configurações de fábrica do Secure Boot no UEFI redefine as chaves PEK, KEK, DB e DBX, mas não parece remover as chaves MOK no meu caso.
O conceito de MOK não faz parte oficialmente do Secure Boot da Microsoft. Ele é implementado pelo Shim, um carregador especial que na verdade substitui o manuseio do Secure Boot do firmware – ele possui seu próprio código de verificação de assinatura que permite que carregadores assinados por MOK ignorem completamente a verificação SB integrada.
Portanto, o banco de dados MOK é armazenado como uma variável EFI NVRAM comum chamada
MokList
, com a única proteção sendo marcada como "visível apenas para inicializar serviços", ou seja, você pode vê-lo de dentro do ambiente EFI Shell, mas não/sys/firmware/efi/efivars
de um sistema operacional em execução. (Shim cria uma cópia somente leitura nomeadaMokListRT
para o mokutil do Linux ver.)As variáveis EFI têm namespaces por GUID do fornecedor, portanto, em teoria, duas cópias do Shim (vindos de fontes diferentes) poderiam ter variáveis MokList independentes, e apenas aquela suportada pelo Shim do Fedora seria visível como MokListRT no Fedora. (Não sei se esse é realmente o caso.) Uma nova instalação do Ubuntu veria o Ubuntu MOK anterior.
Uma maneira muito manual de limpar as coisas é baixar o EFI Shell e configurar o sistema para inicializar nele. A partir daí, você poderá usar o Ubuntu
MokUtil.efi
- ou executardmpstore -b
para obter uma lista de todas as variáveis EFI (incluindo as somente do Boot Services), procurando por qualquer instância de 'Mok' e, em seguida, excluí-las uma por uma usandodmpstore -d <name> -guid <guid>
.Na saída do dmpstore,
NV
significa não volátil (por exemplo, MokStore é NV enquanto MokStoreRT não é NV e existe apenas na RAM temporária);BS
meios disponíveis para inicializar serviços (aplicativos EFI); eRT
meios disponíveis para serviços de tempo de execução (visíveis pelo sistema operacional).