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

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

おすすめ記事