Обновления ядра нарушают авторазблокировку – Cryptsetup

Вопрос или проблема

Обновление версии ядра вызывает сбой автоматической разблокировки. Я настроил свою систему Ubuntu 22.04 на автоматическое обновление каждую неделю с помощью unattended upgrades. При обновлении ядра, например:

│ Доступна более новая версия ядра
│ 
│ В настоящее время запущенная версия ядра - 5.15.0-118-generic, а ожидаемая версия ядра - 5.15.0-119-generic.
│                                                                                                                                                        
│ Перезагрузка системы для загрузки нового ядра не будет выполнена автоматически, поэтому вы должны рассмотреть возможность перезагрузки.

Автоматическая разблокировка не работает. Похоже, что обновления ядра требуют перезагрузки для применения обновлений, но они не могут быть завершены без ручного ввода пароля шифрования диска. После перезагрузки мне нужно заново настроить шифрование диска, сначала запустив:
sudo clevis luks unbind -d <partition> -s <SLOT_NUMBER>, а затем повторно настроить crypt setup, запустив:
clevis luks bind -d <partition> tpm2 { "pcr_bank":"sha256", "pcr_ids": "<pcr_ids>" }' и update-initramfs -u -k 'all'. Не имеет значения, генерируем ли мы образ загрузки с помощью update-initramfs перед перезагрузкой или нет. Если я запущу clevis luks list -d <partition>, я вижу, что вывод правильный. Поиск информации по этой проблеме не дал никаких результатов. Есть ли какая-либо конфигурация, которую я мог бы упустить, или какую-либо конфигурацию, которую я мог бы добавить?

  1. На Ubuntu 22.04 настройте шифрование диска с автоматической разблокировкой.
  2. Запустите sudo apt update и sudo apt upgrade, чтобы инициировать обновление версии ядра.
  3. Перезагрузите.
  4. При загрузке требуется ввести пароль шифрования диска.

Установленные пакеты:

clevis
clevis-luks
clevis-initramfs
clevis-systemd
clevis-tpm

У меня аналогичная проблема. После обновлений необходимо перезагрузить систему, а затем снова привязать. Автоматическая разблокировка затем работает. Это не решение, которого я ищу. Точно так же я хотел бы делать автоматические обновления, так как не могу добраться до физического устройства, чтобы ввести пароль LUKS после обновления.

Ответ или решение

К сожалению, проблема с автоматическим разблокированием диска после обновления ядра на Ubuntu 22.04 является известной, и многие пользователи сталкиваются с ней. Как правило, эта проблема возникает в связи с тем, что после обновления ядра системы необходимые модули для поддержки автоматической разблокировки не загружаются должным образом.

Вот пошаговое руководство о том, как вы можете попытаться решить эту проблему:

  1. Проверьте конфигурацию Cryptsetup:
    Убедитесь, что вы правильно настроили автоматическую разблокировку. Правильная настройка требует, чтобы ваши конфигурационные файлы были актуальны. Настройте clevis таким образом, чтобы он использовал TPM для автоматической разблокировки диска.

  2. Включите модули в initramfs:
    Убедитесь, что ядро загружает необходимые модули для поддержки TPM и Clevis при загрузке. Для этого выполните следующее:

    echo "tpm" | sudo tee -a /etc/initramfs-tools/modules
    echo "tpm_tis" | sudo tee -a /etc/initramfs-tools/modules
    echo "tpm_crb" | sudo tee -a /etc/initramfs-tools/modules
    update-initramfs -u
  3. Используйте скрипт автоматизации:
    Вы можете написать небольшой скрипт, который будет автоматически запускаться после обновления ядра, чтобы повторно связывать необходимые параметры, если они потеряны. Поместите следующий скрипт в /etc/cron.d:

    #!/bin/bash
    # Скрипт для автоматического обновления конфигурации Clevis после обновления ядра
    PARTITION="<url_to_your_partition>"
    SLOT_NUMBER="<your_slot_number>"
    PCR_IDS="<your_pcr_ids>"
    
    # Удаляем старую привязку
    clevis luks unbind -d $PARTITION -s $SLOT_NUMBER
    
    # Создаем новую привязку
    clevis luks bind -d $PARTITION tpm2 '{ "pcr_bank":"sha256", "pcr_ids": "'$PCR_IDS'" }'
    
    # Обновляем initramfs
    update-initramfs -u -k 'all'

    Не забудьте сделать файл исполняемым:

    sudo chmod +x /path/to/your/script.sh
  4. Настройка задания cron:
    Вы можете настроить cron-задачу, чтобы этот скрипт выполнялся автоматически после обновления. Например, добавьте строчку в crontab:

    @reboot /path/to/your/script.sh
  5. Перезагрузка:
    После выполнения вышеперечисленных шагов выполните перезагрузку, чтобы проверить, работает ли автоматическая разблокировка после обновления ядра.

  6. Логирование:
    Добавьте логирование в скрипт, чтобы отслеживать, сработал ли он без ошибок. Используйте команду echo для записи сообщений в лог-файл.

Важно отметить, что данные действия помогут автоматизировать процесс, однако полного решения проблемы с автоматической разблокировкой на всех системах может не быть из-за особенностей конфигурации оборудования или ПО. В случае, если описание не помогло, рассмотрите возможность обращения на официальные форумы поддержки Ubuntu или Reddit, где многие опытные администраторы могут поделиться своим опытом и решениями.

Надеюсь, эти шаги помогут вам решить вашу проблему!

Оцените материал
Добавить комментарий

Капча загружается...