Linux

sfdisk 分區大小的映射是如何工作的

  • March 12, 2018

我們使用 Python 腳本在 Linux 上執行 sfdisk 創建分區。程式碼如下:

       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 兆字節,那麼在命令中寫入的正確數字是多少?

請注意,您有一個稍微過時的sfdisk命令,因為自 2015 版本 2.26 起它不再接受-uM用於設置預設“單位”的 。

您看到的差異是由於數字是以 MB 即兆字節 (10001000) 還是 MiB 即兆字節 (10241024) 給出的。100MB 大約是 95MiB。

如果您想在未來證明您的程式碼針對較新的程式碼,sfdisk您應該刪除-uM並假設大小為 512 字節的扇區。較新的版本允許您提供帶有後綴的數字,例如MiB.

210MB 可以計算為:

echo '210*1000*1000/1024/1024' | bc

大約 200MiB。

引用自:https://unix.stackexchange.com/questions/429728