Вопрос или проблема
Моя установка:
Предварительные требования:
- Двойная загрузка 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
- /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 должна:
- Распознать зашифрованный раздел и запросить пароль для его расшифровки.
- Активировать группы LVM с помощью
lvchange -ay
, чтобы получить доступ к логическим томам.
Файлы /etc/crypttab и /etc/fstab: Эти файлы конфигурации играют ключевую роль в процессе загрузки. Файл crypttab
определяет, какие шифрованные тома необходимо расшифровать, а fstab
указывает, какие файловые системы должны быть смонтированы и где.
Пример из вашего описания
-
Файл /etc/crypttab:
Вы добавили записи в вашcrypttab
, но, как вы упомянули, не могли найти его изначально. Неправильная или отсутствующая запись в этом файле может помешать initramfs идентифицировать и расшифровать нужное устройство на этапе загрузки. Повторная проверка и использование корректных UUID могут исправить это. -
Файл /etc/fstab:
Вашfstab
выглядит корректно, но вы должны удостовериться, что все UUID в записях соответствуют актуальным значениям из командыblkid
. -
Использование update-initramfs:
Вы обновили initramfs с помощьюupdate-initramfs -k all -c
, что правильно, но это не решило проблему с активацией LVM.
Применение и рекомендации
-
Проверка правильности UUID: Убедитесь, что в файлах
crypttab
иfstab
указаны правильные UUID для всех разделов. Используйте командуblkid
для получения точных UUID и обновления конфигурационных файлов. -
Редактирование /etc/crypttab:
Каждый зашифрованный раздел должен правильно идентифицироваться. Если у вас разные наборы UUID для одного устройства, это может вызывать сбой. Убедитесь, что формат файла следующий:<target name> UUID=<UUID вашего раздела> none luks
-
Редактирование /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 ... }
-
Обновление конфигурации Initramfs:
После всех изменений снова выполнитеsudo update-initramfs -u
, чтобы удостовериться, что все изменения отражены при загрузке системы. -
Тестирование изменений:
После внесения изменений перезагрузите систему, чтобы проверить, удаётся ли initramfs корректно производить все необходимые операции для расшифровки и активации LVM.
Заключение
Ваш случай показывает сложность работы с шифрованием и логическими томами, особенно в многосегментных конфигурациях с узким взаимодействием между LUKS и LVM. Следуя вышеописанным шагам и проверив конфигурации, вы должны стабилизировать загрузку вашей системы и видеть, как система активирует и монтирует все объекты без необходимости вручную вмешиваться в командной строке.