ddを使用して、セクタサイズが512バイトではなく4096バイトになるように空のimgを作成します。

ddを使用して、セクタサイズが512バイトではなく4096バイトになるように空のimgを作成します。

究極の目標は、セクタごとにパーティションイメージセクタを構築することです。セクタサイズを4096に設定したいです。最初のステップとして、512バイトの代わりに4096バイトのセクタを持つ32MiBの空の画像を作成しました。そのために、私は以下を試しています。

dd if=/dev/zero of=empty4k.img bs=4096 count=8192

だから私はやる

fdisk -l empty4k.img

512バイトセクタを表示します。私はこれがあなたがそうするからだと信じています」

fdisk -l /dev/zero

また、512バイトのセクタと言われています。

誰が私を助けることができますか?

答え1

説明したようにすることは不可能です。セクタサイズは、ファイル自体にはないブロックデバイス属性です。ファイルは特定のバイト数のシーケンスにすぎず、そのバイトを格納する方法は実装の詳細です。

したがって、特定のセクタサイズが必要な場合は、ブロックデバイスが必要です。 Linuxはこの目的のためにのみループデバイスを提供するので、それを使用して特定のセクタサイズのファイルをサポートlosetupする仮想ブロックデバイスを作成できます。

テストファイル:

# dd if=/dev/zero of=empty4k.img bs=4096 count=8192

既存の循環装置:

# 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バイトセクタループデバイス:

# 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

どちらの場合も、ファイルは同じであり、セクタサイズ属性はブロックループデバイス階層で提供されます。

答え2

与えられたbsto は、dd単にファイル生成中のバッファのサイズを知らせます。最終的に、ファイルはソートに関する情報なしでゼロバイトのみで構成されます。

fdiskつまり、-page of-bに従って特定のパラメータを使用する必要があります。manfdisk(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.

答え3

ブロックサイズは、ddそのサイズのブロックを読み書きする必要があります。以前は、パフォーマンスを向上させるためにディスクセクタサイズのブロックを作成することでしたが、今日のディスクとよりスマートなオペレーティングシステムのI / O処理を考慮すると、あまり違いはありませんでした。

関連情報