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 ...
随机推荐
- [字符编码]Invalid byte 1 of 1-byte UTF-8 sequence终极解决方案
今天在eclipse中编写pom.xml文件时,注释中的中文被eclipse识别到错误:Invalid byte 1 of 1-byte UTF-8 sequence,曾多次遇到该问题,问题的根源是: ...
- FZU 1686 神龙的难题 (重复覆盖)
Problem 1686 神龙的难题 Accept: 397 Submit: 1258Time Limit: 1000 mSec Memory Limit : 32768 KB Prob ...
- Varnish简介
Varnish介绍: Varnish是一个反向HTTP代理,有时也被称为HTTP的加速器或网络加速器:它存在于真实服务器的前面(可能有多级代理),将来自于客户端的请求中的部分内容存储在自身的内存中,以 ...
- js escape
JS转义 escape().encodeURI().encodeURIComponent()区别详解 JavaScript中有三个可以对字符串编码的函数,分别是: escape,encodeURI,e ...
- 轻型的ORM类Dapper
Dapper是一个轻型的ORM类.代码就一个SqlMapper.cs文件,主要是IDbConnection的扩展方法,编译后就40K的一个很小的dll.官方站点http://code.google.c ...
- Linux上的常用软件
zsh (fish): a new shell oh my zsh: zsh's conf file apvlv: pdf viewer(vim style) autojump: quick 'cd'
- Android Studio 出现Failed to open zip file的问题
修改gradle . 首先我们打开setting搜索gradle.我们可以从该界面上看到gradle的版本.
- 关于activity的启动模式
在Android中每个界面都是一个Activity ,界面的切换实际上是对不同Activity实例化的过程.而启动模式就决定Activity启动运行方式. 1.设置方式它是在主配置文件中,Activi ...
- jQuery实现折叠下拉效果
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- .NET HttpClient扩展
/// <summary> /// HttpClient扩展类 /// </summary> public static class HttpClientExtensions ...