GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Erstellen Sie ein leeres img mit dd, sodass seine Sektoren 4096 Bytes statt 512 umfassen

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.

Linux
  1. Verwalten von Partitionen unter Linux mit fdisk

  2. Ersetzen Sie ein Wort oder eine Zahl in einem Satz, der kleiner als 8 ist, mit Awk oder Sed?

  3. Ermitteln der Sektorgröße einer Partition?

  4. So finden Sie rekursiv alle Dateien mit einer Dateigröße von Null (0) Bytes in einem Verzeichnis

  5. Wie erstelle ich eine Datei mit einer bestimmten Größe in Linux?

Wie man Partitionen auf MBR- und GPT-Festplatten auflistet, erstellt und löscht – RHCSA Objective Preparation

Wie erstelle ich einen Cron-Job, der automatisch Dateien löscht, die älter als 30 Tage sind?

Wie erstelle ich eine (leere) Zip-Datei mit minimaler Größe, die 22B hat?

Erstellen Sie einen neuen leeren Verzeichnisbaum aus einem vorhandenen Baum mit Dateien

Wie kann ich eine Datei mit einer bestimmten Größe von einer Befehlszeile aus erstellen?

Warum erscheint mein Hostname mit der Adresse 127.0.1.1 statt 127.0.0.1 in /etc/hosts?