开发、调试环境搭建实践及把物理机做成虚拟机

0x00 起源

开发过程中难免会再开发新功能的同时又需要解决旧版本的bug,通常的做法就是把正在开发的版本卸载,然后安装旧版本,拉取旧版本代码来进行调试,调试完成之后再恢复回新功能开发的环境。切换的过程浪费了大量的时间。
为了解决这个问题就想到了用虚拟机的快照功能。没每一个需要调试的版本做一个快照,这样就可以在不影响当前开发环境的情况下自由进行切换。
这涉及到的一个问题就是开发环境的搭建,当然可以新建一个虚拟机,然后在上面安装操作系统,安装开发工具,搭建开发环境。但是本文探讨的是另一种可能。直接把物理机做成虚拟机。
这样做的好处是显而易见的,避免了安装操作系统,安装开发环境等操作。

0x01 硬盘文件

第一步就是把硬盘做成虚拟硬盘文件。使用的工具是disk2vhd。这个工具由微软出品,可以在正在运行的系统中创建虚拟硬盘文件。参考#1.
开发、调试环境搭建实践及把物理机做成虚拟机_第1张图片
需要说明的几点:

  • 关于Prepare for use in Virtual PC选项,如果希望在微软的virtual PC或Hyper-V 中使用,需要选中这一项,这是V2.02版本新加的选项,在此之前,由于主机使用了UEFI/GPT启动方式,如果有要在虚拟机中使用,需要很复杂的操作,可参考#2.现在有了这个选项,直接选中就可以使用了。但是如果要在virtual box中使用,则可选可不选。
  • 关于Use Vhdx,如果要在virtual PC或Hyper-V 中使用,需要选中这一项,生成的文件为vhdx格式,如果要在virtualbox中使用,则不能选中。
  • 关于Use Volume Shadow Copy,这一项的含义是是否使用硬盘快照来制作硬盘文件,如果选中了,则会在制作硬盘文件前先给硬盘生成一个快照,然后把快照做成硬盘文件。如果不选中,则直接制作。区别在于制作期间如果进行了什么操作,则操作的结果是否存入硬盘文件。

0x02 VirtualBox

如果希望使用virutalbox来运行虚拟机,则在Disk2Vhd中不能选中Prepare for use in Virtual PC 和use Vhdx.

0x0201新建虚拟机

开发、调试环境搭建实践及把物理机做成虚拟机_第2张图片

0x0202使用已有虚拟硬盘文件

这一步选择使用已有的虚拟硬盘文件,点击右侧的按钮,弹出虚拟硬盘选择,第一次的时候虚拟硬盘是不在列表中的,需要点击注册,选择vhd文件,再点击选择。
开发、调试环境搭建实践及把物理机做成虚拟机_第3张图片

0x0203修改设置使用EFI

开发、调试环境搭建实践及把物理机做成虚拟机_第4张图片
生成新的虚拟机之后需要修改EFI设置,以便成功启动,否则的话会报无法找到启动媒体的错误。

0x0204加载win10安装盘镜像

这一步是为了处理无法启动时,可以选中从光盘启动,然后修复一下操作系统。这一步非必须
在存储处,选择光驱,加载一个win10的安装盘。

0x0205 启动

启动后,会经过漫长的等待,还可能会碰到蓝屏,会提示重试,修复等选项。运气好的就可以进系统了。
虽然这里列出了使用virualbox的方法,但是强烈不推荐。从我的实践来看,大部分的情况会遇到进入系统之后崩溃的问题。只有很小的概率可以成功。

0x03 Hyper-V

Hyper-V是win10内置的虚拟机系统,但是默认是不启用的,需要启用后使用。

0x0301 启用Hyper-V

开发、调试环境搭建实践及把物理机做成虚拟机_第5张图片
点击OK按钮后需要重启后生效。

0x0302 新建VM

开发、调试环境搭建实践及把物理机做成虚拟机_第6张图片

0x0303 选择Generation

如果是UEFI启动方式,选择Generaion 2,如果是老的MBR,选择Generation1 ,参考#2开发、调试环境搭建实践及把物理机做成虚拟机_第7张图片

0x0304 选择硬盘文件

开发、调试环境搭建实践及把物理机做成虚拟机_第8张图片

0x0305 启动

创建成功后直接connect就可以使用了。

0x04 缺点

应用虚拟机的缺点也是很明显的,就是不如直接再主机上运行快,毕竟无法使用全部资源(CPU,内存)。
把物理机做成虚拟机的缺点就是物理机做成的硬盘文件会有更多不需要的内容,会占用更大的空间,不如新建虚拟机那么纯净。

0x05 总结

本文探讨了一种开发调试环境切换的方法,并且详细介绍了把物理机做成虚拟机的方法,过程中遇到了许多系统启动方面的概念,比如UEFI等,也碰到了较多的问题,通过本次实践,可以加深对虚拟机的理解。

0x06 Troubleshooting

可能会遇到启动的时候出现一个VMware image customization is in progress 的提示,而且可能每次启动都会出,可以通过修改注册表的方式解决。
运行regedit,打开注册表编辑器
找到HKLM\System\CurrentControlSet\Control\Session Manager
开发、调试环境搭建实践及把物理机做成虚拟机_第9张图片
开发、调试环境搭建实践及把物理机做成虚拟机_第10张图片
编辑BootExecution,删除sysprepDecrypter.exe
开发、调试环境搭建实践及把物理机做成虚拟机_第11张图片

0x07 参考资料

  1. https://docs.microsoft.com/en-us/sysinternals/downloads/disk2vhd
  2. https://www.tenforums.com/tutorials/2206-hyper-v-create-use-vhd-windows-10-disk2vhd.html

你可能感兴趣的:(virtualbox,disk2vhd,VM)