LINUX.ORG.RU

LuksOpen : Не создается block device

 


0

1

Перестал открываться криптованный раздел после обновления ядра. Обнаружил, что /dev/mapper/<crypt_name> отсутствует.

#cryptsetup luksOpen /dev/sdc3 enc -d /path/to/key-file
должен создать девайс /dev/mapper/enc, но почему-то ничего не создает. Ошибок никаких тоже не возвращает. Ну и соответственно монтировать некого.

Сам заголовок раздела luks в порядке вроде.

В чем может быть причина?

.config тут: https://pastebin.com/v5BmhMTr

Опции ядра вроде все активированы, dmcrypt в default runlevel добавлен.


Ответ на: комментарий от anonymous

/dev/dm* как таковой отсутствует.

В gentoo (по вики) блок-девайс создается в /dev/mapper/

В dmesg только одна строка хоть как-то связанная с маппером:

device-mapper: ioctl: 4.35.0-ioctl (2016-06-23) initialised: dm-devel@redhat.com

Chord ()
Ответ на: комментарий от sparks

cat /proc/crypto выдает кучу алгоритмов

тут полный вывод: https://pastebin.com/kecUdFTS

debug показал код 22, правда никаких явных ошибок не указано

# cryptsetup luksOpen /dev/sdс3 enc -d /path/to/file --debug
# cryptsetup 1.7.5 processing "cryptsetup luksOpen /dev/sdc3 enc -d /path/to/file --debug"
# Running command open.
# Locking memory.
# Installing SIGINT/SIGTERM handler.
# Unblocking interruption on signal.
# Allocating crypt device /dev/sdс3 context.
# Trying to open and read device /dev/sdc3 with direct-io.
# Initialising device-mapper backend library.
# Trying to load LUKS1 crypt type from device /dev/sdс3.
# Crypto backend (Linux 4.9.95-gentoo kernel cryptoAPI) initialized in cryptsetup library version 1.7.5.
# Detected kernel Linux 4.9.95-gentoo x86_64.
# Reading LUKS header of size 1024 from device /dev/sdc3
# Key length 32, device size 422361088 sectors, header size 2050 sectors.
# Timeout set to 0 miliseconds.
# Password retry count set to 3.
# Password verification disabled.
# Iteration time set to 2000 milliseconds.
# Password retry count set to 1.
# Activating volume enc [keyslot -1] using keyfile /path/to/file.
# dm version   OF   [16384] (*1)
# dm versions   OF   [16384] (*1)
# Detected dm-crypt version 1.14.1, dm-ioctl version 4.35.0.
# Device-mapper backend running with UDEV support disabled.
# dm status enc  OF   [16384] (*1)
# File descriptor passphrase entry requested.
# Trying to open key slot 0 [ACTIVE_LAST].
# Releasing crypt device /dev/sdc3 context.
# Releasing device-mapper backend.                                                                                                                            
# Unlocking memory.                                                                                                                                           
Command failed with code 22. 
Chord ()
Ответ на: комментарий от ecko

Invalid argument я в гугле видел. На деле никаких Invalid argument нет, раздел указан правильно, файл ключа указан правильно. Собственно, больше никаких аргументов и нет.

Chord ()
Ответ на: комментарий от Chord

Invalid argument я в гугле видел.

Обычно все же не просто так это. Проверь, что у тебя dev/sdc3 по-прежнему указывает на нужный раздел. И path/to/key туда же. Причем читается. Попробуй на всякий случай вместо enc какой-нибудь другое имя использовать (вдруг зарезервировано под опцию какую).

praseodim ★★★ ()
Последнее исправление: praseodim (всего исправлений: 1)
Ответ на: комментарий от praseodim

Всё это я в первую очередь проверил - раздел именно тот, я его могу заголовок прочесть

# cryptsetup luksDump /dev/sdc3
LUKS header information for /dev/sdc3

Version:        1
Cipher name:    aes
Cipher mode:    xts-plain64
Hash spec:      sha1
Payload offset: 4096
MK bits:        256
MK digest:      74 22 93 fb 0f 09 4e 3c 5f 35 80 56 fc 2c 2d 4d 02 b1 40 16 
MK salt:        8b 4b 34 66 ef 77 a6 d7 1a db 45 b9 4b 52 8d 7c 
                66 7a e2 0d 39 03 3c 2a 38 80 b5 88 d1 e9 c9 31 
MK iterations:  55875
UUID:           7c327d86-d0ed-4188-92bb-998ce684ee08

Key Slot 0: ENABLED
        Iterations:             223384
        Salt:                   4b 63 96 77 e8 dd 5b 89 1a 2e 92 48 b7 ff 26 4a 
                                c2 4b f0 55 21 f5 92 f9 28 c9 76 69 23 9c 73 4b 
        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

Файл ключа есть, открывается, есть и резервная копия ключа, md5 обоих ключей совпадает.

Со времени последнего открытия раздела ничего не менялось кроме пересборки ядра. В самом ядре опции, указанные в gentoo вики активированы.

Какие ещё могут быть неверные параметры?

Chord ()
Ответ на: комментарий от Chord

Сам криптованный раздел и файл ключа в порядке - я могу открыть раздел из другой системы. Этот же самый раздел с этим же самым ключом. Без проблем. Просто не хочется пересоздавать новый раздел и копировать со старого, там достаточно много данных.

Chord ()
Ответ на: комментарий от praseodim

У меня вместо udev используется evdev.

В той системе где раздел открывается, тоже Device-mapper backend running with UDEV support disabled.

Вот выхлоп в другой системе:

 
# cryptsetup luksOpen /dev/sdc3 enc -d /path/to/file --debug  
# cryptsetup 1.7.5 processing "cryptsetup luksOpen /dev/sdc3 enc -d /path/to/file --debug"
# Running command open.
# Locking memory.
# Installing SIGINT/SIGTERM handler.
# Unblocking interruption on signal.
# Allocating crypt device /dev/sdc3 context.
# Trying to open and read device /dev/sdc3 with direct-io.
# Initialising device-mapper backend library.
# Trying to load LUKS1 crypt type from device /dev/sdc3.
# Crypto backend (Linux 4.14.8-gentoo-r1 kernel cryptoAPI) initialized in cryptsetup library version 1.7.5.
# Detected kernel Linux 4.14.8-gentoo-r1 x86_64.
# Reading LUKS header of size 1024 from device /dev/sdc3
# Key length 32, device size 422361088 sectors, header size 2050 sectors.
# Timeout set to 0 miliseconds.
# Password retry count set to 3.
# Password verification disabled.
# Iteration time set to 2000 milliseconds.
# Password retry count set to 1.
# Activating volume enc [keyslot -1] using keyfile /path/to/file.
# dm version   OF   [16384] (*1)
# dm versions   OF   [16384] (*1)
# Device-mapper backend running with UDEV support disabled.
# dm status enc  OF   [16384] (*1)
# File descriptor passphrase entry requested.
# Trying to open key slot 0 [ACTIVE_LAST].
# Reading key slot 0 area.
# Using userspace crypto wrapper to access keyslot area.
Key slot 0 unlocked.
# Calculated device size is 422356992 sectors (RW), offset 4096.
# dm versions   OF   [16384] (*1)
# Device-mapper backend running with UDEV support disabled.
# DM-UUID is CRYPT-LUKS1-7c327d86d0ed418892bb998ce684ee08-enc
# dm versions   OF   [16384] (*1)
# Device-mapper backend running with UDEV support disabled.
# dm create enc CRYPT-LUKS1-7c327d86d0ed418892bb998ce684ee08-enc OF   [16384] (*1)
# dm reload enc  OF   [16384] (*1)
# dm resume enc  OF   [16384] (*1)
# enc: Stacking NODE_ADD (254,0) 0:0 0600
# enc: Stacking NODE_READ_AHEAD 256 (flags=1)
# enc: Processing NODE_ADD (254,0) 0:0 0600
# Created /dev/mapper/enc
# enc: Processing NODE_READ_AHEAD 256 (flags=1)
# enc (254:0): read ahead is 256
# enc: retaining kernel read ahead of 256 (requested 256)
# dm versions   OF   [16384] (*1)
# Detected dm-crypt version 1.18.0, dm-ioctl version 4.37.0.
# Device-mapper backend running with UDEV support disabled.
# Releasing crypt device /dev/sdc3 context.
# Releasing device-mapper backend.
# Unlocking memory.
Command successful.

Chord ()
Ответ на: комментарий от Chord

Вот до этой строки все одинаково и в рабочем и в нерабочем случае:

Trying to open key slot 0 [ACTIVE_LAST].

А после уже разное. Может не получается открыть этот key slot? И вообще, что это за слот?

Chord ()
Ответ на: комментарий от Chord

А после уже разное. Может не получается открыть этот key slot? И вообще, что это за слот?

Может быть заведено несколько ключей для открытия. Отсюда номера слотов.

По сути, хз, попробуй еще /proc/crypto на разных системах посравнивать.

praseodim ★★★ ()
Ответ на: комментарий от praseodim

Сделал такой трюк: скопировал со старой системы ядро 4.14.8 и его модули /lib/modules/4.14.8 в новую систему. Загрузился с этим ядром в новой системе - и все открывается на ура.

Получается что-то не так я ядром.

Все опции указанные в вики я активировал (как built-in). Получается есть ещё опции, которые влияют на luks и при этом они не указаны в вики....

Вот как теперь определить те опции? Файл config от старого ядра отсутствует, и в самом ядре config не был зашит.

Chord ()
Ответ на: комментарий от Chord

Вот как теперь определить те опции? Файл config от старого ядра отсутствует, и в самом ядре config не был зашит.

Я как-то привык, что конфиг лежит в /boot - нет его там?

Если у тебя заработало после копирования модулей, значит что-то с модулями. Скорее всего, какой-то модуль не скомпилировался или скомпилировался с какими-то неправильными опциями. Попробуй не все модули копировать, а только которые из /proc/crypto и с нужным алгоритмом.

В порядке фантазии, возможно что-то напутано с режимами работы: cbs, xts, plain-text

praseodim ★★★ ()
Ответ на: комментарий от praseodim

я их перекомпилировал то ли 3 то ли 4 раза, включил не только нужные но и ненужные алгоритмы, все что указано в вики, «всё включено». В новой (неправильной) системе алгоритмов в /proc/crypto раза в два больше чем в старой. Надо будет поименно сравнить.

Старого конфига у меня нет, утерян. Я создал новый, всё работает кроме шифрованного раздела. Где-то есть опция не указанная в вики.

Chord ()