Сегодня я видел такую же ошибку на ноутбуке с Ubuntu 15.10, который всегда обновлялся, но не перезагружался в течение месяца, пока не захотел протестировать текущее ядро (то есть, возможно, произошли недавние изменения).
В любом случае, я обнаружил, что в моем случае основной причиной был «отсутствующий» раздел подкачки из-за сбоя в настройке при выполнении вышеприведенного руководства. Если это так и / или вы действительно используете lvm
, вы можете пропустить шаг 2 ниже. Конечно, вы также можете увидеть вышеупомянутое сообщение об ошибке в случае, если ваш системный (или вторичный раздел) данных был поврежден или не может быть найден (см. Шаг 3).
Шаг 1: Смонтируйте вашу систему, загрузите разделы, следуя вышеупомянутому руководству
Допустим, ваш (ext2) загрузочный раздел - / dev / sdX1, ваш (зашифрованный) раздел подкачки - / dev / sdX2, ваш (зашифрованный) раздел данных - / dev / sdX3, и вы успешно расшифровали последний, используя cryptsetup luksOpen /dev/sdX3 data
, после чего смонтировали это: mkdir /tmp/data; mount /dev/mapper/data /tmp/data
.
Обратите внимание на bind mounts в руководстве и убедитесь, что вы смонтировали / dev / sdX1, чтобы вы могли получить к нему доступ из каталога / boot системного раздела (это очень важно, так как мы должны его выполнить update-initramfs
).
Далее мы предполагаем, что вы успешно выполнили chroot /tmp/data/@ubuntu1510
(или как называется ваш смонтированный системный раздел)
Шаг 2: избавиться от сообщения об ошибке выше
Я использую btrfs (как вы, наверное, догадались из упомянутого имени подобъема), поэтому lvmetad можно легко отключить следующим образом без потери функциональности:
- отредактируйте /etc/lvm/lvm.conf и измените
use_lvmetad=1
наuse_lvmetad=0
- выполнять
update-initramfs -k $(uname -r) -u ; sync
Теперь вы можете перезагрузиться, и сообщение об ошибке должно исчезнуть. Тем не менее, в моем случае следующее сообщение об ошибке [1] указало мне на основную проблему, упомянутую выше, поэтому пока мы ...
Шаг 3: Убедитесь, что / etc / crypttab указывает на правильные, неповрежденные разделы
Сначала запустите sfdisk --list /dev/sdX
и убедитесь, что ваш зашифрованный раздел подкачки (в моем случае / dev / sdX2) на самом деле не отображается как (обычный) раздел подкачки. Если это так (как в моем случае), это означало, что при загрузке, например с использованием аварийного диска, вероятно, будет использоваться этот доступный раздел подкачки, что приведет к перезаписи метаданных, связанных с cryptsetup (ключевая фраза и UUID).
Далее, посмотрите на / dev / disk / by-uuid и сравните соответствующие UUID ваших зашифрованных разделов с теми, что содержатся в / etc / crypttab. Мое предположение на данный момент: в вашем случае, есть несоответствие.
Если выделенный зашифрованный раздел подкачки нигде не находится ниже / dev / disk / by-uuid, то это потому, что он в настоящее время используется вашей спасательной системой. В этом случае сделайте следующее:
- не забудьте прекратить использование раздела:
swapoff -a
- переформатируйте его:
mkfs.ext2 /dev/sdX2
(это крайне важно , особенно при использовании GPT-разделов [2], так как он устраняет ошибку, о которой я упоминал ранее. Вероятная причина появления раздела с типом «swap» в списке sfdisk заключается в том, что вы / я по ошибке использовали mkswap /dev/sdX2
при настройке раздела в начале.)
- следуйте инструкциям, чтобы зашифровать раздел и установить пароль; после этого откройте его с помощью cryptsetup и правильно переформатируйте теперь расшифрованный раздел (используя что-то вроде
mkswap /dev/mapper/swap
)
- убедитесь, что
sfdisk --list /dev/sdX
не будет идентифицировать раздел подкачки как таковой (в этом случае повторите последние шаги)
Теперь еще раз проверьте, что UUID, перечисленные в / etc / crypttab, совпадают с тем, что вы видите ниже / dev / disk / by-uuid для ваших соответствующих зашифрованных разделов.
Опять же, чтобы сделать изменения постоянными, вы должны выполнить, update-initramfs
как показано выше.
Если вы удовлетворены, убедитесь, что все записано на диск, и перезагрузите систему (не нужно размонтировать все вручную). После этого ваша проблема должна исчезнуть.
[1] может быть, я не обращал внимания на первый раз или первое сообщение об ошибке «маскировало» второе; т. е. только после перезагрузки (с помощью use_lvmetad=0
) мне было предложено « Чтение всех физических томов. Это может занять некоторое время ... » (повторяется несколько раз), за которым следует « ALERT! / dev / disk / by-uuid / .. не существует . (Следует отметить, что update-initramfs
также жаловались на отсутствующий раздел.)
[2] потому что их тип вычитается из анализа их содержимого и в конечном итоге не определяется флагом / байтом (вот почему нет простого способа, например, изменить тип файловой системы GPT с помощью [g]parted
.)