Вы получаете запрос двойного пароля, потому что ваш раздел /boot зашифрован. Во-первых, GRUB запрашивает пароль, потому что он должен загрузить ядро из зашифрованного /boot . Затем ядро снова запрашивает пароль для расшифровки / .
Есть два подхода к этой проблеме:
Не используйте зашифрованные /boot . GRUB не будет спрашивать пароль. Это позволит любому поработать с файлами ядра и initramfs . Например, можно заменить ядро на вредоносное, которое обращается к вашему зашифрованному / после ввода пароля.
Создайте ключ дешифрования и добавьте его в свободный слот LUKS на / , затем вставьте этот ключ в initramfs. Это позволит ядру получить доступ / без пароля.
Настройка для # 2 довольно сложна, поэтому я перейду к первому подходу. Я набираю это из головы, без каких-либо испытаний. Сделайте резервные копии и действуйте осторожно. Я не несу ответственности за потерю данных и другие проблемы, вызванные этим процессом.
Вам понадобится загрузочный носитель Linux с cryptsetup и resize2fs . Я бы порекомендовал использовать флешку Ubuntu. Вы также можете заменить последний на partclone . Вам также потребуется около 500 МБ свободного дискового пространства для хранения промежуточного расшифрованного /boot образа.
Загрузитесь с вашего носителя Linux. Получите доступ к LVM (честно говоря, я никогда не имел дело с этим, поэтому я не знаю, нужны ли какие-либо дополнительные шаги - есть вероятность, что Ubuntu справится с этим автоматически). Откройте зашифрованный /boot:
cryptsetup open /dev/<boot> cryptboot
Создайте образ незашифрованной загрузки: (чтобы увидеть прогресс используйте pv вместо cat)
cat /dev/mapper/cryptboot > /media/ubuntu/<someExternalStorage>/boot.img
Закрыть /boot:
sync
cryptsetup close cryptboot
Записать незашифрованный /boot раздел и настроить размер файловой системы:
cat /media/ubuntu/<someExternalStorage>/boot.img > /dev/<boot>
resize2fs /dev/<boot>
Получить UUID для /boot (запомните это):
blkid /dev/<boot>
Откройте и смонтируйте / , обновите fstab:
cryptsetup open /dev/<root> cryptroot
mkdir -p /mnt/root
mount /dev/mapper/cryptroot /mnt/root
cd /mnt/root
vi etc/fstab
Настройте строку, которая монтирует /boot чтобы использовать новый UUID вместо записи /dev/mapper/... Вам также может понадобиться удалить строку /boot из etc/crypttab .
Обновите initramfs (этот может сломаться в Ubuntu, если вашей основной ОС является Arch ... Я не уверен, так что просто будь осторожен)
cd /mnt/root
mount -t sysfs sysfs sys
mount -t tmpfs tmp tmp
mount -t proc proc proc
mount --bind /dev dev
mount /dev/<boot> boot
mount --bind /boot/efi boot/efi
chroot
update-initramfs -u -k all
exit
Насколько я помню, этого должно быть достаточно. Вы также можете упростить настройку GRUB, отключив зашифрованную загрузку в ее файлах конфигурации. Это может немного ускорить загрузку, но не обязательно.
Убери за собой:
umount boot/efi boot dev proc tmp sys
cd ..
umount root
cryptsetup close cryptroot