So wie du es beschreibst ist es nicht möglich. Die Sektorgröße ist eine Blockgeräteeigenschaft, die Dateien nicht von Natur aus haben. Eine Datei ist nur eine Folge einer bestimmten Anzahl von Bytes, wie diese gespeichert werden, ist ein Implementierungsdetail...
Wenn Sie also eine bestimmte Sektorgröße wünschen, benötigen Sie ein Blockgerät. Und Linux bietet Schleifengeräte nur für diesen Zweck an, also verwenden Sie losetup
um ein dateigestütztes virtuelles Blockgerät mit einer bestimmten Sektorgröße zu erstellen.
Testdatei:
# dd if=/dev/zero of=empty4k.img bs=4096 count=8192
Normales Schleifengerät:
# 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
4096-Byte-Sektoren-Loop-Gerät:
# 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 beiden Fällen ist die Datei völlig identisch, die Eigenschaft der Sektorgröße wird von der Block-Loop-Geräteschicht bereitgestellt.
Die bs
gegeben an dd
gibt nur an, wie groß der Puffer beim Erstellen der Datei sein soll. Am Ende besteht die Datei nur noch aus Null-Bytes, es gibt keine Informationen über die Ausrichtung.
Sie müssen den spezifischen Parameter bis fdisk
verwenden , also -b
, gemäß man
-Seite von 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.