Linux
用 dd 創建空 img 使其扇區為 4096 字節而不是 512
最終目的是逐個扇區地建構一個分區的映像。我希望扇區大小為 4096。作為第一步,我試圖創建一個 32MiB 的空圖像,其中包含 4096 字節扇區而不是 512 字節。為此,我正在嘗試:
dd if=/dev/zero of=empty4k.img bs=4096 count=8192
然後我做
fdisk -l empty4k.img
並顯示 512 字節扇區。我相信這是因為如果你這樣做“
fdisk -l /dev/zero
它還說 512 字節扇區。
誰能幫我?
bs
給出的只是dd
告訴創建文件期間緩衝區應該有多大。最後,文件只包含零字節,沒有關於對齊的資訊。您必須使用特定參數 to
fdisk
,即-b
,根據man
-page 的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 正是為此目的提供了循環設備,因此用於
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
在這兩種情況下,文件完全相同,扇區大小屬性由塊循環設備層提供。