корневое шифрование с помощью LUKS: корневой раздел не найден

2

Расположение моего единственного диска следующее: /dev/sda1 for the plaintext boot partition /dev/sda2 for the encrypted root partition

Моя система - ArchLinux, и я следовал это руководство настроить корневое шифрование (без lvm, без рейда). Вот что я сделал: побежал cryptsetup на /dev/sda2 и сопоставил это в /dev/mapper/cryptroot

мой /etc/fstab выглядит так: UUID=of /dev/mapper/cryptroot / ext4 rw,relatime,data=ordered,discard 0 1 UUID=of /dev/sda1 /boot ext4 rw,relatime,data=ordered,discard 0 2

В моем /etc/default/grub Я изменил одну строку, чтобы быть: GRUB_CMDLINE_LINUX="cryptdevice=UUID of /dev/sda2:cryptroot:allow-discards"

в /etc/mkinitcpio.conf крючки выглядят так: HOOKS="base udev autodetect modconf block encrypt filesystems keyboard fsck"

Наконец я не забыл бежать mkinitcpio -p linux а также grub-mkconfig -o /boot/grub/grub.cfg соответственно.

Я перечислил свои действия таким быстрым способом, потому что ранее я успешно настраивал шифрование для моей корневой файловой системы. Итак, в конце я получаю следующую ошибку:

ERROR: device *UUID of /dev/mapper/cryptroot* not found. Skipping fsck. ERROR: unable to find root device *UUID of /dev/mapper/cryptroot* You are being dropped into recovery shell

Странно то, что он пытается найти незашифрованные /dev/mapper/cryptroot и все же он не спрашивает у меня пароль (который я создал, когда cryptsetup на /dev/sda2 в начале). Поэтому, естественно, он не может найти незашифрованное блочное устройство, потому что он не спрашивал у меня его пароль. Не могли бы вы сказать мне, что я настроил неправильно?

alisianoi
источник

Ответы:

1

Я имел успех с cryptdevice=/dev/disk/by-uuid/<UUID_OF_LOGICAL_DEVICE>:cryptroot root=/dev/mapper/cryptroot для дополнительных опций ядра в GRUB.

Стоит отметить, что если вы делаете это без точности копирования и вставки UUID (например, в консоли / tty), вы могли бы это опечатать. Вот одна строка, которая также отстой для ввода с консоли, но может оказаться проще.

sed "s/\(GRUB_CMDLINE_LINUX=\"\)/\1cryptdevice=\/dev\/disk\/by-uuid\/$(blkid -o value -s UUID /dev/<LOGICAL_DEVICE>):cryptroot root=\/dev\/mapper\/cryptroot/" /etc/default/grub > ~/grub.defaults && mv ~/grub.defaults /etc/default/grub

Ian Schoonover
источник
0

Вам не хватает / etc / crypttab, хуки cpio указывают на раздел, о котором ОС не знает

/ И т.д. / crypttab

% {UUID / dev / mapper / cryptroot} / ext4 rw, относительное время, данные = упорядочено, отбрасывать, luks - 0 1

затем повторно запустите обновление grub

linuxdev2013
источник
'-' - преднамеренный и принудительный запрос пароля, за исключением действительного ключевого файла для действительного слота активного ключа
linuxdev2013
Спасибо, но crypttab содержит комментарий «не указывайте здесь ваш корневой (/) раздел, он должен быть предварительно настроен initramfs (/etc/mkinitcpio.conf)», который, как я понимаю, является ссылкой на тот факт, что вы должны добавить хук , Я неправильно понимаю этот комментарий?
alisianoi
Кстати, ваш текущий ответ использует какой-то гибрид /etc/fstab а также /etc/crypttab синтаксис, см. пример для /etc/crypttab Вот
alisianoi
/etc/crypttab находится в самом корневом разделе, который не удается расшифровать, поэтому это не может быть решением для его расшифровки.
regular