分页: 1 / 2

使用 virtualbox 将物理硬盘当做虚拟机的硬盘

发表于 : 2008-04-24 9:31
SimonLei
我的笔记本是双操作系统,ubuntu和windows xp。前一段时间一直在ubuntu上用,由于需要使用一些即时通讯工具, 例如QQ,所以在ubuntu里面有用virtualbox虚拟了另一个winxp。这样一来,搞得有一个真实的xp系统,一个虚拟的 xp系统。这还不算头疼。最近因为一些原因,回到真实的xp系统上,发现有些ubuntu上用习惯了的东西又没有了。 这个时候,要么再virtualbox一个ubuntu,要么装cygwin。这两种方案,都不爽。而且,由于平常用的一些文件在几个真真 假假的系统之间换来换去,很难保持一致性,比较头痛。

后来想到,干脆把物理硬盘当做虚拟机的硬盘,这样,不管是把xp当做host,还是把ubuntu当做Host,我都是只有两套系统。 只不过是哪个系统为 host,哪个系统为 guest 而已。我使用的virtualbox 版本是1.5.6,参考它的手册9.9

要注意的是,文档中也指出,这是个比较危险的动作,可能会造成硬盘数据的丢失。有个原则,就是这两个系统,都不直接访问 另一个系统的分区。我就是一块硬盘,四个分区,1为xp,2和3是ubuntu,4是swap。

首先,在ubuntu上,这个比较简单,参考文档,使用命令:

VBoxManage internalcommands createrawvmdk -filename ~/winxp.vmdk -rawdisk /dev/sda -partitions 1 -relative -register

这里有个权限的问题,因为/dev/sda 和 /dev/sda1 对普通用户是不可读的,所以需要修改一下权限。我是直接用 777,虽然不安全,不过省事。这里用 relative参数,就是说不用其他分区,因此只要这两个device的权限就行。

随后是mbr的问题。我给这个虚拟机让它直接使用自己的mbr,首先用 sudo apt-get install mbr,然后

install-mbr -f -p 1 winxp-pt.vmdk

这样就使得它有独立的mbr了。不过因为我不重装系统,所以这个步骤的意义其实不是很大。随后就很简单了, 启动virtualbox,新建一个xp的虚拟机,使用这块新做出来的硬盘。这里注意,有个选项必须要选上,在属性-> 常规->高级->启用IO APIC 刚开始我没选这个属性,每次启动虚拟机,虚拟机都黑屏,选上就好了。

其次,在winxp上,也使用命令行,差别不大,不过有一点,因为ubuntu使用分区2,3,光使用这两个分区做虚拟机, 启动的时候总是停留在 MBR 1FA这个地方,查了半天也没查出个所以然来。后来想算了,干脆把全盘当做虚拟机的 硬盘好了,只要在winxp下面不要去直接访问分区2,3,应该就没事。命令行如下:

vboxmanage internalcommands createrawvmdk -filename ubuntu.vmdk -rawdisk \\.\PhysicalDrive0 -register

然后就可以了。这样我就可以把双操作系统随时都一起启动起来,比较好玩。:D

发表于 : 2008-04-25 0:07
kopision
……好麻烦,还不如开个共享映射网络硬盘……

Re: 使用 virtualbox 将物理硬盘当做虚拟机的硬盘

发表于 : 2010-05-02 11:13
royaso
晕晕的,有点看不懂,
求图。。

Re: 使用 virtualbox 将物理硬盘当做虚拟机的硬盘

发表于 : 2010-06-03 16:54
larry0804
楼主wubi安装的ubuntu能用这种方法吗?

Re: 使用 virtualbox 将物理硬盘当做虚拟机的硬盘

发表于 : 2010-06-03 17:57
dwl301
有点不爽 …… :em25 :em25 :em25

Re: 使用 virtualbox 将物理硬盘当做虚拟机的硬盘

发表于 : 2010-06-23 23:19
myheartshape
不知这动作危险不
改天试试

Re: 使用 virtualbox 将物理硬盘当做虚拟机的硬盘

发表于 : 2010-07-01 16:11
wheel
VBoxManage internalcommands createrawvmdk -filename ~/winxp.vmdk -rawdisk /dev/sda -partitions 1 -relative -register

看来不错的说

Re: 使用 virtualbox 将物理硬盘当做虚拟机的硬盘

发表于 : 2010-08-03 5:46
fififisher
这个方法真没的说,这是唯一的方法了。。。

举例:

如果你的host系统式ubuntu,然后在host系统里mount了一些ntfs,那么这些ntfs盘是不能让vbox作为共享空间的,


有了楼主这种方法,就可以在虚拟系统里面,读取这些ntfs的盘了。。。。。

!!!!!!!!!!!!!!!

Re: 使用 virtualbox 将物理硬盘当做虚拟机的硬盘

发表于 : 2010-08-03 8:49
32idea
如果你的host系统式ubuntu,然后在host系统里mount了一些ntfs,那么这些ntfs盘是不能让vbox作为共享空间的,
为什么不呢?我的貌似没什么问题,可以把NTFS下的文件夹建个软链接到共享文件夹下。

Re: 使用 virtualbox 将物理硬盘当做虚拟机的硬盘

发表于 : 2010-11-27 22:17
jack286
花样百出,不知网络功能如何,有机会试试

Re: 使用 virtualbox 将物理硬盘当做虚拟机的硬盘

发表于 : 2011-08-30 10:29
liuhk388
为何我VBoxManage internalcommands createrawvmdk -filename ~/winxp.vmdk -rawdisk /dev/sda -partitions 1 -relative -register的时候出现:
WARNING: The vboxdrv kernel module is not loaded. Either there is no module
available for the current kernel (2.6.38-11-generic) or it failed to
load. Please recompile the kernel module and install it by

sudo /etc/init.d/vboxdrv setup

You will not be able to start VMs until this problem is fixed.

Re: 使用 virtualbox 将物理硬盘当做虚拟机的硬盘

发表于 : 2011-08-30 12:58
百草谷居士
11楼的,vboxdrv内核模块没有装载成功,请运行

代码: 全选

sudo /etc/init.d/vboxdrv setup
重新编译内核并安装它。
ubuntu下修改/dev/sda读写权限并不好用,因为系统有时候会把它的权限自动给改回来。可以把自己加入到disk组,当然这样并不安全。不过直接使用物理硬盘本身就是个不安全的事情。

Re: 使用 virtualbox 将物理硬盘当做虚拟机的硬盘

发表于 : 2011-09-04 22:59
Aaron98
为何我VBoxManage internalcommands createrawvmdk -filename ~/winxp.vmdk -rawdisk /dev/sda -partitions 1 -relative -register的时候出现:
Syntax error: Invalid parameter '-register'

于是我吧-register这么命令省去了,可以吗?

还有请问如何修改sda1的权限为777啊?

Re: 使用 virtualbox 将物理硬盘当做虚拟机的硬盘

发表于 : 2011-09-04 23:33
Aaron98
大侠们:
我选择按lz方法制作的vmdk的时候,出现以下错误:
打开 虚拟硬盘 /home/aaron/win7.vmdk 失败.
The medium '/home/aaron/win7.vmdk' can't be used as the requested device type.


返回 代码:
NS_ERROR_FAILURE (0x80004005)
组件:
Medium
界面:
IMedium {53f9cc0c-e0fd-40a5-a404-a7a5272082cd}
被召者:
IVirtualBox {c28be65f-1a8f-43b4-81f1-eb60cb516e66}

Re: 使用 virtualbox 将物理硬盘当做虚拟机的硬盘

发表于 : 2011-09-04 23:38
Aaron98
若是加载另外一个win7-pt.vmdk的文件则出现:

打开 虚拟硬盘 /home/aaron/win7-pt.vmdk 失败.

Could not get the storage format of the medium '/home/aaron/win7-pt.vmdk' (VERR_NOT_SUPPORTED).

返回 代码:VBOX_E_IPRT_ERROR (0x80BB0005)
组件:Medium
界面:IMedium {53f9cc0c-e0fd-40a5-a404-a7a5272082cd}
被召者:IVirtualBox {c28be65f-1a8f-43b4-81f1-eb60cb516e66}