Non è possibile farlo nel modo che descrivi. La dimensione del settore è una proprietà del dispositivo a blocchi che i file non hanno intrinsecamente. Un file è solo una sequenza di un certo numero di byte, il modo in cui questi vengono memorizzati è un dettaglio di implementazione...
Quindi, se vuoi una dimensione di settore specifica, hai bisogno di un dispositivo a blocchi. E Linux offre dispositivi loop solo per questo scopo, quindi usa losetup
per creare un dispositivo a blocchi virtuale supportato da file con una certa dimensione del settore.
File di prova:
# dd if=/dev/zero of=empty4k.img bs=4096 count=8192
Dispositivo loop regolare:
# 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
Dispositivo di loop di settori da 4096 byte:
# 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
In entrambi i casi, il file è completamente identico, la proprietà della dimensione del settore è fornita dal livello del dispositivo del ciclo di blocco.
Il bs
dato a dd
dice solo quanto dovrebbe essere grande il buffer durante la creazione del file. Alla fine, il file consiste solo di zero byte, non ci sono informazioni sull'allineamento.
Devi usare il parametro specifico per fdisk
, che è -b
, come da man
-pagina di 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.