说到虚拟机,我最开始使用的是 VMware Workstation(当然都是破解版),一用就是好多年;直到去年合作项目的需要,转而使用 VirtualBox,从此基本放弃了 VMware Workstation

虚拟机

虚拟机介绍

Wikipedia上虚拟机的定义是:“有效的、独立的真实机器的副本。”,结合到实际中就是用各种虚拟机软件创建不同的“虚拟机”;从使用层面来说,这些“虚拟机”和物理机没有什么区别,甚至比物理机更加灵活方便,可以随时修改硬件配置、网络参数等等。
下面几个文章是对虚拟机及其技术的简单介绍:

  • 虚拟机-wikipedia
  • 虚拟 Linux-虚拟化方法、架构和实现概述
  • 虚拟机是怎么实现的?

虚拟机软件

我知道的虚拟机软件有下面三个(文章最后有它们的界面截图):

  • VMware,支持WinMacLinux收费
    • Fusion for Mac,Fusion VS Fusion Pro
    • Workstation for Windows,Workstation Player VS Workstation Pro
    • Workstation for Linux,Workstation Player VS Workstation Pro
  • VirtualBox,支持WinMacLinux免费
    • VirtualBox Downloads
  • Parallels Desktop,只支持Mac版本,收费

它们各有特点,关于它们的对比和区别,可参考下面的文章:

  • 哪款虚拟机最好 ParallelsDesktop 10和VMware Fusion 7和VirtualBox 4对比分析,基于Mac系统对比
  • 【整理】虚拟机的选择,VMWare还是VirtualBox – 绝对推荐VirtualBox

我的使用体验

由于我只使用过其中的VMware和VirtualBox,所以只能说一下这两个软件的使用体验:

  • VMware Workstation
    • 功能强大、软件复杂
    • 收费(找破解版麻烦),虽然Play版本免费,但是功能缩水,而且所谓的“不能用于商业用途”
    • 非常耗资源
  • VirtualBox
    • 简单易用
    • 完全免费
    • 节省资源,一台普通电脑开好几个Ubuntu虚拟机无压力

从长期的个人使用来看,对于一般的功能需求,两个都能满足,在没有特殊需求的情况下建议使用VirtualBox,免费又好用。

学习资料

基本都是谷歌解决问题,查资料的过程中发现下面两个资料,看评价还不错,貌似值得一看:

  • 精通VMware10虚拟机视频课程
  • VMware Workstation 10—虚拟化入门神器完全讲解视频课程

VirtualBox

基本功能

  • 导入、导出:方便虚拟机文件备份、分享
  • 注册:注册一个新的虚拟机目录,支持多个虚拟机在不同的路径,比如A虚拟机在D盘,B虚拟机在F盘,磁盘空间受限时非常有用处;
  • 修改虚拟机配置
    • 内存
    • CPU
    • 网络:NAT、桥接等
    • 修改存储:一个虚拟机可以切换不同的存储文件(.vmdk、.vdi),个人理解类似于一个物理机,可以插不同的启动盘启动

一些参考文档

  • What disk image should I use with VirtualBox, VDI, VMDK, VHD or HDD?
  • Converting vmdk files to vdi using VBoxManage
  • How to resize a VirtualBox vmdk file
  • mkfs - The device apparently does not exist; did you specify it correctly?

虚拟机磁盘扩容

虚拟机使用久了,或者开始创建的时候空间设置小了,在后期都可能遇到磁盘空间不足的问题,一般有下面三种方式处理该问题:

  1. 重新创建一个大容量的虚拟机,环境都得从头搭起
  2. 添加新的分区:根目录依旧还是那么大,基于根目录的操作依旧面临空间不足的限制
    • VirtualBox如何扩展虚拟机Ubuntu的硬盘容量?,添加新分区
    • 我的实践总结: github gist
  3. 直接增加根目录分区的大小:完美扩容
    • VMware下扩展ubuntu虚拟机根目录分区,扩展根目录分区 ☆☆☆☆
    • HOW TO EXPAND THE ROOT FILESYSTEM OF A 12.04 UBUNTU RUNNING INSIDE VMWARE PLAYER 对应的英文原文

在下面的环境亲测上述2方案、3方案均ok:

  • Windows 10
  • VirtualBox 5.1.6 r110634 (Qt5.5.1)
  • Ubuntu 16.04 LTS

创建Ubuntu虚拟机

这里我想写一下我基于VirtualBox创建和使用Ubuntu的方法,充分发挥虚拟机的优势,重复利用已有的虚拟机;

创建全新的虚拟机

具体可参考网上的教程创建,非常简单,没遇到过什么问题;
建议:磁盘空间尽量设置大一点,避免后期扩容的痛苦;
该版本简称V1

将虚拟机导出备份

  • “管理”->“导出虚拟电脑”
  • 选择要导出的虚拟机
  • 选择导出目录
  • 其他默认即可
  • 即可导出.ova格式的虚拟机文件,用导入功能即可导入该虚拟机文件;

在V1的基础上安装软件,生成新的虚拟机版本

  • v2
    • vim
    • ssh
    • zsh
    • wget
    • curl
    • git
    • autojump
    • Nodejs
    • TDLR
  • v3
    • dos2unix
    • pyenv
    • pyenv-virtualenv

对于上述每一个版本的虚拟机都可以导出备份,后期可以从任何一个版本开始搭建新的开发环境,省去了搭建基础环境的过程,而且可以快速的分享给Team里面其他人,避免多次搭建环境的麻烦;
也可以用Docker完成类似的工作,但是个人感觉开发更使用虚拟机。

创建OS X(现在的macOS)虚拟机

注:以下实验都是在Windows上完成的;

我的物理机参数

以下是鲁大师检测的参数,外加一个1T的普通硬盘:

  • 电脑型号 技嘉 B85-HD3 台式电脑
  • 操作系统 Windows 10 Enterprise 64位 ( DirectX 12 )
  • 处理器 英特尔 第四代酷睿 i5-4590 @ 3.30GHz 四核
  • 主板 技嘉 B85-HD3 ( 英特尔 Haswell - Lynx Point )
  • 内存 16 GB ( 金士顿 DDR3 1600MHz )
  • 主硬盘 三星 SSD 850 EVO 250GB ( 250 GB / 固态硬盘 )
  • 显卡 Nvidia GeForce GTX 750 ( 2 GB / Nvidia )
  • 显示器 戴尔 DEL4091 DELL E2414H ( 24 英寸 )
  • 声卡 瑞昱 ALC892 @ 英特尔 Lynx Point 高保真音频
  • 网卡 瑞昱 RTL8168/8111/8112 Gigabit Ethernet Controller / 技嘉

我的建议

在上述硬件环境下,使用VMware Workstation和VirtualBox我均搭建过OS X虚拟机,实际的体检都很差,特别卡,所以我建议:

  • 直接购买Mac系列产品;
  • 直接裸机装苹果系统,俗称黑苹果

使用VMware Workstation

  • OS X 10.11.4 15E65 原版安装U盘镜像(百度云分享)
    • OS X Yosemite,密码:eqjm,内含unlocker203.zipdarwin6.0.3.zip
    • OS X El Capitan,密码:tjpi
  • VMware 11安装Mac OS X 10.10

遇到的问题:

  • 不能验证这个“安装 OS X El Capitan”应用程序副本。它在下载过程中可能已遭破坏或篡改。
    • 解决办法是修改系统时间到15年:sudo date 122501112015.20
    • 问:不能验证这个“安装 OS X El Capitan”应用程序副本。它在下载过程中可能已遭破坏
    • 求助大神 不能验证 安装OS X Ei Capitan

使用VirtualBox

  • [APP开发] 在 Win 7或8 下使用 VirtualBOX 虚拟机安装 OS X 10.11 El Capitan 及 Xcode 7.0
  • VirtualBox安装OS X El Capitan笔记

安装方式更简单,源文件获取方式同“使用VMware Workstation”。

遇到的问题:
(1) 虚拟机分辨率太小,不足以全屏

- [How To Change Display Resolution On OS X (VirtualBox)](https://www.youtube.com/watch?v=0ws3gHc0k70) 

具体的操作过程如下:

1
2
3
4
5
6
7
8
9
10
# 进入VirtualBox的安装目录,我的是(C:\Program Files\Oracle\VirtualBox)
> cd "C:\Program Files\Oracle\VirtualBox"
# 以管理员权限运行CMD,然后运行下面的命令
# 参数说明
# OSXElCapitan:虚拟机名称
# N:Where N can be one of 0,1,2,3,4,5 referring to the 640*480, 800*600, 1024*768, 1280*1024, 1440*900, 1900*1200
> VBoxManage setextradata "OSXElCapitan" VBoxInternal2/EfiGopMode 5
# 完成设置时重启VirtualBox

几款虚拟机软件截图对比

VMware Workstation

VMware Workstation Play

VMware Workstation Pro

VirtualBox

OS X

Ubuntu V3

Parallels Desktop