Linux Mint 22: Проблемы настройки с initramfs (LUKS-зашифрованный раздел с LVM для root, home, swap)

Вопрос или проблема

Моя установка:
Предварительные требования:

  • Двойная загрузка Windows 10/ ранее Ubuntu 24.04 (с 22.04)
  • Таблица разделов:
    /dev/nvme0n1p7                   202G   96M  202G   1%
    /ntfs_data
    /dev/nvme0n1p3                   230G   54G  177G  24%
    /windows
    /dev/nvme0n1p5                   3,0G  288M  2,6G  11% /boot
    /dev/mapper/ubuntu--vg-home      2,8T  1,7T  964G  64% /home
    /dev/nvme0n1p1                   256M  158M   99M  62%
    /boot/efi
    tmpfs                            1,6G  300K  1,6G   1% /run/user/1000
    /home/xxx/.Private               2,8T  1,7T  964G  64% /home/xxx
    /dev/mapper/usb1TB_202304_crypt  938G  890G  559M 100%
    /backup1TB
    /backup1TB/home_xxx_bck          938G  890G  559M 100%
    /backup1TB/home_xxx_bck
    

    gparted снимок экрана таблицы разделов моего SSD

  • /dev/nvme0n1p6 – это зашифрованное устройство LUKS с настроенным LVM:
    • корневой (243 ГБ)
    • домашний (2,8 ТБ)
    • swap ( 16 ГБ)

Шаги установки для вызова ошибки в initramfs:

Я использовал установочный USB Linux Mint 22 (образ загружен в январе 2025 года). Мне удалось установить пакет LVM2 и cryptsetup, чтобы получить поддержку для LVM и LUKS. Я сконфигурировал LVM еще в 2022 году на Ubuntu 22.04 следующим образом:

# vgs
  WARNING: Couldn't find device with uuid CQVk01-WJQL-pjIi-opcT-oESN-UOb1-judhlH.
  WARNING: Couldn't find device with uuid I5OUXJ-OkxW-403c-rEVJ-BmyG-Rd4M-r7SSFs.
  WARNING: VG ubuntu-vg is missing PV CQVk01-WJQL-pjIi-opcT-oESN-UOb1-judhlH (last written to /dev/mapper/ubuntu-vg1).
  WARNING: VG ubuntu-vg is missing PV I5OUXJ-OkxW-403c-rEVJ-BmyG-Rd4M-r7SSFs (last written to /dev/mapper/ubuntu-vg2).
  VG        #PV #LV #SN Attr   VSize  VFree
  ubuntu-vg   3   4   0 wz-pn- <6,01t <180,97g

# pvs
  WARNING: Couldn't find device with uuid CQVk01-WJQL-pjIi-opcT-oESN-UOb1-judhlH.
  WARNING: Couldn't find device with uuid I5OUXJ-OkxW-403c-rEVJ-BmyG-Rd4M-r7SSFs.
  WARNING: VG ubuntu-vg is missing PV CQVk01-WJQL-pjIi-opcT-oESN-UOb1-judhlH (last written to /dev/mapper/ubuntu-vg1).
  WARNING: VG ubuntu-vg is missing PV I5OUXJ-OkxW-403c-rEVJ-BmyG-Rd4M-r7SSFs (last written to /dev/mapper/ubuntu-vg2).
  PV                      VG        Fmt  Attr PSize  PFree
  /dev/mapper/ubuntu-luks ubuntu-vg lvm2 a--   3,21t <180,97g
  [unknown]               ubuntu-vg lvm2 a-m  <1,40t       0
  [unknown]               ubuntu-vg lvm2 a-m  <1,40t       0

# lvs
  LV         VG        Attr       LSize    Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  backupHome ubuntu-vg -wi-----p-    2,79t
  home       ubuntu-vg -wi-ao----    2,78t
  root       ubuntu-vg -wi-ao---- <247,33g
  swap_1     ubuntu-vg -wi-ao----   16,00g

Я открыл bash, открыл LUKS и активировал LVM (LVM был создан ранее под 22.04 тогда еще в 2022 году):

# cryptsetup luksOpen /dev/nvmeon1p6 ubuntu-luks
# lvchange -ay ubuntu-vg

Затем я запустил программу установки и выбрал ручной режим, когда дело дошло до назначения разделов, которые я сконфигурировал, как показано выше, с форматированием корня и /dev/nvme0n1p5 в качестве (незашифрованного) раздела /boot.

После этого я загружаюсь в эту новую установленную установку Linux Mint 22. Но есть одно смешное замечание: в первый раз графический диалог с паролем в последовательности загрузки в начале всплывал только один раз и деактивировал luks, но не смог корректно назначить раздел LVM.
После этого даже зашифрованный объем LUKS не был найден или распознан, и в каждом случае я оказался после долгого ожидания в busybox initramfs.

Здесь мне всегда приходилось повторять вышеуказанные две инструкции, прежде чем я мог выйти из initramfs и продолжить загрузку в мою систему.

Я выяснил, что в /etc/crypttab не было crypttab и я установил его следующим образом

# cat /etc/crypttab
# <target name>         <source device>                           <key file>      <options>
# монтированы /, /home, swap_1
ubuntu-luks              UUID=xxx none            luks
# монтировано как /backupHome LV часть1, частичная загрузка (не должна присутствовать во время загрузки)
ubuntu-luks_backupHome1  UUID=xxx none            luks
#ubuntu-luks_backupHome1 UUID=xxx none            luks,noauto
# монтировано как /backupHome LV часть2, частичная загрузка (не должна присутствовать во время загрузки)
ubuntu-luks_backupHome2  UUID=xxx none            luks
#ubuntu-luks_backupHome2 UUID=xxx none            luks,noauto
usb1TB_202304_luks       UUID=xxx none            luks

и /etc/fstab:

# cat /etc/fstab
# /etc/fstab: статическая информация файловой системы.
#
# Используйте 'blkid', чтобы распечатать универсально уникальный идентификатор для
# устройства; это может быть использовано с UUID= в качестве более надежного способа именования устройств,
# который работает даже при добавлении и удалении дисков. См. fstab(5).
#
# <file system>                           <mount point>   <type>  <options>                 <dump>  <pass>
/dev/mapper/ubuntu--vg-root               /               ext4    errors=remount-ro         0       1
# /boot был на /dev/nvme0n1p5 во время установки
UUID=xxx                                  /boot           ext4    defaults                  0       2
# /boot/efi был на /dev/nvme0n1p1 во время установки
UUID=xxx                                  /boot/efi       vfat    umask=0077                0       1
/dev/mapper/ubuntu--vg-home               /home           ext4    defaults                  0       2
# /ntfs_data был на /dev/nvme0n1p7 во время установки
UUID=xxx                                  /ntfs_data      ntfs    defaults,umask=007,gid=46 0       0
# /windows был на /dev/nvme0n1p3 во время установки
UUID=xxx                                  /windows        ntfs    defaults,umask=007,gid=46 0       0
/dev/mapper/ubuntu--vg-swap_1             none            swap    sw                        0       0
/dev/mapper/ubuntu--vg-backupHome         /backupHome     ext4    defaults,nofail           0       2

затем я обновил initramfs с
$ sudo update-initramfs -k all -c

Теперь я исправил постоянную шифрование luks (поэтому диалог появляется каждый раз во время загрузки, как описано), но активация lvm с
$ lvchange -ay ubuntu-vg
не выполняется в initramfs!

Как я могу достичь этого последнего шага – активации LV группы?

  • Примечание: Резервное lvm медиа, которое как правило является usb-накопителем, обычно не присутствует во время загрузки!!!
    # монтировано как /backupHome LV часть1, частичная загрузка (не должна присутствовать во время загрузки)
    ubuntu-luks_backupHome1  UUID=xxx none            luks
    #ubuntu-luks_backupHome1 UUID=xxx none            luks,noauto
    # монтировано как /backupHome LV часть2, частичная загрузка (не должна присутствовать во время загрузки)
    ubuntu-luks_backupHome2  UUID=xxx none            luks
    #ubuntu-luks_backupHome2 UUID=xxx none            luks,noauto
    

Ответ или решение

Чтобы понять, как активировать вашу группу логических томов (LV), необходимо разобраться в настройке шифрованных разделов на LUKS и использовании LVM в контексте вашего вопроса. Вам необходимо удостовериться, что каждый шаг настройки выполнен правильно, чтобы initramfs мог корректно распознавать и монтировать устройства при загрузке системы. Сейчас рассмотрим теорию процесса, разберем пример из вашего описания и предложим шаги по исправлению вашей ситуации.

Теория

Шифрование LUKS и группы LVM: LUKS (Linux Unified Key Setup) предоставляет надежный метод шифрования разделов. После расшифровки устройства LUKS, можно получить доступ к логическим томам, организованным с использованием LVM (Logical Volume Manager). LVM позволяет управлять дисковым пространством гибко, позволяя создавать, изменять размер и удалять тома без переустановки системы.

Для успешной загрузки система initramfs должна:

  1. Распознать зашифрованный раздел и запросить пароль для его расшифровки.
  2. Активировать группы LVM с помощью lvchange -ay, чтобы получить доступ к логическим томам.

Файлы /etc/crypttab и /etc/fstab: Эти файлы конфигурации играют ключевую роль в процессе загрузки. Файл crypttab определяет, какие шифрованные тома необходимо расшифровать, а fstab указывает, какие файловые системы должны быть смонтированы и где.

Пример из вашего описания

  1. Файл /etc/crypttab:
    Вы добавили записи в ваш crypttab, но, как вы упомянули, не могли найти его изначально. Неправильная или отсутствующая запись в этом файле может помешать initramfs идентифицировать и расшифровать нужное устройство на этапе загрузки. Повторная проверка и использование корректных UUID могут исправить это.

  2. Файл /etc/fstab:
    Ваш fstab выглядит корректно, но вы должны удостовериться, что все UUID в записях соответствуют актуальным значениям из команды blkid.

  3. Использование update-initramfs:
    Вы обновили initramfs с помощью update-initramfs -k all -c, что правильно, но это не решило проблему с активацией LVM.

Применение и рекомендации

  1. Проверка правильности UUID: Убедитесь, что в файлах crypttab и fstab указаны правильные UUID для всех разделов. Используйте команду blkid для получения точных UUID и обновления конфигурационных файлов.

  2. Редактирование /etc/crypttab:
    Каждый зашифрованный раздел должен правильно идентифицироваться. Если у вас разные наборы UUID для одного устройства, это может вызывать сбой. Убедитесь, что формат файла следующий:

    <target name>   UUID=<UUID вашего раздела> none luks
  3. Редактирование /etc/initramfs-tools/scripts/local-top/cryptroot:
    Добавьте в этот файл вызов lvchange -ay <ваша VG>, чтобы гарантировать активацию томов во время загрузки. Исправленное содержимое может выглядеть так:

    #!/bin/sh
    PREREQ="udev"
    prereqs()
    {
       echo "$PREREQ"
    }
    # если скрипт вызывается без параметров, вызовите другие prereqs()
    case "$1" in
    prereqs)
       prereqs
       exit 0
       ;;
    esac
    . /usr/share/initramfs-tools/hook-functions
    LVM_SYSTEM_DIR=/etc/lvm
    mountroot()
    {
       cryptsetup luksOpen /dev/nvmeon1p6 ubuntu-luks
       lvchange -ay ubuntu-vg
       ...
    }
  4. Обновление конфигурации Initramfs:
    После всех изменений снова выполните sudo update-initramfs -u, чтобы удостовериться, что все изменения отражены при загрузке системы.

  5. Тестирование изменений:
    После внесения изменений перезагрузите систему, чтобы проверить, удаётся ли initramfs корректно производить все необходимые операции для расшифровки и активации LVM.

Заключение

Ваш случай показывает сложность работы с шифрованием и логическими томами, особенно в многосегментных конфигурациях с узким взаимодействием между LUKS и LVM. Следуя вышеописанным шагам и проверив конфигурации, вы должны стабилизировать загрузку вашей системы и видеть, как система активирует и монтирует все объекты без необходимости вручную вмешиваться в командной строке.

Оцените материал
Добавить комментарий

Капча загружается...