Linux下VirtualBox启动物理硬盘上已安装的Window 8系统
创建虚拟机
1.创建一个没有硬盘的windows虚拟机,与已安装在物理硬盘上的系统一致。
2.通过命令行在创建的虚拟机目录下创建一个指向物理硬盘的虚拟硬盘
VBoxManage internalcommands createrawvmdk -filename /path/to/file.vmdk -rawdisk /dev/sda -partitions 1,2,3,4,5,8 -relative
3.在创建的虚拟机中加载刚创建的vmdk虚拟硬盘。
4.正常启动虚拟机,一切搞定。
5.当然,要在虚拟机里用得爽,就要把配置搞好,并安装上extension包里的guest additions。
过程中的问题
看似简单的过程,还是有些问题会出现。
1.创建好的vmdk虚拟硬盘无法使用,报 VERR_ACCESS_DENIED 错误。
解:首先找到了一往篇windows下的文章 http://blog.csdn.net/dewafer/article/details/41366441 ,其中提到了同样的错误。但windows下的问题出在,博主没有用管理员权限创建虚拟硬盘,博主通过用管理员权限创建之后解决了他的问题。而我是用linux,而且是sudo创建的(创建完之后会是两人个文件,一个是你创建的文件名加上.vmdk,另一个是文件名加上-pt,然后才是.vmdk,不知这两个文件分别是什么作用?),所属用户已经是root了。但我还把用户改成了自己,把文件的组归属到了vboxusers(virtualbox的用户组),并设置了664的权限,问题依旧。再看了一遍官方文档,发现自己没有完全按文档中写,我写成了VBoxManage internalcommands createrawvmdk -filename /path/to/file.vmdk -rawdisk /dev/sda -partitions 1,2,3,4,5,8 少了-relative参数!加上之后,再运行virtualbox,一切正常!
P.S.
要使系统开机之后直接能使用物理硬盘上的windows,要在系统加载时就添加对这些物理盘的读写权限,在/etc/ude/rules.d下创建一个新的文件61-vbox-vmdk.rules,其内容为
# Full disk needs to be readable by vboxusers
ENV{ID_SERIAL_SHORT}=="TF655BWH163KLR", ENV{DEVTYPE}=="disk", GROUP="vboxusers", MODE="0640"
# sda2, 6 need to be R/W by vboxusers
ENV{ID_SERIAL_SHORT}=="TF655BWH163KLR", ENV{DEVTYPE}=="partition",ENV{ID_PART_ENTRY_NUMBER}=="1", GROUP="vboxusers", MODE="0660"
ENV{ID_SERIAL_SHORT}=="TF655BWH163KLR", ENV{DEVTYPE}=="partition",ENV{ID_PART_ENTRY_NUMBER}=="2", GROUP="vboxusers", MODE="0660"
ENV{ID_SERIAL_SHORT}=="TF655BWH163KLR", ENV{DEVTYPE}=="partition",ENV{ID_PART_ENTRY_NUMBER}=="3", GROUP="vboxusers", MODE="0660"
ENV{ID_SERIAL_SHORT}=="TF655BWH163KLR", ENV{DEVTYPE}=="partition",ENV{ID_PART_ENTRY_NUMBER}=="4", GROUP="vboxusers", MODE="0660"
ENV{ID_SERIAL_SHORT}=="TF655BWH163KLR", ENV{DEVTYPE}=="partition",ENV{ID_PART_ENTRY_NUMBER}=="5", GROUP="vboxusers", MODE="0660"
ENV{ID_SERIAL_SHORT}=="TF655BWH163KLR", ENV{DEVTYPE}=="partition",ENV{ID_PART_ENTRY_NUMBER}=="8", GROUP="vboxusers", MODE="0660"
而其中的TF655BWH163KLR是硬盘的标识,可以以下命令来获取
hdparm -I /dev/sda | grep Serial
而其中的数字表示了硬盘的分区,1表示第一个分区,sda1,依次类推。
参考链接:
https://cnzhx.net/blog/opensuse-tw-virtualbox/#i-5
https://cnzhx.net/blog/boot-linux-partition-on-physical-hd-with-vm-in-windows/
http://www.virtualbox.org/manual/ch09.html#rawdisk
P.S.P.S.
其实,这一次的目的是想在virtualbox中通过passthrough来实现物理机在virtualbox里流畅运行的,但在买电脑的时候只注意了CPU是否支持vt-d(amd叫IOMMU)而忽略了主机对vt-d(北桥芯片,详见http://download.intel.com/technology/computing/vptech/Intel(r)_VT_for_Direct_IO.pdf)的支持性,结果本本是intel的HM77(http://ark.intel.com/products/64339),官方已经确认不支持vt-d。后来又了解到,即便是主板芯片组支持了该功能,但生产厂商的BIOS中没有相关的开启项,也是惘然,除非主机默认打开了vt-d功能。所以要使用vt-d这个高级功能还真是要费点心思。当然,使用vt-d,你还得有两块显卡(一般的独显本本都能满足的吧,一个是CPU的集显,一个是独显)以及两个显示器(如果没有,也可以用VNC来远程使用,据说只损失5%的性能)。好了,如果之后有机会换上了全套功能的电脑,再来一发passthrough的文章。
最后给一篇半虚拟化的文章,以供扩展阅读。
http://smilejay.com/2012/11/kvm-vtd-overview/
Linux下VirtualBox启动物理硬盘上已安装的Window 8系统的更多相关文章
- linux下如何查看某软件是否已安装
因为linux安装软件的方式比较多,所以没有一个通用的办法能查到某些软件是否安装了.总结起来就是这样几类: 1.rpm包安装的,可以用rpm -qa看到,如果要查找某软件包是否安装,用 rpm - ...
- 【软件是否安装】linux下如何查看某软件是否已安装
因为Linux安装软件的方式比较多,所以没有一个通用的办法能查到某些软件是否安装了.总结起来就是这样几类: 1.rpm包安装的,可以用rpm -qa看到,如果要查找某软件包是否安装,用 rpm -qa ...
- linux下查看cpu物理个数和逻辑个数 - chw1989的专栏 - 博客频道 - CSDN.NET
body { font-family: 微软雅黑,"Microsoft YaHei", Georgia,Helvetica,Arial,sans-serif,宋体, PMingLi ...
- linux下后台启动springboot项目
linux下后台启动springboot项目 我们知道启动springboot的项目有三种方式: 运行主方法启动 使用命令 mvn spring-boot:run”在命令行启动该应用 运行“mvn p ...
- Linux下手动备份还原硬盘主引导记录MBR跟硬盘分区表DPT教程
Linux下手动备份还原硬盘主引导记录MBR跟硬盘分区表DPT教程 二 18 奶牛 Linux, Ubuntu, Windows 1,885 views查看评论 最近奶牛一直在折腾linux下的gru ...
- linux下后台启动springboot项目(转载)
我们知道启动springboot的项目有三种方式: 运行主方法启动 使用命令 mvn spring-boot:run”在命令行启动该应用 运行“mvn package”进行打包时,会打包成一个可以直接 ...
- linux 下 apache启动、停止、重启命令
原文:linux 下 apache启动.停止.重启命令 基本的操作方法: 本文假设你的apahce安装目录为/usr/local/apache2,这些方法适合任何情况 apahce启动命令: 推荐/u ...
- VirtualBox 使用物理硬盘
/******************************************************************************* * VirtualBox 使用物理硬盘 ...
- Linux下的启动oracle的EM的命令
Linux下的启动oracle的EM的命令 1.启动数据库 su - oracle $sqlplus / as sysdba sql>startup 2.启动监听 $lsnrctl LSNRCT ...
随机推荐
- 【面向对象版】HashMap(增删改查)
前言: 关于什么是HashMap,HashMap可以用来做些什么,这些定义类的描述,请参照[简易版]HashMap(增删改查)的内容. 这章节主要是面向实例,直接进行HashMap(增删改查)的演示. ...
- 3 Longest Substring Without Repeating Characters
public int lengthOfLongestSubstring(String s) { long length = s.length(); String tmp = ""; ...
- Python SQLAlchemy --3
本文為 Python SQLAlchemy ORM 一系列教學文: 刪除 學會如何查詢之後,就能夠進行後續的刪除.更新等操作. 同樣地,以幾個範例做為學習的捷徑. 123456789 user_1 = ...
- jQuery与Ajax的应用——《锋利的jQuery》(第2版)读书笔记3
第6章 jQuery与Ajax的应用 jQuery对Ajax操作进行了封装,在jQuery中$.ajax()方法属于最底层的方法,第2层是load().$.get()和$.post()方法,第3层是$ ...
- A*寻路算法(JavaScript实现)
参考资料:http://www.cnblogs.com/zhoug2020/p/3468167.html http://www.cnblogs.com/lipan/arch ...
- C# log4net输出发生错误的行号
别人调用我写的接口,总是报错,但我这测试是没问题的,就想着用log4net来跟踪一下. 跟踪后,发现接口确实有出错的日志,但是没有具体出错的地方. 通过输出日志的方式,跟踪不是很方便,就想着log4n ...
- Phabricator部署手册
参考:https://secure.phabricator.com/book/phabricator/article/installation_guide/ 概述 phabricator,由faceb ...
- Word论文写作如何实现公式居中、编号右对齐
第一步:插入表格 在公式所在行居中插入一行三列的表格,具体操作为: a.设置行居中,快捷键Ctrl+E: b.插入->表格->3×1的表格: 2 第二步:修改表格属性 新插入的表格三列等宽 ...
- photo shop替换颜色(自己指定的颜色)
点开"选择"-"色彩范围",在选择下拉菜单里选"取样颜色",吸取图片上的要改的颜色,"确定",左下角拾色器前景色用你希望 ...
- kendo chart label position 图表的值标签位置及显示模板
1.不显示0 seriesDefaults: { type: "column", labels: { visible: true, position:'' background: ...