问题描述
我的Ubuntu 12.04安装在/dev/sda5
和Windows 7的/dev/sda1
上。当我运行Ubuntu时,我想使用Virtualbox在VM中运行Windows 7。 Windows 7分区是1 TB并且是半满的,即大,所以我不想将其复制到虚拟硬盘中。
我已经读过可以将一个真正的硬盘用于Virtualbox VM,但是我发现的各种指令彼此不同,我似乎无法让它工作。有没有人知道如何让它在Ubuntu 12.04和Virtualbox 2.1.12_Ubuntu r77245(最新的Ubuntu安装了repos)工作?
请发布它是如何工作的,因为我想重试任何可行的方法。
最佳解决办法
你想要的命令是
VBoxManage internalcommands createrawvmdk -filename Win7.vmdk -rawdisk /dev/sda -partitions 1
这将创建一个特殊的VMDK虚拟磁盘文件(Win7.vmdk),它实际上是指向主机磁盘分区/dev/sda1
的指针。
理论上,您可以将此作为VM的磁盘文件直接从实际磁盘分区运行,但是…
-
(a)我从来没有试过这个,所以不知道它有多可靠
-
(b)您可能会遇到Windows激活问题,具体取决于您的许可证密钥以及Windows是否确定检测到的’hardware’已发生重大变化
次佳解决办法
是的,您可以使用内部createrawvmdk
命令执行此操作,该命令不会创建整个磁盘映像,而是指向实际硬件的指针。
有两种方法可以做到这一点
-
A.完整磁盘映像(/dev /sdb)
sudo VBoxManage internalcommands createrawvmdk -filename sdb.vmdk -rawdisk /dev/sdb
-
B.分区图像
正如@StarNamer所示,您只能使用一个或几个分区。
要创建只有一个(/dev /sda1)分区的映像:
sudo VBoxManage internalcommands createrawvmdk -filename sda1.vmdk -rawdisk /dev/sda -partitions 1
要创建自定义分区表,它将按顺序映射/dev /sda2和/dev /sda1:
sudo VBoxManage internalcommands createrawvmdk -filename sda2_1.vmdk -rawdisk /dev/sda -partitions 2,1
最显著的区别在于,完整磁盘映像将完全像在磁盘中一样使用引导加载程序和分区表,因此理论上(我以前只在qemu中执行过此操作)您将能够从虚拟机中设置操作系统。根据我有限的经验,我可以说完整的磁盘映像将完全像qemu -hda /dev/sdb
一样工作。
注意:如果您使用用户访问磁盘,则需要将其添加到disk
和vboxusers
组,例如
sudo usermod -aG disk,vboxusers ubuntu
然后确保你re-login或重新启动你的电脑。
进一步阅读:
-
VirtualBox文档:Using a raw host hard disk from a guest
-
VirtualBox boots only in UEFI Interactive shell(仅包括用于UEFI安装的ESP将不起作用)
-
更好的是,您可以在创建VMDK时使用install MBR into a file并使用
-mbr
选项(请参阅1)。 -
如果您遇到
VERR_ACCESS_DENIED
错误,请检查:Virtualbox doesn’t work with a real partition。