在linux系统中使用mount挂载带分区的镜像文件

  在linux中,可以用dd命令把分区镜像,保存为一个文件。使用mount -o loop可直接将镜象文件挂载。
前段时间,把一个128M的U盘用dd制作成为一个128M的文件,这里U盘为/dev/sdb,我用usb128Msdb作为文件名保存
dd if=/dev/sdb of=usb128Msdb


之所以用dd命令,是为了在终端操作方便快速,同时防止windows文件系统复制出错。由于128M的U盘很小,里面的文件目录太多,还是中文名称,用dd镜像后只有一个文件,方便保存和管理。

使用时,先习惯性用-o loop挂载
mount -o loop usb128Msdb  /mnt/

结果没成功
分别用file 和fdisk -l命令查看usb128Msdb文件信息
确定是镜像文件,并且有一个分区

挂载带分区的镜像文件,这就需要用-o offset=xxx参数挂载,

首先用fdisk -lu查看分区信息(要用-u参数, 以扇区数而不是以柱面数的形式显示分区表中各分区的信息)
root@think:/home/usb# fdisk -ul usb128Msdb 
You must set cylinders.
You can do this from the extra functions menu.

Disk usb128Msdb: 0 MB, 0 bytes
8 heads, 32 sectors/track, 0 cylinders, total 0 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
Disk identifier: 0x0d0c0b0a

     Device Boot      Start         End      Blocks   Id  System
usb128Msdb1   *          32      257279      128624    b  W95 FAT32

这里用32乘以512得到分区开始位置,就是offset参数值
root@think:/home/usb# echo 32*512 |bc
16384

用monut 挂载(由于能自动识别vfat文件系统,这里mount挂载时省略了-t参数)
mount -o offset=16384 usb128Msdb  /mnt/

挂载成功
root@think:/home/usb# df -Th
……
/dev/loop0    vfat    125M  124M  1.6M  99% /mnt


附:parted查看分区信息方法
习惯用fdisk工具,还有其他工具可得到分区信息,如parted
我用的是debian Squeeze,系统默认没安装,先从源安装
aptitude install parted
然后运行
parted usb128Msdb
先设置unit为B,然后用p就可显示,记下分区位置,用quit退出。
root@think:/home/usb#  parted usb128Msdb 
GNU Parted 2.3
Using /home/usb/usb128Msdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) unit                                                             
Unit?  [compact]? B                                                       
(parted) p                                                                
Model:  (file)
Disk /home/usb/usb128Msdb: 131727360B
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End         Size        Type     File system  Flags
1      16384B  131727359B  131710976B  primary  fat32        boot

(parted) quit 

用parted可直接显示分区开始位置,不用再计算。

你可能感兴趣的:(linux,基本操作,基本知识)