Parece que o dmsetup calcula seu alinhamento a partir do tamanho ideal de E / S, sem se preocupar em verificar se esse é realmente um múltiplo do tamanho do bloco físico. Como mencionado na pergunta de aviso falso, esse tamanho ideal de E / S faz sentido devido a restrições USB.
Portanto, a solução é simples: use --align-payload
para substituir o valor detectado. Um valor de 8 deve funcionar (e produzir o menor cabeçalho possível); o padrão quando cryptsetup não pode dizer é documentado como 2048. Então eu fui com o padrão:
cryptsetup luksFormat /dev/sdk1 --align-payload 2048 --verify-passphrase --hash sha512 -s 512
Depois disso, o deslocamento da carga útil agora é 4096 (de luksDump), e um aviso de kernel ainda é produzido:
kernel: device-mapper: table: 253:14: adding target device sdk1 caused an alignment inconsistency: physical_block_size=4096, logical_block_size=512, alignment_offset=0, start=2097152
... mas 2097152 é divisível por 4096, então esse é o aviso falso mencionado na outra pergunta. Então o problema está resolvido.