Linux
sfdisk 分區大小的映射是如何工作的
我們使用 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。