1

Я использую LVM с Arch Linux. Пожалуйста, найдите структуру диска ниже.

NAME              MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINT
sda                 8:0    0   50G  0 disk  
|-sda1              8:1    0  512M  0 part  
| `-cryptboot     254:3    0  510M  0 crypt 
|   `-vgboot-boot 254:4    0  508M  0 lvm   /boot
`-sda2              8:2    0 49.5G  0 part  
  `-cryptlvm      254:0    0 49.5G  0 crypt 
    |-vgos-swap   254:1    0    4G  0 lvm   [SWAP]
    `-vgos-root   254:2    0 45.5G  0 lvm   /
sr0                11:0    1  560M  0 rom   

Когда я загружаюсь в свою систему, я получаю запрос пароля для моего загрузочного раздела, потому что он зашифрован. Но я хочу избежать этого запроса пароля, и мой загрузочный раздел должен находиться в lvm. Пожалуйста, дайте мне знать, если кто-нибудь сделал это.

Если вы видите диаграмму выше, мой корень также находится в lvm. после выбора кернала он также запрашивает пароль. Но это не проблема.

1 ответ1

1

Вы получаете запрос двойного пароля, потому что ваш раздел /boot зашифрован. Во-первых, GRUB запрашивает пароль, потому что он должен загрузить ядро из зашифрованного /boot . Затем ядро снова запрашивает пароль для расшифровки / .

Есть два подхода к этой проблеме:

  1. Не используйте зашифрованные /boot . GRUB не будет спрашивать пароль. Это позволит любому поработать с файлами ядра и initramfs . Например, можно заменить ядро на вредоносное, которое обращается к вашему зашифрованному / после ввода пароля.

  2. Создайте ключ дешифрования и добавьте его в свободный слот 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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .