Добрый день, коллеги. Вкратце:
Подготавливаю диск для установки 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' открывали?
Да, Вы правы,
Да, Вы правы, указал
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, а init сценарий в initramfs.
А вы его указали?
Смотрим ешё раз, вы изначально сказали, что у вас такие параметры передаются ядру:
А так же сказали:
Значит, для того, что бы смонтировать корень вам нужно вначале расшифровать раздел, затем активировать группу томов, а затем уже ядро смонтирует lvm том в качестве корня, т.е. параметры ядра должны быть такими:
Ещё раз, читайте '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:
да нет, скорее всего, вы неправильно собрали ядро и попросту не задействовали в ядре поддержку контроллера жёстких дисков.
Покажите вывод
с LiveCD и выложите на pastebin сервис конфиг вашего ядра.
Это виртуальная машина на
Это виртуальная машина на VirtualBox...
но если надо, я сделаю lspci -k :)
конфиг ядра сейчас посмотрю...
выложил на dropbox
https://www.dropbox.com/s/xhhyd6a2dt1xe66/conf?dl=0
Спасибо Вам, что Вы со мной разбираетесь :)
а вот посмотрел я конфиг, а там
# CONFIG_CRYPTO_XTS is not set
уж не оно ли?
Как шифровали раздел,
Как шифровали раздел, приведите точную команду.
Покажите также
Без доп параметров
cryptsetup luksFormat /dev/sda3
без доп параметров, все по умолчанию.
LUKS header information for /dev/sda3Version: 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 за поддержку и направление в нужное русло :)