Embora eu não tenha encontrado nada on-line descrevendo essa configuração, acabou funcionando bem. Algumas vantagens é que você só precisa digitar sua senha uma vez, e ferramentas que podem redimensionar as partições funcionam sem precisar saber sobre a camada de criptografia. Mas existem outras soluções para digitar sua senha apenas uma vez, e o editor de partições gnome é capaz de mover / redimensionar partições criptografadas também, então isso não é realmente recomendado. Além disso, ninguém parece estar fazendo isso, então não há muita ajuda on-line.
Se você quiser fazer isso de qualquer maneira:
- Crie um volume criptografado do LUKS da maneira que desejar e monte-o.
Se o volume for denominado
cryptvolume
, ele será exibido em/dev/mapper/cryptvolume
. - Abra o volume com o GParted:
gparted /dev/mapper/cryptvolume
Escolher dispositivo > criar tabela de partições (alternativamente, use uma ferramenta de linha de comando para criar uma tabela de partição) Agora você pode criar partições no GParted como quiser. - Crie linhas em
/etc/crypttab
e/etc/fstab
se você quiser montar o volume automaticamente na inicialização. Há descrições on-line de como fazer isso, então eu não cobrirei aqui.
Em princípio, isso deve ser suficiente para ter um contêiner LUKS multi-partição funcional, e no Ubuntu 18.04 isso funciona. Exceto que, ao reinicializar, isso causa um erro, pois o systemd não consegue montar a (s) partição (ões) criptografada (s). O que falta é que nada diz ao kernel para varrer novamente as tabelas de partições depois que o volume criptografado for descriptografado. O comando para fazer isso é partprobe
. Em sistemas systemd, para informar ao sistema para executar o partprobe no momento certo, coloque o seguinte arquivo em /etc/systemd/system/partprobe.service
.
Substitua o cryptdisk1.mount
pelos pontos de montagem apropriados para o seu sistema e /dev/mapper/cryptdisk
pelo caminho para o dispositivo LUKS descriptografado.
[Unit]
Description=partprobe after cryptsetup
# By default services depend on partitions being mounted. Leaving this out leads to cyclic dependencies.
DefaultDependencies=no
# We don't need to Requires=cryptsetup.target, as cryptsetup.target is always present
After=cryptsetup.target
# The mount target is named after the mount path.
# Run 'systemctl list-dependencies local-fs.target' to list mount targets.
Before=cryptdisk1.mount
[Service]
Type=oneshot
# You don't have to specify the path to the decrypted device, but doing so will speed up the boot a bit
ExecStart=/sbin/partprobe /dev/mapper/cryptdisk
[Install]
# Required by local-fs.target or by all the partitions in the LUKS container to be more specific
RequiredBy=cryptdisk1.mount
Depois de criar o arquivo, execute sudo systemctl enable partprobe.service
para ativar o arquivo.
Isso foi testado no Ubuntu 18.04 com partições GPT. Em diferentes sistemas, os caminhos podem ser diferentes. Para sistemas não-systemd, você precisará encontrar uma maneira diferente de executar o partprobe antes que as partições sejam montadas.