我在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手册页并没有给我提供关于如何做到这一点的线索(或者即使可以做到)。
发布于 2019-11-11 06:56:28
下列措施将起作用:
sgdisk --clear /dev/vda --set-alignment=1 --new 1:34:2047 --typecode 1:EF02 -c 1:"grub" -g /dev/vda
sgdisk --new 2:0:-2G --typecode 2:8300 -g /dev/vda
sgdisk --new 3:0:0 --typecode 3:8200 -g /dev/vda比我想象的简单多了。所有的计算都是sgdisk做的。关键是减号,这在手册页中有解释(我之前漏掉了)。
您可以通过在数字前面加上“+”或“-”符号来指定相对于指定默认范围的开始或结束的位置,如在+2G中指定默认开始扇区之后的点2 2GiB,或-200 m用于在最后可用扇区之前指定点200 2GiB。起始值或结束值0指定默认值,
https://unix.stackexchange.com/questions/551496
复制相似问题