究極の目標は、セクタごとにパーティションイメージセクタを構築することです。セクタサイズを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
どちらの場合も、ファイルは同じであり、セクタサイズ属性はブロックループデバイス階層で提供されます。