之前写过怎样直接在host os上面访问vmdk文件。后来发现在ESX上情况略有不同,虽然ESX上默认安装了kpartx但是却不能运行,因为device-mapper驱动没有安装。所以需要稍微费点手续。
# losetup /dev/loop0 disk.raw
# fdisk -u -l /dev/loop0
Disk /dev/loop0: 2147 MB, 2147483648 bytes
16 heads, 63 sectors/track, 4161 cylinders, total 4194304 sectors
Units = sectors of 1 * 512 = 512 bytes
Device Boot Start End Blocks Id System
/dev/loop0p1 * 63 2097214 1048576 83 Linux
/dev/loop0p2 2097215 2300830 101808 83 Linux
/dev/loop0p3 * 2300831 2504446 101808 e W95 FAT16 (LBA)
/dev/loop0p4 2504447 4061446 778500 83 Linux
-u选项很重要,因为fdisk默认的单位是cylinder,我们需要将单位改为sector。
如果要mount一个分区话,需要先计算offset. 比如要mount第一个分区那么offset=512*63=32256
然后先运行
losetup -d /dev/loop0
然后
losetup -o 32256 /dev/loop0 disk.raw
接着
mount /dev/loop0 /mnt
OK, done!