Il n'est pas possible de le faire comme vous le décrivez. La taille du secteur est une propriété de périphérique de bloc que les fichiers n'ont pas de manière inhérente. Un fichier n'est qu'une séquence d'un certain nombre d'octets, la façon dont ceux-ci sont stockés est un détail d'implémentation...
Donc, si vous voulez une taille de secteur spécifique, vous avez besoin d'un périphérique de bloc. Et Linux propose des périphériques de boucle uniquement à cette fin, utilisez donc losetup
pour créer un périphérique de bloc virtuel sauvegardé sur fichier avec une certaine taille de secteur.
Fichier test :
# dd if=/dev/zero of=empty4k.img bs=4096 count=8192
Dispositif à boucle régulière :
# losetup --find --show empty4k.img
/dev/loop0
# fdisk -l /dev/loop0
Disk /dev/loop0: 32 MiB, 33554432 bytes, 65536 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Périphérique de boucle de secteurs de 4096 octets :
# losetup --find --show --sector-size=4096 empty4k.img
/dev/loop1
# fdisk -l /dev/loop1
Disk /dev/loop1: 32 MiB, 33554432 bytes, 8192 sectors
Units: sectors of 1 * 4096 = 4096 bytes
Sector size (logical/physical): 4096 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Dans les deux cas, le fichier est complètement identique, la propriété de taille de secteur est fournie par la couche de périphérique de boucle de bloc.
Le bs
donné à dd
indique simplement la taille du tampon lors de la création du fichier. Au final, le fichier ne contient rien d'autre que zéro octet, il n'y a aucune information sur l'alignement.
Vous devez utiliser le paramètre spécifique à fdisk
, qui est -b
, selon le man
-page de fdisk(8)
:
-b, --sector-size sectorsize
Specify the sector size of the disk. Valid values are 512, 1024, 2048, and 4096. (Recent kernels know the sector size. Use this option only on old kernels or to override the kernel's
ideas.) Since util-linux-2.17, fdisk differentiates between logical and physical sector size. This option changes both sector sizes to sectorsize.