Ubuntu 14.04 может использовать зашифрованную подкачку, не обращаясь к неофициальным взломам?

На новой установке Ubuntu 14.04 я получаю это сообщение об ошибке во время начальной загрузки

дисковод для/dev/mapper/cryptswap1 еще не готов или не существует

и раздел подкачки никогда не активируется. От моих поисков до сих пор я нашел:

  • Это - широко распространенная проблема, вероятно, влияя на каждую установку Ubuntu 14.04, на которой была активирована зашифрованная подкачка.
  • Часть проблемы является легким для фиксации ошибки, вызывающей зашифрованный заголовок подкачки (сгенерированный во время начальной загрузки) перезаписать незашифрованный заголовок подкачки, который лишает возможности находить корректный раздел снова во время следующей начальной загрузки.
  • Все предлагаемые решения для получения его работа, кажется, просто обходные решения, составляющие для: 1. Отключить подкачку путем установки его как noauto в fstab. 2. Создать/etc/rc.local файл (или определить Ваш собственный сервис, который будет активирован во время начальной загрузки), который активирует раздел подкачки.

Действительно ли возможно использовать зашифрованную подкачку на Ubuntu 14.04, не используя этот вид взлома? Я - совершенно удобное обновление всех установленных пакетов и фиксирую те конфигурационные файлы, которые были инициализированы с неправильным содержанием из-за ошибочных сценариев установки. Я избежал бы необходимости использовать свой собственный сценарий для активации подкачки, поскольку такой подход имеет тенденцию повредиться, когда пакеты обновляются.

Это что мой /etc/crypttab похож:

cryptswap1 /dev/sda6 /dev/urandom swap,cipher=aes-cbc-essiv:sha256,offset=16

И соответствующая строка от моего /etc/fstab :

/dev/mapper/cryptswap1 none swap sw 0 0

Что я попробовал до сих пор:

Я нашел, что дисковод сообщения для/dev/mapper/cryptswap1 еще не готов или не существует даже после попытки различных вариантов, спрашивающих о том, что могло бы быть тем же сценарием.

Но единственный ответ предлагает использованию незашифрованной подкачки.

Я нашел http://ubuntuforums.org/showthread.php?t=2200995, который утверждает, что имел решение, но решение не имеет никакого смысла мне.

Первая часть предлагаемого решения должна переписать зашифрованный заголовок подкачки с помощью mkswap. Однако, так как этот заголовок шифруется с ключом, который не является персистентным через перезагрузки, этот шаг не помог бы получению подкачки, работающей после следующей перезагрузки.

Это также предлагает обновления/etc/fstab, но кажется, что мой fstab уже смотрит правильно.

Сообщение принимает LVM, который я не использую. Я не знаю о любом пути, который имел бы значение.

Я нашел https://bugs.launchpad.net/ubuntu / + source/ecryptfs-utils / + ошибка/1310058, которая помогла мне понять проблему с перезаписываемым заголовком подкачки и то добавление offset кому: crypttab и регенерация незашифрованного заголовка подкачки, может разрешить эту проблему.

Однако перезаписанный заголовок не является единственной проблемой в действии, существует другая проблема, которую я еще не полностью понимаю.

Другие вещи я узнал о проблеме:

От чтения /lib/cryptsetup/cryptdisks.functions Я узнал, что во время начальной загрузки, устройство, как предполагается, создается с помощью имени cryptswap1_unformatted затем зашифрованный заголовок подкачки должен быть записан, и устройство должно быть переименовано как cryptswap1. В журнале ядра я нахожу это сообщение об ошибке:

[   39.419429] device-mapper: ioctl: Unable to change name on mapped device cryptswap1_unformatted to one that already exists: cryptswap1

Смутно результат этого оказывается этим, устройство действительно заканчивает тем, что имело имя cryptswap1, но swap заголовок никогда не писался.

Подкачка работает во время тех начальных загрузок, где проверка файловой системы была выполнена. Только, когда никакие проверки файловой системы не выполняются, я получаю страшное cryptswap1 is not ready yet ошибка.

В /var/log/upstart/cryptdisks.log Я нахожу сообщение об ошибке

Device cryptswap1_unformatted already exists.

Однако путем добавления некоторого дополнительного входа к /lib/cryptsetup/cryptdisks.functions, Я узнал, что существует гонка между /etc/init.d/cryptdisks-early и /etc/init/cryptdisks.conf. Любой вход я добавляю к cryptdisks.functions может влиять, как действия этих двух сценариев чередованы, и иногда, это заканчивает тем, что работало.

Ясно, что эти два, как предполагается, не обрабатывают то же устройство параллельно. Как я мог сериализировать эти два сценария, такой, что подкачка работает над каждой начальной загрузкой?

2
задан 13 April 2017 в 15:24

1 ответ

Существует две отдельных проблемы, которые должны быть разрешены для получения cryptswap1 работа правильно в Ubuntu 14.04.

Проблема 1: Перезаписанный заголовок подкачки

Раздел был первоначально отформатирован с незашифрованным заголовком подкачки, который используется, чтобы найти, что корректный раздел использует во время начальной загрузки. Поскольку изменения ключа шифрования при каждой начальной загрузке, зашифрованный заголовок подкачки будет переписан при каждой начальной загрузке. Из-за ошибки в поколении /etc/crypttab, зашифрованный заголовок подкачки перезаписывает незашифрованный заголовок подкачки. Это будет препятствовать тому, чтобы раздел подкачки был найден при всех будущих начальных загрузках.

Проблема 2: Состояние состязания во время начальной загрузки

Существует состояние состязания во время начальной загрузки между /etc/init.d/cryptdisks-early и /etc/init/cryptdisks.conf. Оба одновременно попытаются активировать все устройства, перечисленные в crypttab. В случае зашифрованной подкачки результат состояния состязания большую часть времени будет, что это не работает вообще. Некоторые сбои проверки работоспособности, вызывающие запись encrytped, подкачивают заголовок, который будет пропущен, для предотвращения потенциальной потери данных.

Фиксация и работа вокруг проблем

Первая проблема может легко быть решена. Второе может работаться вокруг. В /etc/crypttab определите строку подкачки. Это должно быть похожим на это (за исключением того, что UUID будет отличаться):

cryptswap1 UUID=f9a0f20c-fac4-408c-a8b9-47300216f727 /dev/urandom swap,cipher=aes-cbc-essiv:sha256

В моем случае это было единственной строкой в /etc/crypttab. Для фиксации перезаписи заголовка подкачки смещение должно быть добавлено. Источники не соглашаются относительно того, каково точно правильное значение для использования, но использование слишком большого значения не причиняет боль. Я получил его работа с помощью смещения 16.

Дополнительно я добавил noearly который вызывает /etc/init.d/cryptdisks-early проигнорировать эту строку и тот путь работает вокруг состояния состязания.

Получающаяся строка похожа:

cryptswap1 UUID=f9a0f20c-fac4-408c-a8b9-47300216f727 /dev/urandom swap,cipher=aes-cbc-essiv:sha256,offset=16,noearly

Это будет препятствовать тому, чтобы незашифрованный заголовок подкачки был перезаписан снова, но мы все еще должны воссоздать его на разделе. На этом шаге крайне важно использовать корректный раздел, потому что использование неправильного раздела вызовет потерю данных. Я использовал fdisk -l найти корректный раздел, который в моем случае является /dev/sda6.

Теперь используйте mkswap переписать незашифрованный заголовок подкачки.

mkswap /dev/sda6 -U f9a0f20c-fac4-408c-a8b9-47300216f727

UUID является тем, который имел раздел подкачки, прежде чем он был перезаписан (в котором можно все еще видеть /etc/crypttab). После того как это сделано, перезагрузка необходима, и она должна все работать.

Проверка корректной операции

Я рекомендую перезагрузить три раза, чтобы проверить, что это продолжает работать.

Сообщение об ошибке the disk drive for /dev/mapper/cryptswap1 is not ready yet or not present остается видимым кратко во время начальной загрузки. Это, кажется, не проблема, хотя, поскольку это действительно становится готовым, прежде чем процесс начальной загрузки завершается.

Войдите в систему и введите cat /proc/swaps видеть, что подкачка активна. Необходимо видеть раздел подкачки с именем /dev/dm-0 где dm указывает, что это действительно использует слой картопостроителя устройства, который обеспечивает шифрование.

4
ответ дан 2 December 2019 в 02:23

Другие вопросы по тегам:

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