Estou procurando uma maneira de fazer a seguinte configuração acontecer no Gentoo:
/dev/sda1 -> /boot (ext2)
/dev/sda2 -> Luks encrypted
|
+-lvm-vg1
|
+- /dev/mapper/root-fs -> / (ext4)
+- /dev/mapper/swap -> (swap)
É basicamente a mesma configuração que o Ubuntu faria ao fazer uma instalação gráfica.
Eu sei como configurar manualmente o LUKS e até mesmo a configuração do LVM, mas fico preso ao juntá-lo na inicialização. Como digo ao kernel e ao grub para desbloquear a partição LUKS e montar as partições LVM corretas?
Responder1
Então eu descobri:
Particionei o disco parcialmente seguindo o manual:
# 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
A única mudança que fiz não foi fazer uma partição swap e root, mas sim fazer uma única partição e nomeá-la lvm (o nome não importa). Em seguida, configurei o 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
Depois disso, configure os volumes reais:
# 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
Quanto ao resto, basicamente seguimos o manual, exceto onde você normalmente faria coisas para /dev/sda3
(swap) ou /dev/sda4
(root), agora você usaria /dev/mapper/vg0-lvol0
(swap) e /dev/mapper/vg0-lvol1
.
Importante é, ao gerar o kernel (eu usei genkernel
para isso) instalar primeiro o cryptsetup usando o emerge -av cryptsetup
. e execute genkernel
com os seguintes parâmetros:
genkernel --luks --lvm --busybox --menuconfig all
Certifique-se de configurar o kernel para suportar LVM e os algoritmos de hash e criptografia escolhidos (no meu caso aes
e sha256
). Então continue seguindo o manual até iniciar o grub
-config.
Antes de executar grub2-mkconfig
você deve editar o arquivo /etc/defaults/grub
. (Devo afirmar, para que conste, que não tenho certeza se esta é a melhor solução, mas funciona para mim).
Nesse arquivo coloquei o seguinte (encontre e descomente o parâmetro):
GRUB_CMDLINE_LINUX="crypt_root=UUID=<uuid of sda3> dolvm"
Você pode encontrar o UUID correto usando ls -l /dev/disk/by-uuid
. Depois disso, grub2-mkconfig
você deve encontrar o kernel e o initramfs no arquivo /boot
. Novamente, siga o manual e após a reinicialização você deverá receber uma solicitação de senha.
Espero que isso ajude mais alguém.