使用 parted 的可编写脚本的 GPT 分区

ART*_*ART 18 linux scripting bash partition parted

我在脚本中使用以下命令对 eMMC 进行分区,

parted /dev/mmcblk0 --script mklabel gpt
parted /dev/mmcblk0 --script mkpart primary ext4 32MB 132MB
parted /dev/mmcblk0 --script mkpart primary ext4 233MB 433MB
parted /dev/mmcblk0 --script mkpart primary ext4 433MB 533MB
parted /dev/mmcblk0 --script mkpart primary ext4 533MB 593MB
parted /dev/mmcblk0 --script mkpart primary ext4 593MB 793MB
parted /dev/mmcblk0 --script mkpart primary ext4 793MB 3800MB
parted /dev/mmcblk0 --script align-check min 1
Run Code Online (Sandbox Code Playgroud)
  1. 这是在脚本中创建分区的正确方法吗?有没有更好的方法?
  2. 创建第一个分区后,我收到以下警告

    警告:生成的分区没有正确对齐以获得最佳性能。

我需要担心吗?我试过了,parted /dev/mmcblk0 --script align-check min 1但不确定那是解决方案。任何指示?
我正在浏览链接,同时还有其他建议吗?

编辑:只是froschutz回复的快速参考,

MiB = Mebibyte = 1024 KiB
KiB = Kibibyte = 1024 Bytes
MB = Megabyte = 1,000 KB
KB = Kilobyte = 1,000 Bytes
Run Code Online (Sandbox Code Playgroud)

fro*_*utz 26

原则上是正确的,但您可能会考虑将其减少为单个parted调用。

parted --script /device \
    mklabel gpt \
    mkpart primary 1MiB 100MiB \
    mkpart primary 100MiB 200MiB \
    ...
Run Code Online (Sandbox Code Playgroud)

您的对齐问题可能是因为您使用了MB而不是MiB. align-checkMiB边界上/在已知设备上创建分区时,您不需要实际命令。

  • 我会在设备和命令之间添加“--” - 这样您就可以使用“-1”作为最大大小。 (3认同)

Khr*_*oph 5

我知道这已经很旧了,而且是一个很好的答案,因为您可以使用 MiB,但我想为其他人提供另一个选择。

在脚本调用(--script 或 -s 对于简短版本)中,您可以添加 -a 选项,该选项告诉它在创建分区时对齐并传递选项“optimal”。像这样的东西:

sudo parted -s -a 最佳 -- /dev/sdX mkpart 主要 1MiB -2048s

这只是从第一个 Mebibyte 开始并在磁盘末尾减去最后一个 Mebibyte 结束以将 GPT 表保留在适当位置的示例。

  • @plugwash,你必须在命令中包含“--”,否则它会抱怨“-2048s”中的“-”,因为减号表示从末尾返回多远。如果“--”不存在,bash 会将其解释为 cli arg,并且parted 中没有 -2 arg。这可能是复制到 M$ 单词或其他内容,然后复制到响应框中时出现的错误。iirc,旧版本的parted不喜欢或不接受将第二个参数设置为-1MiB,这就是我使用扇区计数的原因,因为这是允许的。asmadeus:我不确定parted是否一直都是这样,所以安全总比后悔好。 (3认同)