НейроАгент

Почему вторая Fedora запрашивает ключ LUKS2 от первой системы?

Узнайте, почему вторая система Fedora запрашивает ключ LUKS от первой системы при загрузке и как это исправить. Полное руководство по решению проблемы с GRUB и шифрованием.

Вопрос

Почему вторая система 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 (Grand Unified Boot Loader) при загрузке автоматически сканирует все доступные разделы на предмет зашифрованных контейнеров LUKS. Когда у вас на диске уже есть первая система с LUKS-разделами, GRUB обнаруживает эти контейнеры и пытается их разблокировать, независимо от того, какую именно систему вы пытаетесь загрузить.

В вашем случае, несмотря на то что вторая система не использует шифрование, GRUB все равно обнаруживает LUKS-контейнеры от первой системы (sda3 и sda4) и запрашивает пароль для их разблокировки. Это поведение проявляется из-за следующих факторов:

  1. Автоматическое обнаружение: GRUB имеет встроенную поддержку cryptodisk и автоматически сканирует диски на наличие LUKS-разделов
  2. Общая среда загрузки: Обе системы используют один и тот же диск, поэтому GRUB видит все разделы
  3. Отсутствие правильной конфигурации: GRUB не настроен игнорировать неактуальные зашифрованные разделы

Техническое объяснение проблемы

Как работает GRUB с LUKS

Согласно документации Fedora, GRUB 2 поддерживает работу с зашифрованными дисками через модуль cryptodisk. Процесс выглядит следующим образом:

  1. GRUB загружается и сканирует все доступные устройства
  2. Если обнаруживается LUKS-контейнер, GRUB запрашивает пароль для его разблокировки
  3. После успешной разблокировки GRUB может загрузить ядро и initramfs

Проблема с несколькими системами

Как объясняется в сообществе Arch Linux, GRUB не передает пароль или состояние разблокировки в systemd. Это означает, что каждый LUKS-контейнер требует отдельной разблокировки.

В вашем сценарии:

  • Первая система имеет зашифрованные корневой раздел (sda3) и домашний каталог (sda4)
  • Вторая система не имеет шифрования, но GRUB все равно обнаруживает существующие LUKS-контейнеры
  • GRUB пытается разблокировать все найденные контейнеры, запрашивая пароль от первой системы

Способы решения проблемы

1. Отключение автоматического обнаружения LUKS

Вы можете настроить GRUB так, чтобы он не пытался автоматически обнаруживать и разблокировать LUKS-контейнеры. Для этого отредактируйте файл /etc/default/grub:

bash
sudo nano /etc/default/grub

Найдите строку GRUB_ENABLE_CRYPTODISK=y и замените ее на:

GRUB_ENABLE_CRYPTODISK=n

Затем обновите конфигурацию GRUB:

bash
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. Планирование установки

Перед установкой второй системы:

  1. Создайте отдельный раздел для загрузки каждой системы
  2. Используйте разные имена для GRUB конфигураций
  3. Рассмотрите возможность использования LVM для лучшего управления

2. Регулярное обновление GRUB

После изменений в системе всегда обновляйте конфигурацию GRUB:

bash
sudo grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg

3. Резервное копирование конфигурации

Сохраняйте копии важных конфигурационных файлов:

bash
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, выполните:

bash
sudo cat /etc/default/grub
sudo cat /boot/efi/EFI/fedora/grub.cfg | grep -i crypt

Ищите следующие параметры:

  • GRUB_ENABLE_CRYPTODISK
  • GRUB_PRELOAD_MODULES
  • GRUB_CMDLINE_LINUX
  • Настройки cryptdevice

Если вы видите упоминания sda3 или sda4 в конфигурации GRUB второй системы, это объясняет, почему запрашивается пароль от первой системы.

Заключение

Проблема возникает из-за того, что GRUB автоматически обнаруживает все LUKS-контейнеры на диске, независимо от того, какая система загружается. Основные решения:

  1. Отключить автоматическое обнаружение LUKS в GRUB через GRUB_ENABLE_CRYPTODISK=n
  2. Использовать отдельные загрузочные разделы для каждой системы
  3. Настроить GRUB так, чтобы он проверял только необходимые разделы
  4. Отключить os-prober, если вторая система не нужна в меню загрузки

Для вашего случая рекомендуем начать с отключения GRUB_ENABLE_CRYPTODISK, так как вторая система не использует шифрование. Это предотвратит ненужные запросы паролей при загрузке второй системы.

Источники

  1. LUKS2 encrypted boot on Fedora - how to set up correctly? - Fedora Discussion
  2. Working with the GRUB 2 Boot Loader :: Fedora Docs
  3. How to get a dual boot (2 Linux OSs) system working when both are LUKS-encrypted - Unix & Linux Stack Exchange
  4. System asking for 3 passwords on boot - Arch Linux Forums
  5. Using a single passphrase to unlock multiple encrypted disks at boot - Unix & Linux Stack Exchange
  6. Let Passphrase Be Asked Only Once During Boot - Gentoo Configuration Guide