Intereting Posts
Поиск того, какие дистрибутивные компакт-диски Debian содержат определенный пакет Замените каждое нечетное или даже появление шаблона в файле Как узнать, какие устройства требуют ручной установки определенного драйвера? Как grep для алфавитов, за которыми следует пробел и знак препинания? Можете ли фанатизировать файлы изменений перед доступом к другим приложениям? dmesg: pci BAR 7: не может назначить io Откуда UID / GID процесса, если не из указателя кредита процесса? Как я могу объединить переменную оболочки с другими другими параметрами в моих командных строках? Отключение затенения окна мыши в XFce? Как соединить BOSE SoundLink (Bluetooth) с помощью Pulseaudio в Linux Mint Debian Edition? Shell: Как удалить все связанные пакеты с определенным? / Ubuntu Если вы ^ Z из процесса, он становится «остановлен». Как вы снова включаетесь? изменить раскладку клавиатуры локально Как правильно использовать Gentoo Linux в качестве дополнения к существующему дистрибутиву? Процесс, который блокирует, игнорирует SIGKILL, запускается (не зомби или в режиме бесперебойного сна). В каком состоянии?

cryptsetup: не удалось подключить устройство loopback

Я использую cryptsetup с отдельным заголовком. Для этого я использую параметр --header , чтобы указать заголовочный файл. Я могу открыть свое устройство, используя:

 cryptsetup luksOpen /dev/sdb1 sdb1 --header LUKS-HEADER 

Но мне нужно предоставить заголовок не как файл, а как вывод другой команды (здесь я использую команду cat для иллюстрации)

 cryptsetup luksOpen /dev/sdb1 sdb1 --header <(cat LUKS-HEADER) 

но это не работает. Я получаю следующую ошибку:

 Attaching loopback device failed (loop device with autoclear flag is required). 

Это сбивает с толку, поскольку подобный подход работает для предоставления ключей, т. Е.

 cryptsetup luksOpen /dev/sdb1 sdb1 --header LUKS-HEADER --key-file <(printf asdf) 

вышеприведенная команда работает нормально (я использую «asdf» в качестве примера пароля).

Как я могу предоставить аргумент опции --header из канала / другого процесса?

Кажется, что cryptsetup требует, чтобы заголовок LUKS был либо обычным файлом, либо устройством. Если вам нужно предоставить заголовок LUKS в качестве результата процесса / потока, вы можете легко обойти это ограничение, отправив его в /dev/ram

 cat LUKS-HEADER > /dev/ram0 

(при условии, что ваше ядро ​​поддерживает ramdisk)

Затем вы можете просто использовать команду cryptsetup как:

 cryptsetup luksOpen /dev/sdb1 sdb1 --header /dev/ram0 

Имейте в виду, что заголовок LUKS останется на диске /dev/ram0 пока вы не освободите место. Чтобы освободить память, вы можете использовать blockdev :

 blockdev -v --flushbufs /dev/ram0 

Я думаю, что все, что вы делаете в <(cat HEADER) самом деле не делает то, что вы думаете. Вот почему я верю в это:

 luksOpen <device> <name> (old syntax) 

Открывает устройство device LUKS и настраивает name сопоставления после успешной проверки поставляемой кодовой фразы. Если кодовая фраза не предоставляется через --key-file , команда запрашивает ее в интерактивном режиме .

ПРИМЕЧАНИЯ ПО ПРИМЕНЕНИЮ УСТРОЙСТВА ЗАГРУЗКИ

Cryptsetup обычно используется непосредственно на блочном устройстве (раздел диска или том LVM) . Однако, если аргумент device является файлом, cryptsetup пытается выделить loopback-устройство и отобразить его в этот файл. Для этого режима требуется ядро ​​Linux 2.6.25 или более последнее, которое поддерживает флаг автоматической очистки цикла (устройство цикла очищается при последнем закрытии автоматически) . Конечно, вы всегда можете вручную сопоставить файл с петлевым устройством.

Как-то кажется, что вы генерируете больше аргументов, чем планируете делать, или, что меньше, потому что, как казалось бы, cryptsetup каким-то образом связывает ваш аргумент устройства как файл, а не как блок-устройство, и поэтому пытается смонтировать его через loopback.