AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / unix / Perguntas / 769760
Accepted
Dave
Dave
Asked: 2024-02-21 05:44:23 +0800 CST2024-02-21 05:44:23 +0800 CST 2024-02-21 05:44:23 +0800 CST

Como habilito a inicialização segura UEFI para uma compilação Linux feita com o yocto?

  • 772

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?

linux
  • 1 1 respostas
  • 47 Views

1 respostas

  • Voted
  1. Best Answer
    telcoM
    2024-02-22T02:35:12+08:002024-02-22T02:35:12+08:00

    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 dbvariável key, já que é a lista de permissões: a menos que esteja especificamente na lista negra, qualquer *.efiassinatura com uma chave que esteja na variável da lista de permissões terá permissão para ser executada pelo Secure Boot.

    A dbxvariá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 KEKvariável chave controla atualizações (programáticas?) Para dbe dbxenquanto a inicialização segura está no modo normal. Se possível, você também desejará sua chave nesta variável.

    A PKvariá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.pemarquivo é 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 *.cerou *.crt), tente convertê-lo para um formato DER:

    openssl x509 -in OvmfPkKek1.pem -inform PEM -out OvmfPkKek1.cer -outform DER
    

    O sufixo do arquivo DER pode ser *.cerou *.crt.

    Algumas interfaces de usuário UEFI esperam especificamente arquivos de lista de assinaturas EFI*.esl ( ), que você pode gerar usando o efisiglistcomando, que provavelmente pode ser encontrado em um package pesign, ou o cert-to-efi-sig-listcomando de package efitools.

    Para converter um certificado no formato DER em uma lista de assinaturas EFI:

    efisiglist --outfile OvmfPkKek1.esl --add --certificate=OvmfPkKek1.cer
    

    ou

    cert-to-efi-sig-list OvmfPkKek1.cer OvmfPkKek1.esl
    

    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-listcomando no efitoolspacote pode gerar *.autharquivos de *.esls. Observe que você terá que criar um *.autharquivo separado para cada variável de chave, mesmo se usar a mesma chave:

    sign-efi-sig-list -a -c OvmfPkKek1.pem -k OvmfPkKek1.key db OvmfPkKek1.esl signed-key-for-db.auth
    sign-efi-sig-list -a -c OvmfPkKek1.pem -k OvmfPkKek1.key KEK OvmfPkKek1.esl signed-key-for-KEK.auth
    sign-efi-sig-list -a -c OvmfPkKek1.pem -k OvmfPkKek1.key PK OvmfPkKek1.esl signed-key-for-PK.auth
    
    • 1

relate perguntas

  • Existe uma maneira de fazer ls mostrar arquivos ocultos apenas para determinados diretórios?

  • Inicie/pare o serviço systemd usando o atalho de teclado [fechado]

  • Necessidade de algumas chamadas de sistema

  • astyle não altera a formatação do arquivo de origem

  • Passe o sistema de arquivos raiz por rótulo para o kernel do Linux

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Possível firmware ausente /lib/firmware/i915/* para o módulo i915

    • 3 respostas
  • Marko Smith

    Falha ao buscar o repositório de backports jessie

    • 4 respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    user12345 Falha ao buscar o repositório de backports jessie 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl Por que a maioria dos exemplos do systemd contém WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve