比如用dd拷贝了一个硬盘文件为Img
#ddif=/dev/sdaof=/mnt/nfs/backup/harddrive.img
这里拿respberry的img作为参看
#file 2016-05-27-raspbian-jessie-lite.img
显示 x86启动扇区
2016-05-27-raspbian-jessie-lite.img: x86 boot sector
如果直接用mount xxx.img folder
会需要你指定文件系统。mount需要指定挂载的东西的类型,如果他可以识别的就不用指定。否则需要指定
先用fdisk -l xxx.img查看一下分区状况
fdisk-l 2016-05-27-raspbian-jessie-lite.img
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x6fcf21f3
Device Boot Start End Blocks Id System
2016-05-27-raspbian-jessie-lite.img1 8192 137215 64512 c W95 FAT32 (LBA)
2016-05-27-raspbian-jessie-lite.img2 137216 2709503 1286144 83 Linux
单元是一个扇区 512字节
这个img分了两个区,一个是fat格式的 boot扇区。放了树莓派的kernel以及dtb等。
另外一个就是rootfs。
所以要分别挂载这两个
第一个start 8192 所以是8192*516=4194304字节。
由于是用img iso等映像模拟块设备。所以要用 -o以及 然后用offset指定偏移
sudo mount -o offset=4194304 2016-05-27-raspbian-jessie-lite.img fatpart/
后面的那个 也是一样137216*512 =70254592
sudo mount -o offset=70254592 2016-05-27-raspbian-jessie-lite.img rootfspart/
这样就能挂载成功了
如果直接想把这两块直接拷贝出来也可以
使用dd命令 默认的ibs和obs都是512 表示一次读取 512字节, 这里就不修改了。后续的count ×ibs或者obs才是总数
根据前面的fdisk信息 如下。 从xxx.img里面skip 8192*512字节的地方开始。拷贝 64512*512字节的数据到boot.img里面
dd if=2016-05-27-raspbian-jessie-lite.img of=boot.img skip=8192 count=129024
特别注意这个 这次这个count 是129024=end-start+1
不要用 Blocks下面的计算。因为block是按照文件系统的块大小计算的,不是按sector的单位。这里是1024 也就是512的两倍。恰好64512*2=129024
同样注意count的数量(2709503-137216)+1=2572288
dd if=2016-05-27-raspbian-jessie-lite.img of=rootfs.ext4 skip=137216 count=1286144
就可以得到相关文件了。
就是这样。