Eu diria que o uso de cylinder
agora está obsoleto e é usado principalmente por razões históricas.
Ao olhar para o código-fonte fdisk
, parece-me que o número total de bytes de um dispositivo é recuperado por meio de uma chamada ioctl
if (ioctl(fd, BLKGETSIZE64, bytes) >= 0)
return 0;
e as outras figuras são derivadas disso.
Por exemplo, o número de cilindros é calculado usando
llcyls = total_number_of_sectors / (heads * sectors * sector_factor);
O "problema" aqui é que o resultado dessa divisão é truncado (arredondado para baixo), então é impreciso.
Usando sua saída fdisk
como exemplo
120034123776 bytes / 512 bytes_per_sector / 255 / 63 = 14593.3176471 cylinders
mas a saída fdisk
arredondará isso para 14593
.