和其他常见的分区工具不同,ampart是完全非互动式的,这意味着你应该把所有你想干的事都通过命令行参数提交给它
因为这一特别的的使用需求,我特别定义了一门迷你语言,以让每一个分区操作(定义,编辑)都能用一个参数来描述,并且复杂的操作可以在一次命令行操作中实现。这么语言很直白地叫做 (ampart) 分区参数迷你语言,下文中将使用parg作为简称来指代它
一个parg是能用单一的Linux命令行参数表示的由空字节作为结尾的字符串,由以下这些形式,由明显的 : 来分割其中多个部分
- {名称}:{偏移}:{大小}:{掩码}
- 叫做定义器parg,同一格式也可以用在调整器上,不过它们各自的自参数由不同要求*
- ^{选择器}{操作符}({操作符后缀})
- 叫做修改器parg
注意:上述内容中,由符号{}框起来的是需要用户填写的子参数,结果parg中不应包含{}符号本身;符号:和^应该原模原样输入;符号()框起来的是可选的子参数,如果不需要的话可以省去
- {名称}:{偏移}:{大小}:{掩码}
- bootloader:0:4M:0
- 一个bootloader分区,放置在0偏移处,大小4MiB,掩码0
- data:::
- 一个data分区,作为最后一个分区。根据具体模式,紧跟着上一个分区,或是隔着8MiB,占用所有空余空间,自动掩码
- system:+8M:2G:2
- 一个system分区,作为最后一个分区。前面和上一个分区之间留8MiB空隙,大小2GiB,掩码2
- ^{选择器}{操作符}({操作符后缀})
- {名称} 名称选择器
- 现存的具体分区名
- {相对值} 相对选择器
- 非负值从开头到结尾选择(0选择第一个)
- 负值从结尾到开头选择(-1选择最后一个)
userdata- 选择一个名为userdata的分区
- 例子parg:
^userdata?
4- 选择第五个分区
- 例子parg:
^4:my::+1G:
-2- 选择倒数第二个分区
- 例子parg:
^-2%Cloned
- ? 删除操作符
- 删除分区,其后分区向前各移动一位
- 无后缀
- % 克隆操作符
- 克隆分区,把新的克隆出来的分区作为最后一个分区
- 后缀:{名称} 克隆器
- 克隆器应该包含一个目前未使用的名字
- 例子:
%CE_STORAGE- 克隆分区为CE_STORAGE
- 例子parg:
^-1%CE_STORAGE
- @ 移位操作符
- 把一个分区移位
- 后缀:{移位器}
- {相对}{非负数} 相对移位器
- +{非负数}
- 向右移动*
- -{非负数}
- 向左移动*
- +{非负数}
- (=){数字} 绝对移位器
- ={负数} 自右向左放置,-1为最后一位
- (=){非负数} 自左向右放置,0作为第一位
- {相对}{非负数} 相对移位器
- 例子:
- @-2
- 把分区向左移动两个位置,穿过的两个分区各向右移动一个位置
- 例子parg:
^-1@-2
- @+3
- 把分区向右移动三个位置,穿过的三个分区各向左移动一个位置
- 例子parg:
^roms@+3
- @7或@=+7
- 把分区移动为第八个分区。如果向左移动,穿过的分区各向右移动一位;如果向右移动,穿过的分区各向左移动一位;如果没有移动,无事发生
- 例子parg:
^system@7,^system@=+7
- @=-4
- 把分区移动为倒数第四个分区(前面应该有3个其他分区),和上一个逻辑一样
- 例子parg:
^logo@=-7
- @-2
- : Adjust Operator
- 后缀:{调整器}
- {名称}:{偏移}:{大小}:{掩码}
- 和定义器的子部分相同
- {名称}:{偏移}:{大小}:{掩码}
- 例子:
- :bootleg::-1G:
- 把分区改名为bootleg,大小缩小1G
- 例子parg:
^boot:bootleg::-1G:
- ::+2G:+1G:4
- 把分区的偏移增加2G,大小增加1G,掩码改为4
- 例子parg:
^factory::+2G:+1G:4
- :bootleg::-1G:
- 后缀:{调整器}