#!/bin/bash # Проверка зависимостей: модуль загрузится только если в образе есть сеть и крипто-стек check() { require_binaries cryptsetup || return 1 return 0 } # Описываем зависимости от других системных модулей dracut depends() { echo "systemd-networkd sshd crypt" return 0 } # Главный конвейер сборки: указываем, что физически запечь в initramfs install() { # 1. Затягиваем сам исполняемый файл шелла разблокировки inst_multiple /usr/bin/luks-unlock-shell # 2. Интегрируем наш кастомный SSH-конфиг и таблицы fstab if [ -f /etc/crypto-sshd_config ]; then inst_simple /etc/fstab inst_simple /etc/crypto-sshd_config fi # КЛЮЧЕВОЙ ПРОБРОС: Жестко впекаем хост-ключи хоста в ОЗУ рамдиска inst_simple /etc/ssh/ssh_host_rsa_key inst_simple /etc/ssh/ssh_host_ed25519_key # 3. Регистрируем рантайм-хук очистки перед pivot_root inst_hook pre-pivot 90 "$moddir/luks-unlock-cleanup.sh" }