Почему вторая система Fedora запрашивает ключ LUKS2 от первой системы Fedora при загрузке?
У меня установлена первая система Fedora с зашифрованными разделами:
├─sda1 256M 0 part /boot/efi
├─sda2 1G 0 part /boot
├─sda3 37G 0 part
│ └─ 37G 0 crypt /
├─sda4
│ └─50G 0 crypt /home
Зашифрованы только корневой раздел (/) и домашняя директория (/home). При загрузке первая система запрашивает ключ один раз, и проблем нет.
Если я вручную устанавливаю вторую систему Fedora на тот же диск (с шифрованием или без него), она все равно запрашивает ключ от первой системы. Неважно, что после этого я ввожу неверный ключ от первой системы 2-3 раза - система все равно загружается без проблем.
Разметка второй системы:
─sda9 8:9 0 244M 0 part /boot/efi
├─sda10 8:10 0 954M 0 part /boot
├─sda11 8:11 0 32.6G 0 part /
└─sda12 8:12 0 37.3G 0 part /home
В чем может быть причина такого поведения?
Основная причина, по которой вторая система Fedora запрашивает ключ LUKS2 от первой системы, связана с тем, как GRUB обрабатывает обнаружение зашифрованных разделов при загрузке. Даже если вторая система не имеет явного шифрования, GRUB пытается обнаружить и разблокировать все найденные LUKS-контейнеры на диске.
Содержание
- Почему GRUB запрашивает ключ от первой системы
- Техническое объяснение проблемы
- Способы решения проблемы
- Предотвращение будущих проблем
- Проверка текущей конфигурации GRUB
Почему GRUB запрашивает ключ от первой системы
GRUB (Grand Unified Boot Loader) при загрузке автоматически сканирует все доступные разделы на предмет зашифрованных контейнеров LUKS. Когда у вас на диске уже есть первая система с LUKS-разделами, GRUB обнаруживает эти контейнеры и пытается их разблокировать, независимо от того, какую именно систему вы пытаетесь загрузить.
В вашем случае, несмотря на то что вторая система не использует шифрование, GRUB все равно обнаруживает LUKS-контейнеры от первой системы (sda3 и sda4) и запрашивает пароль для их разблокировки. Это поведение проявляется из-за следующих факторов:
- Автоматическое обнаружение: GRUB имеет встроенную поддержку
cryptodiskи автоматически сканирует диски на наличие LUKS-разделов - Общая среда загрузки: Обе системы используют один и тот же диск, поэтому GRUB видит все разделы
- Отсутствие правильной конфигурации: GRUB не настроен игнорировать неактуальные зашифрованные разделы
Техническое объяснение проблемы
Как работает GRUB с LUKS
Согласно документации Fedora, GRUB 2 поддерживает работу с зашифрованными дисками через модуль cryptodisk. Процесс выглядит следующим образом:
- GRUB загружается и сканирует все доступные устройства
- Если обнаруживается LUKS-контейнер, GRUB запрашивает пароль для его разблокировки
- После успешной разблокировки GRUB может загрузить ядро и initramfs
Проблема с несколькими системами
Как объясняется в сообществе Arch Linux, GRUB не передает пароль или состояние разблокировки в systemd. Это означает, что каждый LUKS-контейнер требует отдельной разблокировки.
В вашем сценарии:
- Первая система имеет зашифрованные корневой раздел (sda3) и домашний каталог (sda4)
- Вторая система не имеет шифрования, но GRUB все равно обнаруживает существующие LUKS-контейнеры
- GRUB пытается разблокировать все найденные контейнеры, запрашивая пароль от первой системы
Способы решения проблемы
1. Отключение автоматического обнаружения LUKS
Вы можете настроить GRUB так, чтобы он не пытался автоматически обнаруживать и разблокировать LUKS-контейнеры. Для этого отредактируйте файл /etc/default/grub:
sudo nano /etc/default/grub
Найдите строку GRUB_ENABLE_CRYPTODISK=y и замените ее на:
GRUB_ENABLE_CRYPTODISK=n
Затем обновите конфигурацию GRUB:
sudo grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg
2. Использование отдельного загрузочного раздела
Как рекомендовано на Unix Stack Exchange, для каждой системы используйте отдельный загрузочный раздел:
- Первая система: /boot на sda2
- Вторая система: /boot на sda10
Это предотвратит конфликт обнаружения GRUB.
3. Настройка GR_PRELOAD_MODULES
Добавьте в /etc/default/grub:
GRUB_PRELOAD_MODULES="luks cryptodisk"
И укажите конкретные разделы, которые нужно проверять:
GRUB_CMDLINE_LINUX="cryptdevice=/dev/sda3:rootfs cryptdevice=/dev/sda4:homefs"
4. Полное отключение os-prober
Если вторая система не требуется в меню GRUB первой системы, отключите автоматическое обнаружение:
GRUB_DISABLE_OS_PROBER=true
Предотвращение будущих проблем
1. Планирование установки
Перед установкой второй системы:
- Создайте отдельный раздел для загрузки каждой системы
- Используйте разные имена для GRUB конфигураций
- Рассмотрите возможность использования LVM для лучшего управления
2. Регулярное обновление GRUB
После изменений в системе всегда обновляйте конфигурацию GRUB:
sudo grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg
3. Резервное копирование конфигурации
Сохраняйте копии важных конфигурационных файлов:
sudo cp /etc/default/grub /etc/default/grub.backup
sudo cp /boot/efi/EFI/fedora/grub.cfg /boot/efi/EFI/fedora/grub.cfg.backup
Проверка текущей конфигурации GRUB
Чтобы понять текущую конфигурацию GRUB, выполните:
sudo cat /etc/default/grub
sudo cat /boot/efi/EFI/fedora/grub.cfg | grep -i crypt
Ищите следующие параметры:
GRUB_ENABLE_CRYPTODISKGRUB_PRELOAD_MODULESGRUB_CMDLINE_LINUX- Настройки
cryptdevice
Если вы видите упоминания sda3 или sda4 в конфигурации GRUB второй системы, это объясняет, почему запрашивается пароль от первой системы.
Заключение
Проблема возникает из-за того, что GRUB автоматически обнаруживает все LUKS-контейнеры на диске, независимо от того, какая система загружается. Основные решения:
- Отключить автоматическое обнаружение LUKS в GRUB через
GRUB_ENABLE_CRYPTODISK=n - Использовать отдельные загрузочные разделы для каждой системы
- Настроить GRUB так, чтобы он проверял только необходимые разделы
- Отключить os-prober, если вторая система не нужна в меню загрузки
Для вашего случая рекомендуем начать с отключения GRUB_ENABLE_CRYPTODISK, так как вторая система не использует шифрование. Это предотвратит ненужные запросы паролей при загрузке второй системы.
Источники
- LUKS2 encrypted boot on Fedora - how to set up correctly? - Fedora Discussion
- Working with the GRUB 2 Boot Loader :: Fedora Docs
- How to get a dual boot (2 Linux OSs) system working when both are LUKS-encrypted - Unix & Linux Stack Exchange
- System asking for 3 passwords on boot - Arch Linux Forums
- Using a single passphrase to unlock multiple encrypted disks at boot - Unix & Linux Stack Exchange
- Let Passphrase Be Asked Only Once During Boot - Gentoo Configuration Guide