创建虚拟机

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系统的更多相关文章

  1. linux下如何查看某软件是否已安装

      因为linux安装软件的方式比较多,所以没有一个通用的办法能查到某些软件是否安装了.总结起来就是这样几类: 1.rpm包安装的,可以用rpm -qa看到,如果要查找某软件包是否安装,用 rpm - ...

  2. 【软件是否安装】linux下如何查看某软件是否已安装

    因为Linux安装软件的方式比较多,所以没有一个通用的办法能查到某些软件是否安装了.总结起来就是这样几类: 1.rpm包安装的,可以用rpm -qa看到,如果要查找某软件包是否安装,用 rpm -qa ...

  3. linux下查看cpu物理个数和逻辑个数 - chw1989的专栏 - 博客频道 - CSDN.NET

    body { font-family: 微软雅黑,"Microsoft YaHei", Georgia,Helvetica,Arial,sans-serif,宋体, PMingLi ...

  4. linux下后台启动springboot项目

    linux下后台启动springboot项目 我们知道启动springboot的项目有三种方式: 运行主方法启动 使用命令 mvn spring-boot:run”在命令行启动该应用 运行“mvn p ...

  5. Linux下手动备份还原硬盘主引导记录MBR跟硬盘分区表DPT教程

    Linux下手动备份还原硬盘主引导记录MBR跟硬盘分区表DPT教程 二 18 奶牛 Linux, Ubuntu, Windows 1,885 views查看评论 最近奶牛一直在折腾linux下的gru ...

  6. linux下后台启动springboot项目(转载)

    我们知道启动springboot的项目有三种方式: 运行主方法启动 使用命令 mvn spring-boot:run”在命令行启动该应用 运行“mvn package”进行打包时,会打包成一个可以直接 ...

  7. linux 下 apache启动、停止、重启命令

    原文:linux 下 apache启动.停止.重启命令 基本的操作方法: 本文假设你的apahce安装目录为/usr/local/apache2,这些方法适合任何情况 apahce启动命令: 推荐/u ...

  8. VirtualBox 使用物理硬盘

    /******************************************************************************* * VirtualBox 使用物理硬盘 ...

  9. Linux下的启动oracle的EM的命令

    Linux下的启动oracle的EM的命令 1.启动数据库 su - oracle $sqlplus / as sysdba sql>startup 2.启动监听 $lsnrctl LSNRCT ...

随机推荐

  1. iOS启动页设置

    点击项目->TARGETS->App Icons and Launch Images->Launch Images Source->Use Asset Catalog...-& ...

  2. nginx 隐藏版本信息

    隐藏nginx头部  修改后的src/core/nginx.h ,代码如下:   /*  * Copyright (C) Igor Sysoev  * Copyright (C) Nginx, Inc ...

  3. [html]经验集

    禁止默认的右键菜单: window.document.oncontextmenu = function(){ return false;} WebBrowser 控件用法:(手动填充内容) // 首先 ...

  4. 网络-->监控-->交换机端口流量监控

    一.取交换机端口流量OID 针对交换机接口速率在100M及以下: in方向:1.3.6.1.2.1.2.2.1.10 out方向:1.3.6.1.2.1.2.2.1.16 针对交换机端口速率在百兆以上 ...

  5. Centos7.0安装配置PHP7.0

    YUM安装所需开发包 yum install wget make gcc gcc-c++ bison autoconf patch \ pcre-devel zlib-devel openssl-de ...

  6. Linux内核【链表】整理笔记(1)

    我们都知道Linux内核里的双向链表和学校里教给我们的那种数据结构还是些不一样.Linux采用了一种更通用的设计,将链表以及其相关操作函数从数据本身进行剥离,这样我们在使用链表的时候就不用自己去实现诸 ...

  7. Openfire 集群探究_压测情况

    一.(测试时间:20151220 - 下午14:00-17:00) windows环境 第一次测试,运行中发现在eclipse环境下.4w个连接耗尽了约1G的内存. 另外:服务本来可用的,压测客户端强 ...

  8. Linux启动与登陆环境

    linux启动流程 参考:http://www.ruanyifeng.com/blog/2013/08/linux_boot_process.html 加载内核,首先读入/boot 目录下的内核文件. ...

  9. Python的包管理工具Pip (zz )

    Python的包管理工具Pip 接触了Ruby,发现它有个包管理工具RubyGem很好用,并且有很完备的文档系统http://rdoc.info 发现Python下也有同样的工具,包括easy_ins ...

  10. 解决WampServer中MySQL数据库中文乱码的问题

    原文地址:http://blog.csdn.net/qq756703833/article/details/37971057 左键点击托盘区的WampServer图标,选择MySQL--my.ini, ...