我在类似于以下的 bash 脚本中使用 sgdisk:
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
这仅在设备事先众所周知并且扇区是硬编码的情况下才有效。
我想删除扇区值的硬编码。相反,我希望脚本在脚本运行之前不知道磁盘大小时工作。分区 1 制作完成后,我会留出一个已知的固定数量给分区 3 进行交换,剩下的给分区 2。
简单的方法是创建交换分区#2。我知道该怎么做。但是,我想看看是否可以在保持交换分区 3 的同时执行此操作。这意味着 sgdisk 必须计算分区 2 的大小或结束扇区值,同时考虑下一步将分配给分区 3 的大小。
阅读 sgdisk 手册页并没有给我有关如何执行此操作的线索(或者即使可以完成)。
以下将起作用:
这比我想象的要简单得多。
sgdisk
做所有的计算。关键是减号,它在手册页中有解释(我之前错过了)。