Как воссоздать зашифрованный раздел dm-crypt / LUKS с предопределенным UUID в Linux?

1811
Christianus

У меня есть / и область подкачки Ubuntu 14.04 LTS (и Linux Mint 17.1 LTS), зашифрованная в dm-crypt / LUKS. / и область подкачки находится в / dev / mapper / UUID_1 и / dev / mapper / UUID_2 . Можно ли воссоздать / dev / mapper / UUID (например, на другом жестком диске) (конечно, с тем же UUID)? Это сделало бы возможным восстановление системы с помощью TAR в случае аварии. Как вы знаете, TAR записывает UUID скопированного раздела. Кроме того, grub.cfg, / etc / fstab и initframs также содержат номер.

sudo tune2fs / dev / mapper / UUID ‐U UUID

Команда не работает.

cryptsetup luksUUID / устройство / - UUID

может изменить только UUID внешнего контейнера.

Спасибо за ответы.

1

2 ответа на вопрос

0
dess

У вас есть два UUID для каждого зашифрованного раздела.

UUID файловой системы

Используется в /etc/fstabGRUB (и не забывайте использовать sudo update-grubпосле изменения). Может быть изменено с помощью:

sudo tune2fs ‐U "<fsUUID>" /dev/mapper/<luksUUID> 

...где UUID соответствующего раздела LUKS (его можно найти в /etc/crypttab) и <fsUUID>UUID файловой системы необходимо установить. Например:

sudo tune2fs ‐U "81db8bc2-6cc1-4272-beab-8c1d667cfa93" /dev/mapper/310919c2-aec9-4641-b3d2-6d523395db34 

UUID раздела LUKS

Используется в /etc/crypttab. Может быть изменено с помощью:

sudo cryptsetup luksUUID --uuid "<luksUUID>" /dev/sdxX 

...где UUID раздела LUKS должен быть установлен, а / dev / sdxX - LUKS-зашифрованное имя устройства. Например:

sudo cryptsetup luksUUID --uuid "310919c2-aec9-4641-b3d2-6d523395db34" /dev/sda1 

Но гораздо лучше восстановить весь заголовок LUKS (если вы не собираетесь менять ключ шифрования). Заголовок LUKS не хранит размер раздела, поэтому его можно использовать для восстановления практически любого размера раздела. Для восстановления форматирования LUKS-раздела достаточно также восстановления заголовка (т.е. в этом случае luksFormat не требуется). Может быть сделано с luksHeaderRestore(резервное копирование выполняется почти так же luksHeaderBackup):

sudo cryptsetup luksHeaderRestore --header-backup-file "<HeaderBackupFile>" /dev/sdxX 

...где UUID раздела LUKS должен быть установлен. Например:

sudo cryptsetup luksHeaderRestore --header-backup-file "/home/user/MyLuksHeader.Backup" /dev/sda1 

Резюме

Итак, шаги восстановления:

  1. Создать новый раздел.
  2. Восстановить заголовок LUKS.
  3. Разблокировать LUKS раздел
  4. Восстановите файловую систему, используя любой из них:
    • Восстановите образ файловой системы (например, используйте partclone).
    • Воссоздать файловую систему:
      1. Отформатируйте новое устройство.
      2. Резервное копирование Untar.
      3. Восстановите UUID файловой системы, если требуется.

Также

Обратите внимание, что использование меток для LUKS и файловой системы вместо UUID может упростить настройку и сделать ее более удобочитаемой.

2 лучшие идеи: 1) НЕ ИСПОЛЬЗУЙТЕ / dev / mapper / sdXY в `/ etc / fstab` ИЛИ` / etc / crypttab` используйте следующую строку: UUID = это гораздо надежнее, особенно в случае перемещения разделов / дисков на диске ... 2) загляните в cryptsetup-reencrypt и запустите с ключом --uuid (это устанавливает пользовательский uuid для повторно зашифрованных битов) - --Это на месте повторно зашифровывается, поэтому, если он находится на `` системном диске``, запустите его с живого носителя или другой ОС ... linuxdev2013 8 лет назад 0
Спасибо, но на самом деле 1) устройства / dev / mapper использовались только с утилитой tune2fs (для этого требуется путь к файлу устройства), предполагая, что нам не нужно ничего менять в настройках системы, и 2) оригинальный вопрос касается резервного копирования, а не изменения luksUUID на месте (кстати, luksUUID можно изменить без повторного шифрования LUKS-тома - используя `cryptsetup luksUUID`) dess 8 лет назад 0
0
Christianus

Чтобы воссоздать раздел cryptluks с заданным UUID, введите аналогично:

sudo cryptsetup luksFormat --verify-passphrase --uuid dec95850-23ad-4f54-b5c2-4f13ea48c571 /dev/sdb4 

(для шифрования раздела / dev / sdb4 с помощью cryptluks ),

sudo cryptsetup open --type luks /dev/sdb4 sdb4_crypt 

(открыть контейнер luks и прикрепить его как / dev / mapper / sdb4_crypt),

sudo mke2fs -v -t ext4 -U f65aa2cb-d7a3-4e45-858b-2b12a50e1b45 /dev/mapper/sdb4_crypt 

(отформатировать контейнер luks как файловую систему ext4 и назначить заданный UUID),

mount /dev/mapper/sdb4_crypt /media/<user>/f65aa2cb-d7a3-4e45-858b-2b12a50e1b45 

(для установки контейнера luks под заданный путь.)

Когда работа закончена, мы можем размонтировать контейнер и закрыть контейнер:

sudo umount /media/<user>/f65aa2cb-d7a3-4e45-858b-2b12a50e1b45 sudo cryptsetup luksClose sdb4_crypt 

Чтобы воссоздать раздел подкачки с заданным UUID:

sudo cryptsetup luksFormat --verify-passphrase --uuid e1baa59a-f24f-450c-a5a8-67f9d2f3338e /dev/sdc2 sudo cryptsetup open --type luks /dev/sdc2 sdc2_crypt sudo mkswap -U 5313264e-6212-46f5-936d-f903eb2a2231 /dev/mapper/sdc2_crypt 

Контейнер можно закрыть с помощью команды:

cryptsetup luksClose sdc2_crypt 

Похожие вопросы