[SOLVED] Установка gentoo на шифрованный раздел (luks) + LVM

Добрый день, коллеги. Вкратце:
Подготавливаю диск для установки gentoo:
1 раздел 2мб (grub)
2 раздел 256 мб (boot)
3 раздел до конца диска. (luks + LVM)

Затем 3 раздел шифрую cryptsetup
Создаю LVM на 3 разделе:
swap
root

Делаю установку далее. Компиляция ядра вручную. Включаю:
Crypt target support
Cryptoloop Support
SHA224 and SHA256 digest algorithm
SHA384 and SHA512 digest algorithms

Компелирую ядро, initramfs: genkernel --luks --lvm --install initramfs

Устанавливаю grub: grub2-install --modules="luks lvm" /dev/sda
...
Загрузка идет, пароль на зашифрованный раздел не спрашивает.
Естественно, root раздел не находит...

Кто делал подобное, подскажите, может есть решение.
Заранее Спасибо.

Покажите строку параметров

Покажите строку параметров ядра.

Строка в GRUB 2.02

linux /vmlinuz-3.16.5-gentoo root=/dev/mapper/vg0-root ro
initrd /initramfs-genkernel-x86_64-3.16.5-gentoo

А с чего вы решили, что

А с чего вы решили, что сценарий init в initramfs (genkernel) сам разберётся, что вы пытаетесь смонтировать шифрованный корень?

Вы хоть 'man genkernel' открывали?

RAMDISK/INITRAMFS OPTIONS
       The following options can be passed as kernel parameters from the bootloader, which the ramdisk & initramfs scripts would recognize.

       root=<...>
           Specifies the device node of the root filesystem to mount.

       real_root=<...>
           Legacy kernel parameter from kernel-2.4 initrd. Does the same as root=, which should be used in its place.

       crypt_root=<...>
           This specifies the device encrypted by Luks, which contains the root filesystem to mount.

       crypt_swap=<...>
           This specifies the swap device encrypted by Luks.

       root_key=<...>
           In case your root is encrypted with a key, you can use a device like a usb pen to store the key. This value should be the key path
           relative to the mount point.

       root_keydev=<...>
           If necessary provide the name of the device that carries the root_key. If unset while using root_key, it will automatically look
           for the device in every boot.

Да, Вы правы,

Да, Вы правы, указал
crypt_root=/dev/sda3

GRUB пароль при запуске спросил, но не загрузился. Сказал, что нет root раздела - не нашел.
Перешел в sell, попробовал вручную подключится, выдал:
"... chek that kernel support aes-xts-plain64..."

когда компилировал ядро, указал:
-*- Cryptographic API --->
<*> SHA224 and SHA256 digest algorithm
<*> SHA384 and SHA512 digest algorithms

может их надо было модулем поставить? Вот так:
<М> SHA224 and SHA256 digest algorithm
<М> SHA384 and SHA512 digest algorithms

cryptsetup status lvm0

type: LUKS1
cipher: aes-xts-plain64
device: /dev/sda3
ну и так далее

Цитата: GRUB пароль при

Цитата:
GRUB пароль при запуске спросил, но не загрузился.

Спрашивает пароль не grub, а init сценарий в initramfs.

Цитата:
Сказал, что нет root раздела - не нашел.

А вы его указали?

Смотрим ешё раз, вы изначально сказали, что у вас такие параметры передаются ядру:

linux /vmlinuz-3.16.5-gentoo root=/dev/mapper/vg0-root ro

А так же сказали:

Цитата:
3 раздел до конца диска. (luks + LVM)

Значит, для того, что бы смонтировать корень вам нужно вначале расшифровать раздел, затем активировать группу томов, а затем уже ядро смонтирует lvm том в качестве корня, т.е. параметры ядра должны быть такими:

linux /vmlinuz-3.16.5-gentoo crypt_root=/dev/sda3 root=/dev/mapper/vg0-root dolvm ro

Ещё раз, читайте 'man genkernel'.

Цитата: Значит, для того,

Цитата:
Значит, для того, что бы смонтировать корень вам нужно вначале расшифровать раздел, затем активировать группу томов, а затем уже ядро смонтирует lvm том в качестве корня, т.е. параметры ядра должны быть такими:

linux /vmlinuz-3.16.5-gentoo crypt_root=/dev/sda3 root=/dev/mapper/vg0-root dolvm ro

Ещё раз, читайте 'man genkernel'.

Все верно, последняя моя запись была именно такая. Проблема в том, что init не может расшифровать /dev/sda3.
Запрос пароля идет, а затем:
device-mapper: reload ioctl on failed: No such file or directory
Fdiled to setup dm-crypt key mapping for device /dev/sda3
Check that kernel support aes-xts-plain64 cipher (check syslog)

т.е. оказывается, что в ядре нет поддержки шифрования.
Хотя я выбирал при компиляции ядра.
Только не модулем а в ядро. Может в этом косяк?

Цитата: device-mapper:

Цитата:
device-mapper: reload ioctl on failed: No such file or directory

Цитата:
т.е. оказывается, что в ядре нет поддержки шифрования.

да нет, скорее всего, вы неправильно собрали ядро и попросту не задействовали в ядре поддержку контроллера жёстких дисков.

Покажите вывод

lspci -k

с LiveCD и выложите на pastebin сервис конфиг вашего ядра.

Это виртуальная машина на

Это виртуальная машина на VirtualBox...
но если надо, я сделаю lspci -k :)

конфиг ядра сейчас посмотрю...

выложил на dropbox
https://www.dropbox.com/s/xhhyd6a2dt1xe66/conf?dl=0

Спасибо Вам, что Вы со мной разбираетесь :)

а вот посмотрел я конфиг, а там
# CONFIG_CRYPTO_XTS is not set

уж не оно ли?

Как шифровали раздел,

Как шифровали раздел, приведите точную команду.

Покажите также

cryptsetup luksDump /dev/sda3

Без доп параметров

cryptsetup luksFormat /dev/sda3
без доп параметров, все по умолчанию.

LUKS header information for /dev/sda3

Version: 1
Cipher name: aes
Cipher mode: xts-plain64
Hash spec: sha1
Payload offset: 4096
MK bits: 256
MK digest: ca e2 dd 31 c0 87 af 5b cf 0d 3e ad 61 16 1f 53 10 93 dc d9
MK salt: b1 4b 53 1e 68 93 d1 2e 54 13 4a d0 3e 5e 86 19
21 6a 18 2b 65 13 d8 d2 9c af b6 6e f6 b9 2d 52
MK iterations: 35875
UUID: 24b37f48-5f65-493e-9838-c7f961b2a94b

Key Slot 0: ENABLED
Iterations: 145454
Salt: b4 02 2d 7b c8 f9 c4 7a b8 43 dc 7e 7e 33 2f 53
da 85 59 ca ab ef 76 15 30 23 2a 73 c6 84 f9 44
Key material offset: 8
AF stripes: 4000
Key Slot 1: DISABLED
Key Slot 2: DISABLED
Key Slot 3: DISABLED
Key Slot 4: DISABLED
Key Slot 5: DISABLED
Key Slot 6: DISABLED
Key Slot 7: DISABLED

В общем, все заработало после

В общем, все заработало после использования cipher twofish при шифровании раздела (я думаю, что и другие методы тоже поддерживает, но надо пробовать какие). Последние раз 5 ставил на реальный сервер, а не на виртуальную машину. Видимо genkernel, когда создает initramfs, не включает поддержку всех методов шифрования.

cryptsetup /dev/sda3 -c twofish-xts-plain:wd512 -s 512

Спасибо kostik87 за поддержку и направление в нужное русло :)

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".