Estou usando o sgdisk em um script bash semelhante a este:
sgdisk --clear /dev/vda --set-alignment=1 --new 1:34:2047 --typecode 1:EF02 -c 1:"grub" -g /dev/vda
sgdisk --new 2:2048:16779263 --typecode 2:8300 -g /dev/vda
sgdisk --new 3:16779264:20971486 --typecode 3:8200 -g /dev/vda
Isso funciona apenas quando os dispositivos são conhecidos antecipadamente e os setores são codificados.
Eu quero soltar o hardcode dos valores do setor. Em vez disso, quero que o script funcione quando o tamanho do disco não for conhecido até que o script seja executado. Depois de fazer a partição 1, vou separar uma quantia fixa conhecida para a partição 3 para troca e dar o resto para a partição 2.
A maneira mais fácil seria fazer a partição swap #2. Eu sei como fazer isso. No entanto, quero ver se posso fazer isso enquanto mantenho a troca na partição 3 . Isso significa que o sgdisk terá que calcular um tamanho ou valor de setor final para a partição 2 levando em consideração o tamanho que será alocado para a partição 3 na próxima etapa.
Ler a página de manual do sgdisk não me deu as pistas sobre como fazer isso (ou mesmo se isso pode ser feito).
O seguinte funcionará:
É muito mais simples do que eu pensava.
sgdisk
faz todos os cálculos. A chave é o sinal de menos, que é explicado na página do manual (que eu havia perdido anteriormente).