Мы только что запустились. Сайт и сервис ещё дорабатываются — заранее просим прощения за возможные неточности и огрехи. Заметили ошибку или что-то работает не так? Напишите нам — быстро исправим.

← Все проекты
RU
Не только TAKT

zbm-openwrt-clevis

Загрузочная среда на основе OpenWrt, собранная в один UKI: разблокирует корень ZFS с нативным шифрованием с помощью clevis и TPM, а затем загружает целевую систему Linux через донорскую среду ZFSBootMenu.

  • OpenWrt
  • ZFS
  • TPM 2.0
  • Clevis
Статус
Релизы с тегами 0.90–0.95. Цепочка загрузки проверена в лаборатории на QEMU с OVMF и swtpm: загружается Ubuntu с зашифрованного ZFS.
Лицензия
Не указана: в репозитории нет файла лицензии.
Платформы
Машины x86-64 с UEFI, TPM 2.0 и rEFInd; внутри UKI — OpenWrt 25.12.

Какую задачу решает

ZFSBootMenu хорошо загружает зашифрованный ZFS, но ожидает, что ключ введёт человек. Для удалённого сервера или машины без присмотра этого мало: оператор не может знать, принадлежит ли запрос ключа той загрузочной среде, которой он доверял раньше. Здесь ключ выдаётся автоматически, только пока измерения TPM совпадают с состоянием, которое оператор одобрил при последнем перезапечатывании. Иначе автоматическая загрузка останавливается, оператор получает уведомление, а защищённая паролем система OpenWrt ждёт ручного решения.

Основные возможности

  • Автоматическая разблокировка, привязанная к PCR TPM через clevis; проверенная политика clevis.pcr_ids=1,4,5,7,9 покрывает и командную строку ядра, которую передаёт rEFInd.
  • Запасной путь — полноценная система OpenWrt со входом по паролю или SSH-ключу, а не оболочка без пароля; в базовом образе root заблокирован.
  • Ручная разблокировка и перезапечатывание под новое измеренное состояние через консоль или SSH, в том числе по Wi-Fi или с двумя WAN-каналами.
  • Три хранилища для запечатанного JWE: свойства ZFS, переменные EFI или файл на разделе VFAT.
  • Обновление ядра и initramfs целевой системы не требует новой ручной разблокировки: они лежат внутри зашифрованного пула, вне измеряемой среды.
  • Необязательное сообщение в Telegram при сбое автоматической разблокировки; инструменты для ремонта дисков и сети в образе.

Как это работает

rEFInd загружает один UKI с OpenWrt и передаёт ему политику в командной строке ядра. При загрузке zbm-auto-boot запускает zbm-start; хук load-key просит clevis восстановить ключ и передаёт его донорской среде ZFSBootMenu, которая читает ядро и initramfs целевой системы с зашифрованного корня и запускает их через kexec. Автоматический и ручной вход идут одним путём и делят одну блокировку. Пул импортируется только для чтения, кроме короткой записи, когда перезапечатывание сохраняет результат в свойствах ZFS.

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

Требования

  • Целевая система на корне ZFS с нативным шифрованием и ключом из файла (keylocation=file://…).
  • UEFI, rEFInd как менеджер загрузки и TPM 2.0; политика задаётся в строке options rEFInd.
  • Сборочный хост: сборка через OpenWrt ImageBuilder из репозитория, ukify, refind и обычные инструменты сборки.
  • Лаборатория: qemu-system-x86_64, OVMF и swtpm; проверенная целевая система — Ubuntu на зашифрованном ZFS.

Эта страница кратко пересказывает README и документацию репозитория по состоянию на октябрь 2026 года. Первоисточник — сам репозиторий.