Acabamos de lançar. O site e o serviço ainda estão sendo aprimorados — pedimos desculpas desde já por eventuais imprecisões ou falhas. Encontrou um erro ou algo não funciona como esperado? Escreva para nós e corrigiremos rapidamente.

← Todos os projetos
PT
Além do TAKT

zbm-openwrt-clevis

Um ambiente de boot baseado em OpenWrt, gerado como uma única UKI, que desbloqueia uma raiz ZFS com criptografia nativa usando clevis e o TPM e depois inicia o sistema Linux de destino por meio de um ambiente ZFSBootMenu doador.

  • OpenWrt
  • ZFS
  • TPM 2.0
  • Clevis
Status
Releases com tag 0.90–0.95. A cadeia de boot é validada em um laboratório QEMU com OVMF e swtpm, iniciando o Ubuntu a partir de ZFS criptografado.
Licença
Não informada: o repositório não tem arquivo de licença.
Plataformas
Máquinas UEFI x86-64 com TPM 2.0 e rEFInd; OpenWrt 25.12 dentro da UKI.

O que resolve

O ZFSBootMenu inicia bem o ZFS criptografado, mas espera que uma pessoa digite a chave. Em um servidor remoto ou em uma máquina sem supervisão, isso não basta: o operador não consegue saber se o prompt pertence ao ambiente de boot em que ele confiava antes. Aqui a chave só é liberada automaticamente enquanto as medições do TPM coincidem com o estado que o operador aprovou na última reselagem. Caso contrário, o boot automático para, o operador é notificado e um sistema OpenWrt protegido por senha aguarda uma decisão manual.

Principais recursos

  • Desbloqueio automático vinculado aos PCRs do TPM via clevis; a política validada clevis.pcr_ids=1,4,5,7,9 também cobre a linha de comando do kernel passada pelo rEFInd.
  • Fallback para um sistema OpenWrt completo com login por senha ou chave SSH, e não para um shell sem senha; o root fica bloqueado na imagem base.
  • Desbloqueio manual e reselagem para um novo estado medido pelo console ou por SSH, inclusive via Wi-Fi ou com dois uplinks WAN.
  • Três backends de armazenamento para o JWE selado: propriedades do ZFS, variáveis EFI ou um arquivo em uma partição VFAT.
  • Atualizar o kernel e o initramfs de destino não exige novo desbloqueio manual: eles ficam dentro do pool criptografado, fora do ambiente medido.
  • Mensagem opcional no Telegram quando o desbloqueio automático falha; ferramentas de reparo de disco e de rede na imagem.

Como funciona

O rEFInd carrega uma única UKI do OpenWrt e passa a ela a política na linha de comando do kernel. No boot, zbm-auto-boot executa zbm-start; o hook load-key pede ao clevis que recupere a chave e a entrega ao ambiente ZFSBootMenu doador, que lê o kernel e o initramfs de destino da raiz criptografada e os inicia com kexec. A entrada automática e a manual seguem o mesmo caminho e compartilham um único lock. O pool é importado como somente leitura, exceto por uma breve gravação quando uma reselagem salva o resultado em propriedades do ZFS.

UEFI → rEFInd → OpenWrt UKI → zbm-auto-boot → zbm-start
     → load-key hook / clevis → ZFSBootMenu → kexec → Ubuntu (ZFS)

Requisitos

  • Um sistema de destino com raiz ZFS com criptografia nativa e chave em arquivo (keylocation=file://…).
  • UEFI, rEFInd como gerenciador de boot e um TPM 2.0; a política fica na linha de opções do rEFInd.
  • Máquina de build: o fluxo com OpenWrt ImageBuilder do repositório, ukify, refind e as ferramentas de build habituais.
  • Laboratório: qemu-system-x86_64, OVMF e swtpm; o destino validado é o Ubuntu sobre ZFS criptografado.

Esta página resume o README e a documentação do repositório em outubro de 2026. A fonte de referência é o próprio repositório.