como o mapeamento do tamanho da partição sfdisk está funcionando

0

Estamos usando um script Python para executar o sfdisk criando partições em nosso Linux. O código é como abaixo:

        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)
"""

Depois de executar este comando, vejo que a explicação está correta e, por exemplo, o systm tem 175 MB. O que eu não entendo é como o tamanho 95 é mapeado para 100 Megabytes, 160 para 175, 20 para 25 e assim por diante.

A outra pergunta é se eu quero aumentar o tamanho do sistema para 210 megabytes, então qual é o número correto para escrever no comando?

    
por Govan 12.03.2018 / 14:29

1 resposta

1

Observe que você tem um comando sfdisk um pouco desatualizado, pois desde 2015 a versão 2.26 não aceita mais -uM , que é usado para definir a "unidade" padrão.

A diferença que você está vendo se deve ao fato de os números serem dados em MB, ou seja, Megabytes (1000 * 1000) ou MiB, ou seja, Mebibytes (1024 * 1024). 100MB é aproximadamente 95MiB.

Se você quiser testar seu código com relação a um novo sfdisk , deverá remover o -uM e assumir que os tamanhos estão em setores de 512 bytes. A mais nova versão permite que você forneça números com um sufixo como MiB .

210 MB podem ser calculados como:

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

cerca de 200 MiB.

    
por 12.03.2018 / 16:12