Я ищу способ реализовать следующую настройку в Gentoo:
/dev/sda1 -> /boot (ext2)
/dev/sda2 -> Luks encrypted
|
+-lvm-vg1
|
+- /dev/mapper/root-fs -> / (ext4)
+- /dev/mapper/swap -> (swap)
По сути, это та же настройка, которую использует Ubuntu при графической установке.
Я знаю, как вручную настроить LUKS и даже настройку LVM, но я застреваю, когда собираю их вместе при загрузке. Как мне сказать ядру и grub разблокировать раздел LUKS и смонтировать правильные разделы LVM?
решение1
Итак, я понял:
Я частично разбил диск, следуя инструкции:
# parted -a optimal /dev/sda
GNU Parted 2.3
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted)mklabel gpt
(parted)unit mib
(parted)mkpart primary 1 3
(parted)name 1 grub
(parted)set 1 bios_grub on
(parted)mkpart primary 3 131
(parted)name 2 boot
(parted)mkpart primary 131 -1
(parted)name 3 lvm
(parted)set 2 boot on
(parted)q
Единственное изменение, которое я сделал, это не делал раздел подкачки и корневой раздел, а вместо этого создал один раздел и назвал его lvm (имя не имеет значения). Далее я настроил LUKS:
# Load the dm-crypt module (probably not nessesary)
modprobe dm-crypt
# Crypt the partition we named lvm (in my case that would be /dev/sda3)
cryptsetup -c aes-cbc-essiv:sha256 -v luksFormat -s 256 /dev/sda3
# Open the luks volume
cryptsetup luksOpen /dev/sda3 sda3-luks
# Setup a LVM physical volume
lvm pvcreate /dev/mapper/sda3-luks
# Setup a volume group
lvm vgcreate vg0 /dev/mapper/sda3-luks
После этого настройте фактические объемы:
# Fist setup the swap volume
lvm lvcreate -L 2048M vg0
# Then check how many 'extends' are free (Free PE) using lvm vgdisplay
# use that number to use up the rest of the space:
lvm lvcreate -l 7809 vg0
В остальном мы в основном следуем руководству, за исключением тех случаев, когда вы обычно делаете что-то для /dev/sda3
(swap) или /dev/sda4
(root), теперь вы будете использовать /dev/mapper/vg0-lvol0
(swap) и /dev/mapper/vg0-lvol1
.
Важно, при генерации ядра (я использовал genkernel
для этого) сначала установить cryptsetup с помощью emerge -av cryptsetup
., а затем запустить genkernel
со следующими параметрами:
genkernel --luks --lvm --busybox --menuconfig all
Обязательно настройте ядро для поддержки LVM и выбранных алгоритмов хеширования и шифрования (в моем случае aes
и sha256
). Затем продолжайте следовать руководству, пока не запустите grub
-config.
Перед запуском grub2-mkconfig
необходимо отредактировать файл /etc/defaults/grub
. (Должен отметить, что я не уверен, что это лучшее решение, но оно работает для меня).
В этом файле я поместил следующее (найдите и раскомментируйте параметр):
GRUB_CMDLINE_LINUX="crypt_root=UUID=<uuid of sda3> dolvm"
Вы можете найти правильный UUID, используя ls -l /dev/disk/by-uuid
. После этого grub2-mkconfig
вы должны найти ядро и initramfs в /boot
. Снова следуйте руководству, и после перезагрузки вы должны получить запрос на ввод пароля.
Надеюсь, это поможет кому-нибудь ещё.