criptografia raiz com LUKS: partição raiz não encontrada

2

O layout do meu único disco é o seguinte: /dev/sda1 for the plaintext boot partition /dev/sda2 for the encrypted root partition

Meu sistema é ArchLinux e eu segui este guia para configurar a criptografia raiz (sem lvm, sem invasão). Aqui está o que eu fiz: corri cryptsetup em /dev/sda2 e mapeou em /dev/mapper/cryptroot

Minhas /etc/fstab se parece com isso: UUID=of /dev/mapper/cryptroot / ext4 rw,relatime,data=ordered,discard 0 1 UUID=of /dev/sda1 /boot ext4 rw,relatime,data=ordered,discard 0 2

No meu /etc/default/grub Eu alterei uma única linha para ser: GRUB_CMDLINE_LINUX="cryptdevice=UUID of /dev/sda2:cryptroot:allow-discards"

No /etc/mkinitcpio.conf os ganchos se parecem com isso: HOOKS="base udev autodetect modconf block encrypt filesystems keyboard fsck"

Finalmente, eu não esqueci de correr mkinitcpio -p linux e grub-mkconfig -o /boot/grub/grub.cfg respectivamente.

Eu enumerei minhas ações de uma maneira tão rápida porque eu tenho sido bem sucedido na configuração de criptografia para o meu fs raiz. Então, no final, recebo o seguinte erro:

ERROR: device *UUID of /dev/mapper/cryptroot* not found. Skipping fsck. ERROR: unable to find root device *UUID of /dev/mapper/cryptroot* You are being dropped into recovery shell

O estranho é que ele tenta procurar pelo não criptografado /dev/mapper/cryptroot e ainda assim não me pede a senha (que eu criei quando cryptsetup 'on on /dev/sda2 no inicio). Então, naturalmente, não é possível encontrar o dispositivo de bloco não criptografado porque ele não me pediu sua senha em primeiro lugar. Você poderia por favor me dizer o que eu configurei errado?

alisianoi
fonte

Respostas:

1

Eu tive sucesso com cryptdevice=/dev/disk/by-uuid/<UUID_OF_LOGICAL_DEVICE>:cryptroot root=/dev/mapper/cryptroot para as opções adicionais do kernel no GRUB.

Vale a pena notar que se você está fazendo isso sem precisão de copiar e colar o UUID (como em um console / tty), você pode ter digitado isso. Aqui está um one-liner, que também é ruim para digitar do console, mas pode ser mais fácil.

sed "s/\(GRUB_CMDLINE_LINUX=\"\)/\1cryptdevice=\/dev\/disk\/by-uuid\/$(blkid -o value -s UUID /dev/<LOGICAL_DEVICE>):cryptroot root=\/dev\/mapper\/cryptroot/" /etc/default/grub > ~/grub.defaults && mv ~/grub.defaults /etc/default/grub

Ian Schoonover
fonte
0

Você está faltando / etc / crypttab os ganchos cpio estão apontando para uma partição que o sistema operacional é aw awares de

/ etc / crypttab

% {UUID de / dev / mapper / cryptroot} / ext4 rw, relatime, dados = pedido, descarte, luks - 0 1

em seguida, execute novamente a atualização do grub

linuxdev2013
fonte
o '-' é intencional e forçado a interrogação de senha com um arquivo de chaves válido para uma chave ativa válida
linuxdev2013
Obrigado, mas crypttab contém um comentário "não liste sua partição root (/) aqui, ele deve ser configurado antecipadamente pelo initramfs (/etc/mkinitcpio.conf)" que eu entendo ser a referência ao fato de que você tem que adicionar um gancho . Eu entendo mal este comentário?
alisianoi
By the way, sua resposta atual usa algum híbrido de /etc/fstab e /etc/crypttab sintaxe, veja o exemplo para /etc/crypttab Aqui
alisianoi
/etc/crypttab está localizado na própria partição raiz que falha ao descriptografar, portanto, isso não pode ser uma solução para descriptografá-la.
regular