Estou produzindo uma compilação do yocto e quero ativar o UEFI Secure Boot na máquina Intel que estou usando. Esta é uma construção yocto bastante básica, usando core-image-minimal e meta-intel. Os artefatos que ele produz são semelhantes a:
./core-image-minimal-intel-corei7-64.wic
./bzImage-intel-corei7-64.bin
./bzImage--6.1.38+git0+d62bfbd59e_11e606448a-r0-intel-corei7-64-20240208204456.bin
./core-image-minimal-intel-corei7-64.manifest
./OvmfPkKek1.crt
./OvmfPkKek1.pem
./systemd-bootx64.efi
./core-image-minimal-intel-corei7-64-20240215181510.rootfs.tar.xz
./microcode.cpio
./modules-intel-corei7-64.tgz
./core-image-minimal-intel-corei7-64-20240215181510.rootfs.manifest
./microcode_20230808.cpio
./modules--6.1.38+git0+d62bfbd59e_11e606448a-r0-intel-corei7-64-20240208204456.tgz
./bzImage
./core-image-minimal-intel-corei7-64-20240215181510.testdata.json
./grub-efi-bootx64.efi
./ovmf.vars.qcow2
./core-image-minimal-intel-corei7-64.qemuboot.conf
./ovmf.secboot.code.qcow2
./linuxx64.efi.stub
./OvmfPkKek1.key
./ovmf.secboot.qcow2
./core-image-minimal-intel-corei7-64.tar.xz
./core-image-minimal-intel-corei7-64-20240215181510.rootfs.wic
./ovmf.code.qcow2
./core-image-minimal.env
./core-image-minimal-systemd-bootdisk-microcode.wks
./ovmf.qcow2
./core-image-minimal-intel-corei7-64-20240215181510.qemuboot.conf
./core-image-minimal-intel-corei7-64.testdata.json
Minha partição de inicialização se parece com:
./loader
./loader/loader.conf
./loader/entries
./loader/entries/boot.conf
./EFI
./EFI/BOOT
./EFI/BOOT/bootx64.efi
./bzImage
Não consigo descobrir como ativar a inicialização segura usando esses arquivos. Existe uma opção para registrar uma assinatura e, quando faço isso usando o arquivo bootx64.efi e tento inicializar, recebo algum tipo de erro bzImage e algo sobre uma violação da política de segurança.
Recebo erros semelhantes (mas diferentes) quando tento fazer o mesmo processo em uma instalação aleatória do Kali Linux a partir de uma unidade USB.
Existem também opções uefi como "inscrever assinatura", "inscrever PK", "inscrever KEK", etc., e eu tentei estas na esperança de poder selecionar os arquivos OvmfPkKek1* que yocto está produzindo, assumindo que essas são as chaves, mas elas não aparecem no disco ao navegar na minha partição de inicialização através da interface uefi, mesmo que eu os tenha copiado. Não sei por quê.
Alguma idéia de como fazer esta instalação funcionar com inicialização segura?
Tente limpar o PK (chave primária) antes de tentar inserir outras chaves. Isso deve colocar a inicialização segura no modo de configuração , no qual deve haver restrições mínimas nas principais atualizações. Depois de atualizar quaisquer outras variáveis de chave do Secure Boot para atender às suas necessidades, insira sua chave como PK para retornar o Secure Boot ao modo normal.
Primeiramente, você desejará sua chave na
db
variável key, já que é a lista de permissões: a menos que esteja especificamente na lista negra, qualquer*.efi
assinatura com uma chave que esteja na variável da lista de permissões terá permissão para ser executada pelo Secure Boot.A
dbx
variável chave é a lista negra: ao carregar qualquer arquivo assinado com uma chave da lista negra, ou cujo hash corresponda a um hash da lista negra, o firmware interromperá o carregamento e/ou não permitirá sua execução.A
KEK
variável chave controla atualizações (programáticas?) Paradb
edbx
enquanto a inicialização segura está no modo normal. Se possível, você também desejará sua chave nesta variável.A
PK
variável controla as atualizações da variável KEK e contém apenas uma chave - de preferência a sua, em vez da chave padrão do fabricante do sistema.Provavelmente, seu
OvmfPkKek1.pem
arquivo é necessário para UEFI, mas existem vários formatos possíveis que ele pode esperar.Se o firmware não conseguir ler um arquivo PEM (no estado em que se encontra ou com um sufixo
*.cer
ou*.crt
), tente convertê-lo para um formato DER:O sufixo do arquivo DER pode ser
*.cer
ou*.crt
.Algumas interfaces de usuário UEFI esperam especificamente arquivos de lista de assinaturas EFI
*.esl
( ), que você pode gerar usando oefisiglist
comando, que provavelmente pode ser encontrado em um packagepesign
, ou ocert-to-efi-sig-list
comando de packageefitools
.Para converter um certificado no formato DER em uma lista de assinaturas EFI:
ou
Embora não esteja no modo de configuração de inicialização segura (ou seja, enquanto o PK estiver definido), é possível que a interface do usuário do firmware aceite apenas arquivos ESL assinados com uma chave de inicialização segura cujo certificado esteja na variável de chave KEK ou PK . Isso segue as mesmas regras da atualização programática das chaves de inicialização segura de um sistema operacional em execução. Nesse caso, o sufixo de arquivo esperado para eles poderia ser
*.auth
.O
sign-efi-sig-list
comando noefitools
pacote pode gerar*.auth
arquivos de*.esl
s. Observe que você terá que criar um*.auth
arquivo separado para cada variável de chave, mesmo se usar a mesma chave: