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