Почему мой зашифрованный том LVM (устройство LUKS) не подключается во время загрузки?

15

Я пытаюсь настроить зашифрованный том, следуя этому руководству

Все настроено, но монтирование зашифрованного тома завершается неудачно во время загрузки с ошибкой:

fsck.ext4: при попытке открыть файл / dev / mapper / safe_vault такого файла или каталога нет. Возможно, это несуществующее устройство?

Это моя установка:

crypttab

$ sudo cat /etc/crypttab
safe_vault  /dev/disk/by-uuid/d266ae14-955e-4ee4-9612-326dd09a463b  none    luks

НОТА:

uuidПриходит от:

$ sudo blkid /dev/mapper/<my_logical_group>-safe_vault 
/dev/mapper/<my_logical_group>-safe_vault: UUID="d266ae14-955e-4ee4-9612-326dd09a463b" TYPE="crypto_LUKS" 

Fstab

$ sudo cat /etc/fstab | grep safe_vault
/dev/mapper/safe_vault      /safe-vault     ext4    defaults    0 2

Что я сделал...

Поэтому я зашел на сайт разработчика и в FAQ по общим проблемам они говорят:

Убедитесь, что в вашем ядре есть устройство отображения и цель crypt. Вывод «dmsetup target» должен содержать список «crypt» цели. Если его там нет или команда не работает, добавьте устройство отображения и crypt-target в ядро.

Вот и я, оказывается, у меня нет cryptцели:

$ sudo dmsetup targets
striped          v1.4.1
linear           v1.1.1
error            v1.0.1

Проблема в том, что я не знаю, как добавить такую ​​цель.

Я думаю, что это (без cryptцели) может привести к тому, что crypttabконфигурация будет игнорироваться во время загрузки, и, таким образом, попытка смонтировать запись fstabне удастся, потому cryptsetupчто не сопоставлен мой зашифрованный том /dev/mapper/safe_vault.

НОТА:

Зашифрованный том можно успешно сопоставить, смонтировать и записать вручную:

$ sudo cryptsetup luksOpen /dev/mapper/<my_logical_group>-safe_vault safe_vault
Enter passphrase for /dev/mapper/<my_logical_group>-safe_vault: 

$ sudo mount /dev/mapper/safe_vault /safe_vault

Вот как это выглядит после сопоставления и монтажа:

$ sudo lsblk -o name,uuid,mountpoint
NAME                                  UUID                                   MOUNTPOINT
sda                                                                          
├─sda1                                28920b00-58d3-4941-889f-6249357c56ee   
├─sda2                                                                       
└─sda5                                uhBLE7-Kcfe-RMi6-wrlX-xgVh-JfAc-PiXmBe 
  ├─<my_logical_group>-root (dm-0)       1bed9027-3cf7-4f8d-abdb-28cf448fb426   /
  ├─<my_logical_group>-swap_1 (dm-1)     a40c16c4-7d0c-46d7-afc8-99ab173c20bb   [SWAP]
  ├─<my_logical_group>-home (dm-2)       e458abb7-b263-452d-8670-814fa737f464   /home
  ├─<my_logical_group>-other (dm-3)      0a1eec42-6534-46e1-8eab-793d6f8e1003   /other
  └─<my_logical_group>-safe_vault (dm-4) d266ae14-955e-4ee4-9612-326dd09a463b   
    └─safe_vault (dm-5)               9bbf9f47-8ad8-43d5-9c4c-dca033ba5925   /safe-vault
sr0  

ОБНОВИТЬ

  • Оказывается, у меня есть cryptцель, но чтобы ее показать, dmsetup targetsмне нужно было сначалаcryptsetup luksOpen <my-device>
  • Я попытался с помощью UUIDS вместо согласно @Mikhail Morfikov в ответ , но он по- прежнему не удается во время загрузки.

Я все еще думаю, что проблема в том, что каким-то образом зашифрованный том не отображается (открывается с помощью cryptsetup luksOpen) во время загрузки, поэтому не /dev/mapper/<safe_vault or UUID>существует, а затем попытка смонтировать его (fstab) не удалась.

ОБНОВЛЕНИЕ 2

Оказывается, у меня не было необходимых скриптов для монтирования во время загрузки. Смотрите примечание в ответе @ MikhailMorfikov.

pgpb.padilla
источник
1
Появляется ли цель склепа после того, как вы это сделали вручную luksOpen? Я ожидаю, что если бы этого не было, luksOpen тоже потерпел бы неудачу.
CVN
Хорошо, после того, как sudo cryptsetup luksOpenпоявятся две новые цели для sudo dmsetup targets: errorи crypt. Я думаю, что мне нужно изменить вопрос тогда ...
pgpb.padilla
Это раздел или файловый контейнер?
Михаил Морфиков
/dev/mapper/<my-logical-volume>-safe_vaultявляется логическим томом, созданным с помощью LVM, и /dev/mapper/safe_vaultпредставляет собой устройство, которому он соответствует cryptsetup luksOpen /dev/mapper/<my-logical-volume>-safe_vault. Знаете ли вы, crypttabработает ли с томами LVM?
pgpb.padilla
У меня есть lvm внутри раздела luks, на самом деле у меня зашифрован весь диск 1,5 ТБ (кроме /boot). Все монтируется при загрузке без проблем. Вы уверены, что обновили initramfsпосле редактирования /etc/crypttab? Можете ли вы показать вывод, lsblk -o name,uuid,mountpointкогда все смонтировано и работает как надо?
Михаил Морфиков

Ответы:

16

Вы должны обратить внимание на UUID. Например, это моя конфигурация:

# lsblk -o name,uuid,mountpoint
├─sda2                         727fa348-8804-4773-ae3d-f3e176d12dac
│ └─sda2_crypt (dm-0)          P1kvJI-5iqv-s9gJ-8V2H-2EEO-q4aK-sx4aDi
│   ├─debian_crypt-swap (dm-1) 3f9f24d7-86d1-4e21-93e9-f3c181d05cf0   [SWAP]
│   ├─debian_crypt-tmp (dm-2)  93fc8219-f985-45fb-bd5c-2c7940a7512d   /tmp
│   ├─debian_crypt-home (dm-3) 12e8566c-8f0f-45ec-8524-6d9d9ee91eae   /home
│   └─debian_crypt-root (dm-4) 9685570b-4c9e-43ea-815e-49d10dc7a1bf   /

У меня есть один зашифрованный раздел (sda2) с 4 томами (LVM). Что мне нужно, это установить два UUID в нужных файлах. Идентификатор /etc/crypttabUDA идентификатора sda2 и адрес UUID тома (например, debian_crypt-root) /etc/fstab.

Итак, было бы:

# cat /etc/crypttab
sda2_crypt              UUID=727fa348-8804-4773-ae3d-f3e176d12dac   none        luks

# cat /etc/fstab
UUID=9685570b-4c9e-43ea-815e-49d10dc7a1bf       /               ext4    defaults,errors=remount-ro              0 1

После изменения /etc/crypttabфайла вам нужно пересобрать initramfs:

# update-initramfs -u -k all

НОТА

Пакет cryptsetupдолжен быть установлен, потому что он имеет сценарии запуска, которые предоставляют поддержку для автоматического монтирования зашифрованных томов при загрузке.

Зачем говорить об этом? Ну, если настроить LVM во время установки Debian свистящих устанавливает пакеты Cryptsetup-бен , libcryptsetup4и , lvm2но не cryptsetup, таким образом , у вас есть инструменты для настройки LVM и LUKS устройств , но не скрипты необходимо смонтировать lüks устройств во время загрузки. Те, которые входят в пакет cryptsetup .

Михаил Морфиков
источник
Я пытался использовать, UUIDно я получаю ту же ошибку. Я уточню вопрос с деталями.
pgpb.padilla
Привет, это становится слишком долго, мы можем поговорить ?
pgpb.padilla
Кроме того, даже если вы не редактируете / etc / crypttab, кажется, что диски отредактируют его для вас, если вы измените определенные настройки шифрования. Этот ответ помог мне исправить ошибки, которые я сделал с дисками (и, возможно, больше ошибок при попытке отменить диски).
Мудрец
0

Кажется , что @Mikhail Morfikov в ответ крышки крепления во время initramfs стадии. Альтернативой (если это не корневая файловая система) является автоматическое дешифрование и монтирование раздела через systemd после загрузки ядра linuz. Конечно, это возможно, только если вы используете systemd . Я объясню метод здесь:

/etc/crypttabЗапись:

crypt2 UUID=e412-blahblah /path/to/crypt2.key luks,noauto

Вот noautoинструкция не пытаться расшифровать диск на этапе initramfs .

Выше e412-blahblahUUID раздела, содержащего систему luks, в моем случае это раздел /dev/sdb2:

# blkid | grep sdb2
/dev/sdb2: UUID="e41274d8-fd83-4632-b560-ad0ba113ae75" TYPE="crypto_LUKS" PARTUUID="5673a908-02"

Во время запуска ядра linuz systemd прочитает /etc/crypttabфайл и создаст файл службы времени выполнения /run/systemd/generator/systemd-cryptsetup@crypt2.service. Однако этот сервис не запускается автоматически. Вы можете запустить его вручную

systemctl start systemd-cryptsetup@crypt2.service

но для его расшифровки и последующего монтирования во время запуска /etc/fstabможет потребоваться следующее:

/dev/mapper/crypt2--vg-data /media/crypt-data ext4 defaults,noauto,user,x-systemd.automount,x-systemd.requires=systemd-cryptsetup@crypt2.service 0 2

Вот x-systemd.automountинструкция для systemd для монтирования /media/crypt-data, и x-systemd.requires=systemd-cryptsetup@crypt2.serviceэто инструкция для systemd , для crypt2которой требуется расшифровка, прежде чем это станет возможным.

В systemd фактически не будет монтировать каталог до тех пор, пока к ls /media/crypt-dataнему не произойдет первый доступ, например , он будет подключен как раз вовремя и появится после в /proc/mounts.


Связанный

Вы можете спросить: «Зачем нужен диск с зашифрованными данными с ключом в корневой файловой системе?». Это потому, что корневая файловая система также зашифрована, поэтому ключ в безопасности. Корневая файловая система дешифруется на этапе загрузки initramfs , в ответ Михаила. У меня есть другая запись в /etc/crypttabфайле для этого:

crypt1 UUID=8cda-blahbalh none luks,discard,lvm=crypt1--vg-root

и я описываю настройку и загрузочный USB здесь

Крейг Хикс
источник