首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在bash脚本中使用sgdisk分区来确定大小

如何在bash脚本中使用sgdisk分区来确定大小
EN

Unix & Linux用户
提问于 2019-11-11 06:27:29
回答 1查看 959关注 0票数 1

我在bash脚本中使用sgdisk,类似于这样:

代码语言:javascript
复制
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手册页并没有给我提供关于如何做到这一点的线索(或者即使可以做到)。

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2019-11-11 06:56:28

下列措施将起作用:

代码语言:javascript
复制
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指定默认值,

票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/551496

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档