Chinaunix首页 | 论坛 | 博客
  • 博客访问: 683074
  • 博文数量: 95
  • 博客积分: 1773
  • 博客等级: 上尉
  • 技术积分: 1653
  • 用 户 组: 普通用户
  • 注册时间: 2007-08-17 23:28
文章分类
文章存档

2018年(2)

2017年(10)

2016年(7)

2015年(48)

2014年(2)

2013年(2)

2012年(2)

2011年(7)

2010年(7)

2009年(3)

2008年(1)

2007年(4)

分类: LINUX

2015-09-27 00:54:22

近日,研究了下在Debian7下打开包含bitlocker加密的VHD虚拟磁盘的方法,好像中文介绍不多,遂记录备查,也供有类似需要人参考。

主要涉及的工具有
1.  fuse工具,及virtualbox-fuse(需要里面的vdfuse工具)
2.  gcc,make(因为dislocker安装需要编译)安装,libfuse-dev(编译后面的工具需要)
3.  dislocker工具

具体过程,先安装相应的预编译工具和库

点击(此处)折叠或打开

  1. aptitude install fuse virtualbox-fuse gcc make libfuse-dev

点击(此处)折叠或打开

  1. wget http://www.hsc.fr/ressources/outils/dislocker/download/dislocker.tar.gz
解压源码包并编译安装

点击(此处)折叠或打开

  1. tar zxvf dislocker.tar.gz
  2. cd dislocker/src
  3. make && make install
至此,应用环境已经处理好,可以进行挂载操作了。
因为VHD的内容是加密的,所以其实需要3次挂载才能达到使用状态,第一次是利用virtualbox-fuse获得的vdfuse挂载VHD文件
  1. vdfuse -t VHD -f <VHDPATH> -w <VHDMOUNTPOINT>
其中的选项参数 -t 指定了映像文件类型是vhd,不指定则为auto,但识别率较低,-f 后面的 <VHDPATH> 就是vhd文件的路径,-w 选项表示是可写挂载,后面的<VHDMOUNTPOINT> 就是挂载点的位置了。成功后在<VHDMOUNTPOINT>目录下会有多个块文件,其中EntireDisk是入口点,  Partition1是第一个分区的入口点。
然后是分区解密挂载,加密分区了,要用到dislocker工具(以挂载第一个分区为例)
  1. dislocker -v -V <VHDMOUNTPOINT>/Partition1 -u"<PASSWD>" -- <DISLOCKERPOINT>
其中选项参数的意思是 -v 显示冗长的提示, -V  获取卷信息,<VHDMOUNTPOINT>/Partition1 就是指定要挂载的设备,-u"<PASSWD>" 指定采用密码方式解密,密码是<PASSWD>-- 表示选项结束,后面就是挂载点<DISLOCKERPOINT>。 挂载成功后,在<DISLOCKERPOINT>目录下有dislocker-file这样一个块文件。
最后就是一般的挂载了,需要用常规挂载工具mount,注意挂载参数
  1. mount -o loop  <DISLOCKERPOINT>/dislocker-file <MOUNTPIONT>
其中<MOUNTPIONT>就是最终挂载后的访问点,整个过程挂载后是可读写的挂载。

至此整个过程完成,可以正常读写了。意:整个过程中所有的<VHDMOUNTPOINT>、<DISLOCKERPOINT>、<MOUNTPIONT>都必须是已存在的目录,在我给出的操作中这些部分需要根据你实际情况替换。<PASSWD>同样需要根据情况替换。另操作需要root权限。

卸载都是用umount,以前面的逆序完成。

为了方便,结合情况(一般的VHD中都只有一个分区),且同时挂载多个VHD文件的需求不是特别大,所以可以自定义一个脚本来一次完成,我简单写了一个脚最简单本
文件mountLokerVhd.sh内容见下:

点击(此处)折叠或打开

  1. #!/bin/bash

# mountLokerVhd.sh
#
挂载VHD文件到指定位置,如果未指定,则只能挂载一个文件,需要挂载其他文件时需要先卸载

  1. #VHD中文件支持bitlocker加密

  2. VHDPATH="$1"
  3. PASSWD="$2"
  4. # 确定各个挂载点可用
  5. mkdir -p /mnt/vhd-disk /mnt/image /mnt/partition1
  6. # 确定各个挂载点属性(方便读写)操作
  7. chmod 777 /mnt/vhd-disk /mnt/image /mnt/partition1

  8. vdfuse -t VHD -f "${VHDPATH}" -w /mnt/vhd-disk/ \
  9.         && dislocker -v -V /mnt/vhd-disk/Partition1 -u"${PASSWD}" -- /mnt/image/ \
  10.         && mount -o loop /mnt/image/dislocker-file /mnt/partition1/
调用方法就是:

点击(此处)折叠或打开

  1. mountLokerVhd.sh <vhdpath> <passwd>
其中<vhdpath>是vhd文件路径, <passwd>是解密密码。
卸载的最简单脚本umountVhd.sh:

点击(此处)折叠或打开

  1. #!/bin/bash
  2. # umountVhd.sh
  3. # 卸载挂载的vhd文件

  4. umount /mnt/partition1/ && sleep 2 && umount /mnt/image/ && sleep 2 && umount /mnt/vhd-disk/
调用方法是:

点击(此处)折叠或打开

  1. umountVhd.sh
其他Linux发行版及类Unix发行版,只要能安装上同样的工具,操作应该是共通的。
阅读(3148) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~