![sfdisk 分区大小映射的工作原理](https://linux22.com/image/129426/sfdisk%20%E5%88%86%E5%8C%BA%E5%A4%A7%E5%B0%8F%E6%98%A0%E5%B0%84%E7%9A%84%E5%B7%A5%E4%BD%9C%E5%8E%9F%E7%90%86.png)
我们使用 Python 脚本运行 sfdisk 在 Linux 上创建分区。代码如下:
stdin,stdout=\
(lambda x:(x.stdin,x.stdout))\
(subprocess.Popen(
["/sbin/sfdisk","-uM","--no-reread",device],
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
stderr=subprocess.STDOUT))
#<start>;<size>;<id>;<bootable>;
t="""0;95;83;
;160;b;*
;;E;
;0;;
;20;b;
;95;b;
;;b;
"""
print "Writing\n%s"%(t,)
stdin.write(t)
stdin.close()
"""Explanation:
/ 100MB (hda1)
/mnt/system 175MB (hda2)
/mnt/configuration 25MB (hda5)
/mnt/logs 100MB (hda6)
/mnt/user 88MB (hda7)
"""
运行此命令后,我发现解释是正确的,例如 systm 有 175 MB。我不明白的是大小95如何映射到100兆字节,160到175,20到25等等。
另一个问题是,如果我想将系统大小增加到 210 MB,那么在命令中写入的正确数字是多少?
答案1
请注意,您有一个稍微过时的sfdisk
命令,因为自 2015 年版本 2.26 以来,它不再接受-uM
用于设置默认“单位”的 。
您看到的差异是由于数字是以 MB 即兆字节 (1000*1000) 或 MiB 即兆字节 (1024*1024) 为单位给出的。 100MB 大约为 95MiB。
如果您想在未来证明您的代码不受更新版本的影响,sfdisk
您应该删除-uM
并假设大小为 512 字节的扇区。较新的版本允许您给出带有后缀的数字,例如MiB
.
210MB可计算如下:
echo '210*1000*1000/1024/1024' | bc
大约 200MiB。