我有一个多分区的 IMG 原始磁盘文件,我想列出每个分区的分区标签而不安装它。
该命令fdisk -l
几乎按我想要的方式工作,但没有列出标签:
fdisk -l test.img
Disk test.img: 200 MiB, 209715200 bytes, 409600 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: 0xcae9ed5b
Device Boot Start End Sectors Size Id Type
test.img1 * 2048 104447 102400 50M b W95 FAT32
test.img2 104448 206847 102400 50M b W95 FAT32
test.img3 206848 309247 102400 50M b W95 FAT32
test.img4 309248 409599 100352 49M 5 Extended
test.img5 311296 409599 98304 48M b W95 FAT32
我想要这个的原因是为了让我知道要安装哪一个。上面只是我出于测试目的而创建的示例原始磁盘文件的示例,但真正的文件是具有许多不同分区的 128GB UFD - 用作多重引导驱动器。
像磁盘这样的东西可能吗?到目前为止,我只能在安装分区后列出标签,但这达不到目的。有这么多分区,我希望将每个分区标签作为上面显示的输出的一部分,或者如果可能的话使用任何其他命令,以便我知道哪个是哪个。
答案1
我不明白如何容易地以 root 身份在没有系统帮助的情况下执行此操作。可以要求系统了解分区,然后再次询问有关分区和其中文件系统的信息。这里的“系统”是内核功能和 udev 内置检测功能的松散组合。只需要这两个命令:kpartx
和blkid
。我的示例与 OP 的示例具有不同的值,但非常相似:
# kpartx -v -a test.img
add map loop0p1 (253:8): 0 20480 linear 7:0 2048
add map loop0p2 (253:9): 0 22528 linear 7:0 22528
add map loop0p3 (253:10): 0 20480 linear 7:0 45056
add map loop0p4 (253:11): 0 2 linear 7:0 65536
add map loop0p5 (253:12): 0 40960 linear 7:0 67584
# blkid /dev/loop0 /dev/mapper/loop0p*
/dev/loop0: PTUUID="a5ebeec3" PTTYPE="dos"
/dev/mapper/loop0p1: SEC_TYPE="msdos" LABEL="MYFS1" UUID="D816-AFC1" TYPE="vfat" PARTUUID="a5ebeec3-01"
/dev/mapper/loop0p2: SEC_TYPE="msdos" LABEL="MYFS2" UUID="D857-D702" TYPE="vfat" PARTUUID="a5ebeec3-02"
/dev/mapper/loop0p3: SEC_TYPE="msdos" LABEL="MYFS3" UUID="D894-3506" TYPE="vfat" PARTUUID="a5ebeec3-03"
/dev/mapper/loop0p4: PTTYPE="dos" PARTUUID="a5ebeec3-04"
/dev/mapper/loop0p5: SEC_TYPE="msdos" LABEL="MYLASTFS" UUID="074A-2F0F" TYPE="vfat" PARTUUID="a5ebeec3-05"
# kpartx -v -d test.img
del devmap : loop0p5
del devmap : loop0p4
del devmap : loop0p3
del devmap : loop0p2
del devmap : loop0p1
loop deleted : /dev/loop0
文件系统未安装。仅映射、检查和取消映射分区。