Ubuntu не загружается из-за lvmetad

Ubuntu не загружается из-за lvmetad

Я следовал этому руководству по установке Ubuntu 15.10:

https://web.archive.org/web/20180530122126/http://thesimplecomputer.info/full-disk-encryption-with-ubuntu

После перезагрузки компьютера я попал в меню grub и выбрал Ubuntu. Вскоре после этого я получил эту ошибку:

/run/lvm/lvmetad.socket: connect failed: No such file or directory
WARNING: Failed to connect to lvmetad. Falling back to internal scanning.

Эти сообщения продолжают накапливаться на черном экране каждую секунду. Через некоторое время я получаю доступ к initramfsконсоли ash.

Что я делаю не так?

решение1

Сегодня я увидел ту же ошибку на ноутбуке под управлением 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.

Обратите внимание на привязки монтирования в руководстве и обязательно смонтируйте /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) мне было представлено «Чтение всех физических томов. Это может занять некоторое время..." (повторяется несколько раз), за которым следует "ВНИМАНИЕ! /dev/disk/by-uuid/... не существует.". (Следует отметить, что update-initramfsтакже жаловались на отсутствие раздела.)

[2] поскольку их тип выводится из анализа их содержимого и в конечном итоге не указывается флагом/байтом (именно поэтому нет простого способа, например, изменить тип файловой системы GPT с помощью [g]parted.)

решение2

ОшибкаFailed to connect to lvmetadможетпроисходит из-за того, что диск заполнен на 100%. Чтобы исправить это, загрузитесь с USB-флешки, смонтируйте полный диск, удалите некоторые ненужные файлы и перезагрузитесь. Я также переустановил загрузочную систему — не знаю, нужно это или нет.

Вот команды, которые решили проблему для меня, запущенные из терминала после загрузки с USB-накопителя. У меня есть стандартная Ubuntu 18.04 с полным шифрованием диска. YMMV.

  1. Смонтируйте диск:

    sudo cryptsetup luksOpen /dev/sda5 sda5_crypt
    sudo vgscan --mknodes
    sudo vgchange -ay
    sudo mount /dev/mapper/ubuntu--vg-root /mnt
    
  2. Удалить ненужные файлы ( cd /mnt/home/your_username... rm ...)

  3. (может не понадобиться) переустановите загрузочную систему:

    cd /mnt/
    sudo mount /dev/sda1 boot
    for d in dev sys proc run; do sudo mount --bind /$d $d; done
    sudo vi etc/crypttab # make sure first line uses "sda5_crypt"
    sudo chroot .
    update-grub
    grub-install /dev/sda
    update-initramfs -u -k all
    exit
    sudo umount dev sys proc run boot
    
  4. Размонтировать:

    cd /
    sudo umount /mnt
    sudo vgchange -an
    sudo cryptsetup close sda5_crypt
    
  5. Перезагрузить:

    sudo reboot
    

решение3

Ubuntu 18.04.1 LTS здесь. Он работал пару месяцев без присмотра, но когда я вернулся, я обнаружил, что клавиатура не распознана. Когда я перезагрузился, я получил сообщение «невозможно подключиться к lvmetad» и еще о том, что не удалось получить «UEFI db list».

Я установил без шифрования диска.

Сообщение UEFI было тревожным, потому что это была моя первая установка на компьютер с UEFI, поэтому у меня не было опыта, и я, честно говоря, все еще не осведомлен о полезности. Моя проблема усугублялась тем фактом, что я использовал 'lvm' на том, что должно было стать моим '/', корневым томом. (На самом деле, я уже забыл, как я ЭТОГО добился! Эй, я старый.)

Однако, когда машина не перезагрузилась, я поискал решение и не нашел ничего определенного, но заметил, что а) мой раздел EFI был меньше 500 МБ, рекомендованных на одном сайте, и б) отдельный раздел /boot/, который я организовал, вероятно, был неактуален и не использовался. Я подумал, что, возможно, неконтролируемое обновление привело к тому, что что-то заполнило выделенное ему пространство.

Я решил переустановить — и это сработало, и оставил структуру каталога /home/ нетронутой. Я не проверял /etc/, но сделал копии обоих заранее[1], так что смогу проверить позже. /etc/ действительно маленький.

Я также удалил и объединил разделы EFI и /boot/ в один больший раздел EFI (>750 МБ).

Теперь он перезагружается, но одно сообщение об ошибке мигает слишком быстро, чтобы его прочитать, и мне не предлагается загрузочное «меню» образов Linux для загрузки, вместо этого он загружается прямо в Ubuntu. Еще многое предстоит сделать, с grub, я полагаю, чтобы решить эту проблему. Но, по крайней мере, мои файлы вернулись.

[1] Я загрузил установку Ubuntu с USB-накопителя и выбрал «попробовать» Ubuntu, что позволило мне сделать копии etc и home, прежде чем выбрать «Установить» на рабочем столе.

решение4

Не обязательно загружать систему с USB или чего-то еще. У меня была та же проблема и причина - диск был заполнен на 100%. Мне помогло следующее решение.

  1. Перезагрузите систему. В BIOS быстро нажмите и удерживайте клавишу Shift, что вызовет меню GNU GRUB.

  2. После этого нажмите «e», чтобы изменить настройки Ubuntu. ВЭта проблемавы можете найти экраны. Найдите строку, начинающуюся как 'linux *', например:

    linux     /boot/vmlinuz-4-4.0-22-generic root=UUID=43ad24d3-e\
    c5b-44ee-a099-a88eb9520989 ro  quiet splash $vt_handoff
    

    Удалить:

    ro  quiet splash $vt_handoff
    

    И добавить:

    init=/bin/bash
    

    Когда все будет готово, нажмите Ctrl+xили F10для загрузки.

  3. Корневой раздел смонтирован только для чтения. Чтобы смонтировать его для чтения/записи, введите команду

    mount -o remount,rw /
    
  4. Узнайте, что пошло не так:

    df -hT
    

Связанный контент