O que eu quero alcançar:
- Ser solicitada uma senha, apenas uma vez durante o boot;
- As outras partições (não raiz) usam o arquivo-chave dentro do
/root/
diretório.
O que consegui até agora:
- (A)O sistema inicializando, mas pedindo a senha duas vezes (uma vez para
/
e outra para/usr
). - Ou:(B)o sistema não inicializa, solicita a senha uma vez, mas recusa a montagem,
/usr
dizendo que não foi possível encontrar o grupo/volume LVM. Eu caio no shell e vejo que/root/.keyfile
não está disponível./
ainda não foi montado.
Configuração
Arquivo:/etc/crypttab
Caso A
sdc3_crypt /dev/sdc3 none luks md0_crypt /dev/md0 none luks
Caso B
sdc3_crypt /dev/sdc3 none luks md0_crypt /dev/md0 /root/.keyfile luks
O que não funcionou totalmente
- Criando arquivos de script para luksOpen manualmente a unidade necessária: aqueles em
/etc/initramfs-tools/scripts/local-premount
são chamados antes/
de estarem disponíveis, mas aqueles em/etc/initramfs-tools/scripts/local-bottom
são chamados depois de serem abertos/usr
(e, portanto, é tarde demais).
Responder1
Sobreesta página wiki(em alemão, infelizmente não encontrei um equivalente em inglês) sugere-se que você use o script /lib/cryptsetup/scripts/decrypt_derived
para gerar uma chave a partir do dispositivo raiz aberto. Tentarei traduzir as partes importantes, mas não tenhoNÃOtentei o procedimento.
Para adicionar a chave, você teria que executar (como root)
mkdir /mnt/ram && mount -t ramfs -o size=1m ramfs /mnt/ram && chmod 600 /mnt/ram
/lib/cryptsetup/scripts/decrypt_derived <root_dev> > /mnt/ram/tmp.key && cryptsetup luksAddKey <usr_dev> /mnt/ram/tmp.key && rm /mnt/ram/tmp.key
umount /mnt/ram && rmdir /mnt/ram
onde <root_name>
está o nome do seu dispositivo raiz conforme exibido em /dev/mapper
(provavelmente sdc3_crypt
) e <usr_dev>
o dispositivo onde /usr
está ligado (provavelmente /dev/md0
).
A linha para crypttab é
<usr_name> UUID=<UUID> <root_name> luks,keyscript=/lib/cryptsetup/scripts/decrypt_derived
lembre-se de correr
update-initramfs -u -k all
depois de mudar o crypttab.
Você deve manter uma senha "normal" para o seu dispositivo usr, caso contrário você não poderá abri-lo caso seu dispositivo root esteja danificado.