Filesystems
如何格式化img文件內的分區?
我
img
通過以下命令創建了一個文件:dd if=/dev/zero bs=2M count=200 > binary.img
它只是一個帶有零的文件,但我可以使用它
fdisk
並創建一個分區表:# fdisk binary.img Device does not contain a recognized partition table. Created a new DOS disklabel with disk identifier 0x51707f21. Command (m for help): p Disk binary.img: 400 MiB, 419430400 bytes, 819200 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 Disklabel type: dos Disk identifier: 0x51707f21
比方說,一個分區:
Command (m for help): n Partition type p primary (0 primary, 0 extended, 4 free) e extended (container for logical partitions) Select (default p): p Partition number (1-4, default 1): First sector (2048-819199, default 2048): Last sector, +sectors or +size{K,M,G,T,P} (2048-819199, default 819199): Created a new partition 1 of type 'Linux' and of size 399 MiB. Command (m for help): w The partition table has been altered. Syncing disks.
當我檢查分區表時,我得到以下結果:
Command (m for help): p Disk binary.img: 400 MiB, 419430400 bytes, 819200 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 Disklabel type: dos Disk identifier: 0x7f3a8a6a Device Boot Start End Sectors Size Id Type binary.img1 2048 819199 817152 399M 83 Linux
所以分區存在。當我嘗試通過 gparted 格式化此分區時,出現以下錯誤:
我不知道它為什麼要查找
binary.img1
,我也不知道如何從命令 live 格式化分區。有誰知道如何使用 ext4 文件系統對其進行格式化?
您可以通過環回功能訪問磁碟映像及其各個分區。您已經發現一些磁碟實用程序會(合理地)在磁碟映像上愉快地執行。然而,
mkfs
不是其中之一(但奇怪mount
的是)。這是來自的輸出
fdisk -lu binary.img
:Disk binary.img: 400 MiB, 419430400 bytes, 819200 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes ... Device Boot Start End Sectors Size Id Type binary.img1 2048 819199 817152 399M 83 Linux
要訪問您創建的分區,您有幾個選擇
- 顯式路由
losetup --offset $((512*2048)) --sizelimit $((512*817152)) --show --find binary.img /dev/loop0
輸出
/dev/loop0
是已分配的循環設備的名稱。該--offset
參數只是分區的偏移量 (Start
) 乘以扇區大小 (512
)。而--sizelimit
是分區的大小,您可以通過以下方式計算它: End-Start+1,即 819199-2048+1=817152 ,該數字還必須乘以扇區大小。然後,您可以將其
/dev/loop0
用作對分區的引用:mkfs -t ext4 -L img1 /dev/loop0 mkdir -p /mnt/img1 mount /dev/loop0 /mnt/img1 ... umount /mnt/img1 losetup -d /dev/loop0
- 隱式路線
losetup --partscan --show --find binary.img /dev/loop0
輸出
/dev/loop0
是已分配的主迴路設備的名稱。此外,該--partscan
選項告訴核心掃描設備以查找分區表並自動分配輔助循環設備。在您的情況下,您還可以獲得一個分區/dev/loop0p1
,然後您可以將其用作對該分區的引用:mkfs -t ext4 -L img1 /dev/loop0p1 mkdir -p /mnt/img1 mount /dev/loop0p1 /mnt/img1 ... umount /mnt/img1 losetup -d /dev/loop0