Вы получаете запрос двойного пароля, потому что ваш раздел /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