crypttab: расположение файла заголовка luks

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

Привет, мой crypttab выглядит следующим образом:

crypt_device /dev/sda luks,header=/boot/header.img

update-initramfs -u -k all работает успешно, но по какой-то причине cryptsetup не может найти header.img, который находится на USB-накопителе (который также содержит загрузочный раздел) во время загрузки. Он хранится в /boot/header.img

(используя шифрование luks с отсоединённым заголовком и отдельным загрузочным разделом на USB, ОС: lubuntu 18)

Если вы не предприняли специальных шагов для монтирования файловой системы /boot в initramfs, она ещё не будет смонтирована. В стандартной последовательности загрузки система заботится только о корневой файловой системе (и, возможно, о разделе подкачки) во время выполнения в initramfs.

После проверки (если применимо) и монтирования реальной корневой файловой системы, остальные файловые системы, включая /boot, обычно монтируются. Вам потребуется сделать специальные arrangements, чтобы смонтировать файловую систему /boot в то время, когда вы находитесь в initramfs, чтобы получить доступ к /boot/header.img. Или вы можете просто включить ваш header.img в initramfs.

Поскольку ваш USB-накопитель также является вашим загрузочным диском, система загружает образ initramfs в память, пока корневой раздел не будет расшифрован, и newroot не будет переназначен. Здесь будет необходимо вручную смонтировать USB-накопитель из initramfs или нужно внести изменения в fstab, чтобы смонтировать раздел, содержащий файл ключа. Хотя вы упомянули, что во время загрузки он хранится в /boot/header.img, это связано с тем, что USB больше не смонтирован, когда initramfs загружен в ОЗУ для процесса загрузки. Поэтому, когда crypttab инициируется, cryptsetup не может найти файл /boot/header.img, потому что директория для /boot на USB не была смонтирована в среде initramfs, которая сейчас загружена для расшифровки корневой папки вашего жесткого диска.

Чтобы быть уверенным, как объяснил telcoM, если вы ранее загружались в вашу систему и создали файл ключа, когда ОС была разблокирована и раздел был расшифрован, а затем разместили копию файла keyfile.img в вашей директории /boot в тот момент времени (и снова, и это происходит, когда система незашифрована и вы уже имеете доступ к системе), то это не та же директория /boot, которую вы находите, когда грузите систему, и USB содержит загрузочный диск; это то, что мы оба пытаемся сказать. Это происходит потому, что во время процесса загрузки он открыл и скопировал образ initrd-4.15.33-generic (например) и автоматически не монтирует устройство USB как контейнер для хранения.

Таким образом, чтобы решить проблему, вам нужно, чтобы fstab смонтировала USB в директорию /boot, чтобы crypttab мог находить директорию, когда она запрашивается cryptsetup.

Смотрите страницу руководства по fstab для объяснений, если это необходимо:
например.

# Сначала найдите UUID раздела, на котором расположен ваш USB-накопитель
$ blkid

# Вы также можете использовать grep или что-то, что вам удобнее, в качестве текстового редактора
$ nano /etc/fstab

# затем добавьте строку для вашего USB-устройства 
UUID={UUID раздела устройства} {точка монтирования} {файловая система} {опции монтирования} {порядок дампа}{порядок fsck}
# Пример
UUID=66E53SSD988 /boot ext4  по умолчанию  0 1

Тем не менее, я бы предложил смонтировать диск где-то, кроме директории /boot, если это просто директория на USB, а затем изменить crypttab, чтобы уменьшить путаницу между тем, в какой папке находится файл header.img.

например.
UUID=66E53SSD988 /mnt/usb ext4 по умолчанию 0 1

Затем, в случае изменённой точки монтирования, crypttab также нужно будет изменить следующим образом:

crypt_device /dev/sda luks,header=/mnt/usb/boot/header.img

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

Расположение файла заголовка LUKS в crypttab: Подробное руководство

Введение

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

Проблема

Судя по вашему запросу, конфигурационный файл crypttab настроен следующим образом:

crypt_device /dev/sda luks,header=/boot/header.img

Однако при загрузке система не может найти файл header.img, расположенный на USB-накопителе, содержащем раздел /boot. Это происходит потому, что в стандартном процессе загрузки initramfs монтирует только корневую файловую систему (/) и, возможно, раздел подкачки. Раздел /boot, находящийся на USB, не монтируется, что приводит к ошибке при попытке доступа к файлу заголовка.

Природа проблемы

Как уже было упомянуто, в среде initramfs доступ к файловым системам осуществляется ограниченно. После того как initramfs загружен и выполняется инициализация, он не имеет доступа к вашим пользователям средам и разделам до тех пор, пока корневая файловая система не будет расшифрована и примонтирована. Таким образом, любой файл, необходимый для расшифровки, включая header.img, должен быть доступен заранее.

Решение проблемы

1. Монтирование раздела /boot в initramfs

Чтобы решить проблему, можно предпринять один из следующих шагов:

  1. Добавить USB в fstab: Добавьте информацию о вашем USB-накопителе в файл /etc/fstab, чтобы он автоматически монтировался перед запуском системы. Убедитесь, что вы указали правильный UUID:

    UUID={uuid вашего USB} /boot ext4 defaults 0 1

    Это позволит системе находить файл header.img при обращении к разделу /boot во время инициализации.

  2. Включение файла заголовка в initramfs:
    Вы также можете включить файл header.img непосредственно в образ initramfs, чтобы он был доступен до монтирования более поздних файловых систем.

2. Изменение точки монтирования

Если вы хотите уменьшить путаницу и избежать проблем с доступностью, можно изменить точку монтирования вашего USB-накопителя на более нейтральную, например /mnt/usb. После этого обновите crypttab:

   UUID={uuid вашего USB} /mnt/usb ext4 defaults 0 1

И измените строку в crypttab на:

   crypt_device /dev/sda luks,header=/mnt/usb/boot/header.img

Заключение

Существует несколько подходов к обеспечению доступности файла заголовка LUKS на этапе загрузки. Выбор подхода зависит от ваших предпочтений и архитектуры системы. Важно обеспечить правильное монтирование, чтобы избежать ошибок при доступе к файловым системам в initramfs. Успехов в настройке вашей системы!

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

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