Eu tenho tido muitos problemas para obter um sistema de arquivos raiz multi-disco criptografado para inicializar de forma confiável sob systemd no Debian Jessie, tendo apenas que digitar a senha uma vez. Anteriormente, eu lidei com isso no Debian usando o decrypt_derived
keyscript em / etc / crypttab para cada dispositivo, exceto o primeiro, e isso funcionou bem.
No entanto, isso não funciona bem quando o systemd é introduzido. systemd-cryptsetup-generator
não manipula keycripts, e ao tentar encontrar mais informações sobre como resolver isso, eu só encontrei referências vagas para alguns personalizado agente de senha em um e-mail de um dos desenvolvedores do systemd que apenas dá o conselho inútil de que é "fácil escrever agentes adicionais. O algoritmo básico a ser seguido se parece com este" e então uma lista de 13 passos a serem seguidos. Claramente não é para um usuário final.
Eu, o Debian, tenho que trabalhar até certo ponto jogando com algumas opções de kernel que dizem ao systemd para ignorar /etc/crypttab
durante o boot, ou ignorá-lo completamente. O update-initramfs
do Debian copiará o keycript para o initramfs e desbloqueará os dispositivos antes que o systemd assuma, mas descobri que isso leva a problemas mais tarde porque o systemd agora não possui nenhum arquivo unitário para os dispositivos descriptografados, portanto montagens que dependem deles parece travar ou ficar atrasado. Um lugar onde isso é quebrado ao tentar montar subvolumes btrfs; eles são montados a partir do mesmo dispositivo físico que o root, mas o systemd não sabe que os dispositivos já estão desbloqueados e pára na inicialização.
TL; DR - minha pergunta atual:
Qual é a maneira do sistema de lidar com um sistema de arquivos raiz criptografado que abrange vários dispositivos (seja um sistema btrfs, espelho LVM, etc), onde você só precisa digitar a senha uma vez? Eu dificilmente considero isso como um caso excepcionalmente incomum, então aqui está a esperança de que exista um método para fazer isso.
Algumas possíveis soluções vêm à mente:
- Minúscula partição criptografada contendo um arquivo-chave, que é desbloqueado antes do root. Os dispositivos raiz referem-se a este arquivo de chaves. Como eu diria isso ao systemd?
- Algum tipo de agente de senha de armazenamento em cache sendo executado no initramfs, que lembra a senha e a entrega a todos os dispositivos que precisam dela na inicialização.
- Alguém já escreveu um agente do systemd emulando decrypt_derived. Como eu integraria isso no meu procedimento de inicialização?
Eu executo o Debian exclusivamente, mas depois de ter tentado por dias encontrar uma solução para o meu problema, sinto que este talvez seja um problema mais amplo do sistema.