从现实到虚拟

本文介绍的是 disk2vhd 软件的应用。关于如何从现实世界进入矩阵,详见“黑客帝国”。
(我承认上一行文字是仿 Wikipedia 的……)

一、为什么要从现实到虚拟

你是否曾使用过虚拟机?你是否曾觉得虚拟机里的世界那么“不真实”?缺少了常用软件的支撑、让人郁闷的默认设置……没有了熟悉的环境,虚拟机用着是如此的不爽。

你是否曾使用过类似“影子系统”的软件?这种“软件还原卡”几乎可以让 Windows 变成“打不死的小强”,但是天生折腾心理让你需要装多系统,需要调整启动文件:重启后无法引导怎么办?这可不是影子系统能帮你的了。Symantec Ghost?拜托,杀鸡焉用牛刀?

正是由于包括但不仅限于以上的种种原因,我们需要一款软件,能将现实中的操作系统(主要指 Windows 家族)复制一份到虚拟机里。其实就是把当前的内容灌到一个 vhd 文件里。

Update: 补充一句,虚拟机里是运行不了 Ghost 的,所以使用 Ghost 是无法“从现实到虚拟”的。

二、准备

工具软件方面,只需要一个,那就是 disk2vhd。这是 Sysinternals Suite 中的一个小软件。这个 Sysinternals 公司成立于 1996 年,专门出各种各样的用于 Windows 调教管理监察的免费小工具。十年后的 2006 年,微软看上了它的实力,就把它买下来了。现在它们的大部分工具(除了某些,比如恢复 Windows 密码的 NT Locksmith 软件)都可以在微软的 TechNet 上下载到

操作系统方面,必须要是 XP(NT 5.2) 或以上的系统,根据它的官方说明,包括 Vista 在内的 NT6 系列也是完全支持的,x64 版本也包括在内。

硬件方面,主要是对磁盘有要求,即你得有一个剩余空间比较大的分区。另外,根据它的说明,如果有两块物理硬盘的话,制作 vhd 的速度会快一些,但是如果只有一块(大部分人只有一块吧),也是没有问题的。根据我的实测,制作一个 10GiB 左右的 vhd,在我的电脑上(2006 年主流配置),大约是 15 分钟的时间。

三、制作

运行 disk2vhd 软件,如图。

在图中可以看到电脑上已经挂载的那些卷,Size 是说卷的容量,Free 是剩余空间的大小,而 Required space 则是说目标 vhd 所需要占用空间的大小。默认是全部选中的,它们将被用来创建一个 vhd 文件,大小将是所有的 Required space 的总和。但是虚拟机里通常只要用到一个系统分区就可以了,所以一般只要勾选系统分区,其它都不要勾选。上面还有一个文本框,是用来指定 vhd 的路径和文件名的。默认应该是保存在剩余空间最大的分区的根目录里,以机器名为文件名。

需要注意的是,就算不勾选后面的数据分区,它们的分区信息也会被囊括在 vhd 文件里,只是分区上没有创建卷(未格式化)而已。

一切确认好之后,就可以点击 Create 开始捕获硬盘并生成 vhd 了。时间不会很长,正如本文之前所说,在 2006 年主流配置的电脑上,一个 10GiB 的 vhd 也不过 15 分钟。

vhd 终于创建完毕了。假设它就是 D:\wzyboy.vhd 吧。

四、关于 VHD

VHD 这种好东西,wzyboy’s blog 之前也做过一些介绍,更详细的可以参见 Wikipedia (zh/en)。它能被大部分虚拟机软件所支持,并且从 Windows 7 开始被原生支持,也就是说 Windows 7 可以被灌装在一个 vhd 里启动了(很像 Ubuntu 等发行版的 Wubi 安装、启动方式,当然,没有 Wubi 那么方便)。

在 Windows 7 里,可以通过自带的磁盘管理工具 diskmgmt.msc 来挂载 vhd。方法见这篇文章的第二节。

不过,有一点要注意,那就是一个 vhd 完全模拟了一个真正的硬盘,它也可以被 Windows Loader 识别,Windows Loader 会分配它一个 GUID。而一旦你用上面的方法挂载了 vhd ,它就会与现在你电脑上已经有的硬盘的 GUID 冲突,所以 Windows 会重新分配一个 GUID 给它,这样之后,vhd 里的 Windows Loader 就不能识别硬盘了,所以这个 vhd 在虚拟机里就会不能启动了。所以,请打消挂载 vhd 然后看看里面有什么东西的念头。或者,你可以在别的电脑上 / 换一块硬盘启动之后再挂载。总之不能有 GUID 相同的物理硬盘 / 虚拟硬盘同时被挂载。

五、在虚拟机里从 vhd 启动

现在该到检验成果的时候了。刚才说了,主流的虚拟机软件都支持 vhd 作为虚拟机的硬盘的,比如被微软收购后变成免费软件的 Virtual PC。不过我个人比较喜欢功能更强大的 Sun VirtualBox。这是一个开源软件。安装好软件之后启动之,按 Ctrl+D 打开虚拟介质管理器,添加刚才创建出来的 D:\wzyboy.vhd,然后再新建一个虚拟机。虚拟机新建向导很友好,这里不再赘述,新建好之后应该是这个样子的:

呃,Snap7 是我给它起的名字。

万事俱备,按下 Start 按钮启动它吧~ 多么熟悉的启动动画……我的启动动画是修改过的,于是我在虚拟机里看到的启动动画也是修改过的……我的登录界面背景也是修改过的……最终我来到了熟悉的桌面……(点击看大图)

两个一模一样的系统并行运行着:(点击看大图)

多么有趣啊。现在你可以随便做什么事情了,虚拟机弄坏了没关系的……

最后稍微提一句虚拟机里的硬盘。打开资源管理器可以看到那些分区都还在,只是没有格式化而已,你可以随意格式化它们……不过大小已经固定了。这牵扯到“分区”(Partition)和“卷”(Volume)的区别,不再跑题了。

六、直接从 vhd 启动?

文章到这里还没有结束。按理说,虚拟机里跑个 Windows 7,只有 512MiB 的 RAM,并且还受到更多的性能限制,应该比较卡吧?但是其实还是挺流畅的(出乎我的意料),反应速度什么的和主机太大区别,估计是 Windows 7 的虚拟化特性比较好吧。但是呢……既然 Windows 7 是支持从 vhd 启动呢,那直接启动它会怎么样呢?

要把 vhd 添加为一个 BCD 里的启动项可比“把大象装冰箱”复杂一些,特别是用命令行工具 bcdedit.exe 的话,好在有一个叫 EasyBCD 的工具解决了这个问题,这篇文章介绍了它的使用方法。

顺利地把 vhd 添加为一个启动项之后,我满怀希望地准备从它启动,但是失败了,在启动动画过后,迎接我的不是登录界面,而是蓝屏……我再试了几次,依然如此。于是我回到 Windows 7 里,把 vhd 挂载,然后重新分配 GUID,再次试图启动……但是依然是蓝屏。

我表示无解。

七、尾声

嗯,这是高考结束后更新的第一篇真正的文章。希望大家喜欢。若要转载,请务必注明出处及链接(详情请见页面底部的 CC 协议)。本文地址:http://wzyboy.im/post/658.html

Leave a comment

60 Comments.

  1. 沙发,高考完了都在更新啊。。

    Opera 11.11 Opera 11.11 Windows XP Windows XP
    Opera/9.80 (Windows NT 5.1; U; zh-cn) Presto/2.8.131 Version/11.11
    • 嗯,是啊。好久没写了。

      Google Chrome 13.0.766.0 Google Chrome 13.0.766.0 Windows 7 Windows 7
      Mozilla/5.0 (Windows NT 6.1) AppleWebKit/534.36 (KHTML, like Gecko) Chrome/13.0.766.0 Safari/534.36
  2. 在虚拟机里还是跑 XP 或者 2k 比较得力…

    Unknown Unknown Unknown Unknown
    Python-urllib/3.2
    • 跑 Win7 挺爽的啊。话说您终于两个 Unknown 了

      Google Chrome 13.0.766.0 Google Chrome 13.0.766.0 Windows 7 Windows 7
      Mozilla/5.0 (Windows NT 6.1) AppleWebKit/534.36 (KHTML, like Gecko) Chrome/13.0.766.0 Safari/534.36
      • 其实小黑背后的那个 CoA 俺还没用呢= =等哪天去加内存了就装下玩玩…

        Python urllib 的 User-agent 好简单…

        Unknown Unknown Unknown Unknown
        Python-urllib/2.7
  3. 非常折腾呃。。。
    个人觉得在虚拟机里面全新安装个系统比较方便,然后快照一下就可以了。

    Safari 5.0.5 Safari 5.0.5 Mac OS X 10.6.7 Mac OS X 10.6.7
    Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_7; zh-cn) AppleWebKit/533.21.1 (KHTML, like Gecko) Version/5.0.5 Safari/533.21.1
    • 这个么,主要是为了复制一下自己熟悉的环境嘛

      Google Chrome 13.0.766.0 Google Chrome 13.0.766.0 Windows 7 Windows 7
      Mozilla/5.0 (Windows NT 6.1) AppleWebKit/534.36 (KHTML, like Gecko) Chrome/13.0.766.0 Safari/534.36
    • 去看看 LVM?那东西做 snapshot 似乎挺快…

      Unknown Unknown Unknown Unknown
      libwww-perl/5.837
      • 你又双 Unknown 了……

        Google Chrome 13.0.766.0 Google Chrome 13.0.766.0 Windows 7 Windows 7
        Mozilla/5.0 (Windows NT 6.1) AppleWebKit/534.36 (KHTML, like Gecko) Chrome/13.0.766.0 Safari/534.36
        • 放心平时没人会用这种见鬼的东西来留言的…

          Unknown Unknown Unknown Unknown
          Python-urllib/2.5 AppEngine-Google; (+http://code.google.com/appengine; appid: jimmy-alpha)
  4. 又学到了一招,哈哈

    Firefox 4.0.1 Firefox 4.0.1 Windows 7 x64 Edition Windows 7 x64 Edition
    Mozilla/5.0 (Windows NT 6.1; WOW64; rv:2.0.1) Gecko/20100101 Firefox/4.0.1
  5. 我只是来测试一下UA而已

    Chromium 11.0.696.57 Chromium 11.0.696.57 Ubuntu 10.10 Ubuntu 10.10
    Mozilla/5.0 (X11; Linux i686) AppleWebKit/534.24 (KHTML, like Gecko) Ubuntu/10.10 Chromium/11.0.696.57 Chrome/11.0.696.57 Safari/534.24
    • 嗯,盗用别人的 Email 可不是什么好习惯。帮你把 Email 改回来了。

      Google Chrome 14.0.794.0 Google Chrome 14.0.794.0 Windows 7 Windows 7
      Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.794.0 Safari/535.1
      • 我没有你的Email的密码 所以不能算盗用

        Safari Safari Mac OS X Mac OS X
        Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/103u (KHTML, like Gecko) safari/100
        • 盗用 Gravatar 信息也是一种盗用。

          Google Chrome 14.0.794.0 Google Chrome 14.0.794.0 Windows 7 Windows 7
          Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.794.0 Safari/535.1
          • 那我就接着盗用

            Firefox 5.0 Firefox 5.0 Mac OS X 10.6.7 Mac OS X 10.6.7
            Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_7; zh-cn) AppleWebKit/533.21.1 (KHTML, like Gecko) Firefox/5.0
            • 我会耐心地帮你改回来的。

              Google Chrome 14.0.794.0 Google Chrome 14.0.794.0 Windows 7 Windows 7
              Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.794.0 Safari/535.1
  6. 试试这个UA

    Mobile Safari 4.0 Mobile Safari 4.0 HTC Magic HTC Magic
    Mozilla/5.0 (Linux; U; Android 2.2; zh-cn; HTC Magic Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1
  7. 看到此文,内牛满面,你终于又写文章了!!! :razz: :cry:

    Google Chrome 12.0.742.91 Google Chrome 12.0.742.91 Windows XP Windows XP
    Mozilla/5.0 (Windows NT 5.1) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.91 Safari/534.30
  8. :?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

    你好

    Unknown Unknown Unknown Unknown
    TwiMeido/1.0
    • 乃的表情果然坏了…

      Opera Next 11.50 Opera Next 11.50 Arch Linux x64 Arch Linux x64
      Opera/9.80 (X11; Linux x86_64; U; Edition Next; Arch Linux; ja) Presto/2.8.165 Version/11.50
      • 看到您两条连续的 comments,我简直要笑穿了……

        Google Chrome 14.0.794.0 Google Chrome 14.0.794.0 Windows 7 Windows 7
        Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.794.0 Safari/535.1
        • 说起来…Chrom(e|ium) 是有个 `–user-agent’ 参数的哦~

          Chromium 14.0.795.0 Chromium 14.0.795.0 GNU/Linux x64 GNU/Linux x64
          Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.1 (KHTML, like Gecko) Chromium/14.0.795.0 Chrome/14.0.795.0 Safari/535.1
          • 看来我要变成蓝球球了

            Chromium 14.0.794.0 Chromium 14.0.794.0 Windows 7 Windows 7
            Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.1 (KHTML, like Gecko) Chromium/14.0.794.0 Safari/535.1
  9. 一直想问你,我找遍整个Comment Info Detector,都没看到大图标的选项啊! 还有,你的主机貌似老是载入到一半就停止了,是不是访问量太大的关系?

    Unknown Unknown Unknown Unknown
  10. 测试user agent。严重怀疑我这样干是在利用某种跨站漏洞。

    Unknown Unknown Unknown Unknown
    <a href="https://www.waigaobu.com/">???</a>
    • 很好,没我想象中的跨站漏洞。

      Unknown Unknown Unknown Unknown
      <a href="https://www.waigaobu.com/">???</a>
      • 很明显在 code 外壳下面是无法这样的……

        不过这样是可以的

        还有这样这样

        Chromium 14.0.794.0 Chromium 14.0.794.0 Windows 7 Windows 7
        Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.1 (KHTML, like Gecko) Chromium/14.0.794.0 Chrome/14.0.794.0 Safari/535.1
  11. wzy,今天我打开Google Reader,翻到你的订阅条目时,发现此文的图片显示盗链,其它文章图片正常,报告完毕。

    Google Chrome 14.0.794.0 Google Chrome 14.0.794.0 Windows 7 Windows 7
    Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.794.0 Safari/535.1
    • 哦,灵异现象……

      Chromium 14.0.794.0 Chromium 14.0.794.0 Windows 7 Windows 7
      Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.1 (KHTML, like Gecko) Chromium/14.0.794.0 Chrome/14.0.794.0 Safari/535.1
  12. 突然发现我的Chrome版本号已经追上你的Chromium了。哈哈哈

    Unknown Unknown Unknown Unknown
    • 你是 Unknown

      Chromium 14.0.794.0 Chromium 14.0.794.0 Windows 7 Windows 7
      Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.1 (KHTML, like Gecko) Chromium/14.0.794.0 Chrome/14.0.794.0 Safari/535.1
      • 刚刚我用手机发现版本号问题的,哈哈!
        现在用Chromium
        Dick_Wu June 17, 2011 at 23:13
        我的这一条评论Chrome版本号已经和你的Chromium一样了。

        Google Chrome 14.0.796.0 Google Chrome 14.0.796.0 Windows 7 Windows 7
        Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.796.0 Safari/535.1
        • 哼哼,你是无法让自己的球变蓝色的!哈哈。彩球真丑

          Chromium 14.0.794.0 Chromium 14.0.794.0 Windows 7 Windows 7
          Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.1 (KHTML, like Gecko) Chromium/14.0.794.0 Chrome/14.0.794.0 Safari/535.1
          • 乃这样可要记得改快捷方式…

            Unknown Unknown Unknown Unknown
          • No No No。。我用的Chrome Dev。。。嘿嘿,赶快去升级你的Chromium吧。。不然的话要被我们Dev党反超喽!(貌似已经反超了)

            Google Chrome 14.0.796.0 Google Chrome 14.0.796.0 Windows 7 Windows 7
            Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.796.0 Safari/535.1
            • 放心Chrome Dev不可能比Chromium还新的~

              Chromium 14.0.797.0 Chromium 14.0.797.0 GNU/Linux x64 GNU/Linux x64
              Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.1 (KHTML, like Gecko) Chromium/14.0.797.0 Chrome/14.0.797.0 Safari/535.1
  13. 这是本站所没有留言过的UA

    Internet Explorer 9.0 Internet Explorer 9.0 Windows 7 x64 Edition Windows 7 x64 Edition
    Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
    • 您也爱上玩 UA 了?

      Chromium 14.0.794.0 Chromium 14.0.794.0 Windows 7 Windows 7
      Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.1 (KHTML, like Gecko) Chromium/14.0.794.0 Chrome/14.0.794.0 Safari/535.1
      • 那是因为你这个插件有意思
        对了 我那IE9的about页面显示的版本是9.0.1

        Google Chrome 14.0.794.0 Google Chrome 14.0.794.0 Mac OS X 10.6.7 Mac OS X 10.6.7
        Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_7; en-us) AppleWebKit/533.21.1 (KHTML, like Gecko) Chrome/14.0.794.0 Safari/535.1
  14. 首次留言~
    浩浩表示暑假可以多聊聊……

    Google Chrome 14.0.794.0 Google Chrome 14.0.794.0 Windows 7 Windows 7
    Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.794.0 Safari/535.1
    • 嗯,经常从 @Dick_Wu 那里听说你~

      Chromium 14.0.794.0 Chromium 14.0.794.0 Windows 7 Windows 7
      Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.1 (KHTML, like Gecko) Chromium/14.0.794.0 Chrome/14.0.794.0 Safari/535.1
  15. @Jimmy Xu 我的版本号就是比@wzyboy高嘛,就是因为这个版本乱码我才降成Stable的嘛。。还有我没改任何UA,只是我手机太小众了

    Unknown Unknown Unknown Unknown
    • 嗯陈述个事实而已 :)

      Thunderbird 7.0a1 Thunderbird 7.0a1 GNU/Linux x64 GNU/Linux x64
      Mozilla/5.0 (X11; Linux x86_64; rv:7.0a1) Gecko/20110618 Thunderbird/7.0a1
    • 你、根、本、没、有、U、A!不是它不能识别,而是你没有!没有!没有!

      Chromium 14.0.794.0 Chromium 14.0.794.0 Windows 7 Windows 7
      Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.1 (KHTML, like Gecko) Chromium/14.0.794.0 Chrome/14.0.794.0 Safari/535.1
  16. 哼!那我用金丝雀不就一样高了,哈哈! 话说你UA天天变不累啊,改改都烦,还是我双unknown省事儿

    Unknown Unknown Unknown Unknown
    • 截至目前 Chromium 是比 Chrome Canary 新的哦~

      Google Chrome 14.0.796.0 Google Chrome 14.0.796.0 Windows XP Windows XP
      Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.796.0 Safari/535.1
  17. 就是没有UA,你能咋样!

    Unknown Unknown Unknown Unknown
  18. 我也用Internet Explorer 9.0.1来玩一玩!

    Internet Explorer 9.0 Internet Explorer 9.0 Windows 7 x64 Edition Windows 7 x64 Edition
    Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)
  19. 并且盗用一下你的头像! :smile:

    Internet Explorer 9.0 Internet Explorer 9.0 Windows 7 x64 Edition Windows 7 x64 Edition
    Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)
  20. 再来测试UA,我发现你的主题丧失了搜索回复文本的功能,你的Smile和@Mentions全部挂掉了。

    Google Chrome 12.0.742.100 Google Chrome 12.0.742.100 Windows 7 Windows 7
    Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.100 Safari/534.30
  21. 刚刚木有成功,继续测试

    Google Chrome 12.0.742.100 Google Chrome 12.0.742.100 Windows 7 Windows 7
    Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.100 Safari/534.30
  22. 持续不断的使用ubuntu

    Google Chrome 12.0.742.100 Google Chrome 12.0.742.100 GNU/Linux GNU/Linux
    Mozilla/5.0 (X11; Linux i686) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.100 Safari/534.30
  23. vmware路过。。。换了新电脑,集显,额呵呵呵。。
    如果你要真的这个样子的话
    我的第一个选择是 沙盘。当然有很多限制,常用的话已经够了,比如试用一个软件。
    第二个选择就是 vmware,现在拖了一个 ubuntu 搞 c/++,还拖了一个 xp,据说 MS,有免费的虚拟磁盘供你用(本来是给 VPC 的?)
    vmware 里似乎可以从,比如你现在的系统在 C:,你另外一个在 D:,那么你可以从 D: 直接引导vmware。。当然这个还是和你的有区别。。。。
    你的意思是我是这样理解的,想用虚拟机的时候,立刻复制一份当前系统的完全拷贝,但似乎比较难实现0 0

    Maxthon 3.0 Maxthon 3.0 Windows 7 Windows 7
    Mozilla/5.0 (Windows; U; Windows NT 6.1; ) AppleWebKit/534.12 (KHTML, like Gecko) Maxthon/3.0 Safari/534.12
  24. 再次来看下,研究下虚拟鸡 :razz:

    Firefox 5.0 Firefox 5.0 GNU/Linux GNU/Linux
    Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0

Leave a Reply


[ Ctrl + Enter ]

Note: Commenter is allowed to use '@User+blank' to automatically notify your reply to other commenter. e.g, if ABC is one of commenter of this post, then write '@ABC '(exclude ') will automatically send your comment to ABC. Using '@all ' to notify all previous commenters. Be sure that the value of User should exactly match with commenter's name (case sensitive).

Trackbacks and Pingbacks: