LVM PE перешел на новый PV, теперь загрузка Linux останавливается после расшифровки устройства LUKS

272
Porcelain Mouse

Я перенес все экстенты LV с одного PV на новый PV. И старые, и новые PV были зашифрованными устройствами LUKS. корень является одним из мигрированных LV.

Это не сработало, так как после миграции boot даже не пытался разблокировать новый LUKS PV. Он запрашивал пароль для старых LUKS, которых больше нет, эти диски уже переназначены и перезаписаны.

Однако, если я использую параметры ядра rd.auto = 1 и удаляю старые параметры ядра, которые определяют UUID старого PV, я могу получить linux для загрузки и запросить правильный пароль. Тем не менее, это все еще не работает.

Прежде чем дать пароль, он говорит

dracut-initqueue /usr/bin/crypt-run-generator: line 14: cryptsetup: command not found Unnecessary job for dev-mapper-luks-<UUID of new PV LUKS> was removed

Итак, он автоматически находит новый раздел LUKS, и позвольте мне разблокировать его, но это все, после того как он разочаровался в поиске на нем пригодных для использования файловых систем. Зачем это делать?

На этом этапе процесс загрузки останавливается, ожидая, пока не завершатся требуемые задания. Я забыл все их имена, но одно - cryptsetup.target, и я думаю, что один монтировал root. Итак, это имеет смысл.

Но я не знаю, как настроить grub и dracut, чтобы это работало. Похоже, что у initrd есть конфигурация, говорящая только о запуске LVM на старом PV. Когда я загружаю изображение в реальном времени, все LV там и данные выглядят великолепно.

Какая конфигурация grub2 (efi mode) и dracut мне нужна, чтобы это исправить?

РЕДАКТИРОВАТЬ После публикации я пробовал много вещей. Я нашел параметры кереля, которые я считаю правильными, но они, кажется, не имеют никакого значения. Я создал новый образ initrd с dracut, к которому я принудительно добавил cryptsetup и новый исправленный файл / etc / crypttab. Это, похоже, помогло, и все ошибки теперь ушли ... но все равно не загрузится! Используя последние опции и initrd, которые я пробовал, процесс загрузки не запрашивает парольную фразу. Он говорит: «Отправка в Plymoth для запроса пароля», но это просто останавливает.

Теперь я попробовал один из вариантов ядра - rd.shell. Это дало мне скорлупу после истечения времени ожидания, не в состоянии найти root. Из оболочки dracut я могу запустить RAID PV mdadm с помощью --assemble --scan, luks. Откройте его с помощью ключевой фразы, и все логические тома будут прямо здесь. Так что я до сих пор не понимаю, чего он хочет.

1
Абсолютно корова, которая звучит безумно !! Удалось ли вам сделать резервную копию данных до того, как они были зашифрованы, или всего бита тома за битом заранее? Не уверен в ответе, который поможет вам лично, но сообщите нам, если у вас есть какая-либо резервная копия данных, которые вы взяли до выполнения операции, вызвавшей это. Pimp Juice IT 7 лет назад 0
Не уверен, почему это важно, но да, я сделал. Однако резервное копирование бесполезно, поскольку я не потерял никаких данных. Вся система, все файловые системы в порядке, там, где я их оставил. Я вижу все, когда загружаюсь с живого образа. Я просто не могу загрузить саму систему. Я не понимаю, как это работало раньше и не сейчас. Porcelain Mouse 7 лет назад 0

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

0
Porcelain Mouse

Как я и надеялся, применяется «стандартный» подход к настройке загрузки Linux, но мне понадобилось много времени, чтобы переучить его, так как многое изменилось с тех пор, как мне пришлось использовать его в последний раз.

  • загрузить живое изображение
  • собрать MD, разблокировать LUKS, проверить LVM и т. д.
  • построить целевую систему в тюрьме chroot
    • mount / newroot ../boot ../boot/efi и ../var, по крайней мере
    • mount -t sysfs sysfs / newroot / sys
    • mount -t proc нет / newroot / proc
    • mount -t bind / dev / newroot / dev
    • mount -t bind / run / rnewroot / run
  • chroot / newroot
  • из тюрьмы исправьте все как нужно (/ etc / fstab / etc / crypttab /etc/mdadm.conf / etc / lvm / etc.)
  • и исправить grub2 CMDLINE env var с новыми параметрами ядра
    • dracut --print-cmdline в Fedora / RHEL / CenOS выдаст минимальный набор параметров. Это очень полезно, так как трудно узнать, что нужно вашему дистрибутиву, и идти в ногу с последними опциями ядра. Более того, избавляет вас от необходимости отслеживать UUID для устройств luks / md!
    • для Ubuntu?
    • для арки?
  • собрать новый конфиг grub2
    • grub2-mkconfig [-o]
  • установите grub2, если необходимо
    • для BIOS grub2-установить
    • для EFI, зависимый дистрибутив
    • dnf переустановить grub-efi grub-efi-modules shim для Fedora?
    • Ubuntu?
    • Arch?
  • загрузочный образ regen intird / initramfs
    • Dracut для Fedora
    • Ubuntu?
    • Arch?