#!/bin/bash trap '' INT TERM TSTP PIPE clear echo -e "\033[1;36m=== Melawy OS Remote Decryption Infrastructure ===\033[0m" echo -e "Хост: Защищенный рантайм Initramfs (Dracut Layer)" echo -e "Статус: Ожидание разблокировки LUKS-контейнеров...\n" unlock_volumes() { local attempts=0 local max_attempts=5 while [ $attempts -lt $max_attempts ]; do read -s -p "Введите мастер-пароль Melawy OS: " passphrase echo "" if [ -z "$passphrase" ]; then echo -e "\033[1;31m[Ошибка] Пароль не может быть пустым.\033[0m\n" ((attempts++)) continue fi echo "Проверка сигнатур и расшифровка контейнеров..." local success=true for dev in /dev/disk/by-id/* /dev/sd* /dev/nvme* 2>/dev/null; do if [ -b "$dev" ] && cryptsetup isLuks "$dev" 2>/dev/null; then local uuid=$(cryptsetup luksUUID "$dev" 2>/dev/null) if [ ! -b "/dev/mapper/luks-$uuid" ]; then echo "-> Открываем контейнер UUID: $uuid ($dev)..." echo -n "$passphrase" | cryptsetup open "$dev" "luks-$uuid" 2>/dev/null if [ $? -ne 0 ]; then success=false; fi fi fi done if [ "$success" = true ]; then echo -e "\n\033[1;32m[Успех] Все LUKS-контейнеры успешно расшифрованы!\033[0m" if [ -f /tmp/cryptroot-asked ]; then echo "1" > /tmp/cryptroot-asked; fi systemctl restart systemd-cryptsetup@* 2>/dev/null || true udevadm trigger --action=change 2>/dev/null || true sleep 2 exit 0 else echo -e "\033[1;31m[Сбой] Неверный мастер-пароль.\033[0m" local remaining=$((max_attempts - attempts - 1)) echo -e "Осталось попыток: $remaining\n" ((attempts++)) fi done exit 1 } unlock_volumes