Guia para configuração do Gentoo com criptografia completa de disco usando LUKS+LVM

Guia para configuração do Gentoo com criptografia completa de disco usando LUKS+LVM

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 genkernelpara isso) instalar primeiro o cryptsetup usando o emerge -av cryptsetup. e execute genkernelcom 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 aese sha256). Então continue seguindo o manual até iniciar o grub-config.

Antes de executar grub2-mkconfigvocê 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-mkconfigvocê 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.

informação relacionada