Вопрос или проблема
Привет, мой 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
Чтобы решить проблему, можно предпринять один из следующих шагов:
-
Добавить USB в
fstab
: Добавьте информацию о вашем USB-накопителе в файл/etc/fstab
, чтобы он автоматически монтировался перед запуском системы. Убедитесь, что вы указали правильный UUID:UUID={uuid вашего USB} /boot ext4 defaults 0 1
Это позволит системе находить файл
header.img
при обращении к разделу/boot
во время инициализации. -
Включение файла заголовка в 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
. Успехов в настройке вашей системы!