Como posso criar várias partições em um contêiner LUKS usando uma tabela de partição gpt / mbr no contêiner?

0

É possível ter várias partições em um único contêiner LUKS ou cryptsetup? Se sim, como?

    
por JanKanis 18.11.2018 / 20:51

1 resposta

1

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.

    
por 18.11.2018 / 20:51