问题描述: 目前我有两个硬盘,一个装linux系统,一个装windows系统。我在linux系统里安装了virtualbox,想让vitualbox直接使用安装了windows系统的那块硬盘,而且希望不会对windows系统中的文件造成破坏。


首先,很遗憾我没有完全实现,目前实现的是在linux系统中用virtualbox虚拟了一个win7系统,然后将原来windows系统中的D盘、E盘,添加到虚拟机中,这样原来系统中的存放的资料也能正常使用,只是有些程序可能要


具体实现的步骤,参考(http://forum.ubuntu.org.cn/viewtopic.php?t=360338):

1.在linux下安装virtualbox,安装成功后,在virtualbox中先虚拟一个可使用win7系统。

我的linux 为 centos 7,virtualbox为4.3。


2. 在命令行下执行:fdisk -l命令,查看硬盘情况。(注意:在root用户下)

[root@localhost ~]# fdisk -l

磁盘 /dev/sda:500.1 GB, 500107862016 字节,976773168 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x983f4408

   设备 Boot      Start         End      Blocks   Id  System
/dev/sda1              63      465884      232911   de  Dell Utility
/dev/sda2   *      465885   105338204    52436160    7  HPFS/NTFS/exFAT
/dev/sda3       105338205   976768064   435714930    f  W95 Ext'd (LBA)
/dev/sda5       105338268   524779289   209720511    7  HPFS/NTFS/exFAT
/dev/sda6       524779353   976768064   225994356    7  HPFS/NTFS/exFAT

磁盘 /dev/sdb:240.1 GB, 240057409536 字节,468862128 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000c687f

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1   *        2048     1026047      512000   83  Linux
/dev/sdb2         1026048   468860927   233917440   8e  Linux LVM


可以看到,我有两个硬盘,sda和sdb。sda有五个分区,sdb有两个分区。我的linux系统安装在sdb这块硬盘上,虚拟机中要添加的为/dev/sda5和/dev/sda6两个物理分区。


3.接下来做硬盘vmdk文件创建,这里直接创建整个硬盘的映射文件。创建单个分区的比较麻烦,又要提取mbr,又要修改bcd,而且还造成虚拟机能运行,原生启动错误的问题。

创建前请分配所有硬盘分区的读写权限,假如有三个 sda1 sda2 sda3 那么命令行下

 chmod 666 /dev/sda1
 chmod 666 /dev/sda2
 chmod 666 /dev/sda3
 chmod 666 /dev/sda5
 chmod 666 /dev/sda6

更多以此类推,两块盘以上的一样,无非是sdb sdc,,,,,等。我这里将sda所有的分区都修改了权限,其实只要修改sda5和sda6就可以了。在我的系统中,sda5对应原来windows系统的D盘,sda6对应原来windows系统的E盘。

使用如下指令创建 wmdk 硬盘的映射文件,这里用到的是Virtualbox的shell模式,更多内容请参看virtualbox高级用户手册

vboxmanage internalcommands createrawvmdk -filename /home/sea/sda5.vmdk -rawdisk /dev/sda5 -relative

vboxmanage internalcommands createrawvmdk -filename /home/sea/sda6.vmdk -rawdisk /dev/sda6 -relative

这样就创建了两个可以供virtualbox使用的虚拟磁盘:sda5.vmdk  sda6.vmdk

4. 打开virtuabox ,设置---->存储--->控制器,将这两个虚拟硬盘都添加虚拟机中。运行虚拟机,就可以看到这两个盘了。