1. 为什么Mac用户也需要虚拟机?
如果你刚入手Mac,或者从Windows/Linux转过来,可能会觉得macOS已经足够强大,自带终端、开发工具链也齐全,为什么还要折腾虚拟机?这个问题我当初也想过,直到我遇到了几个绕不开的场景。第一个是公司内部一个老旧的财务系统,只提供了Windows客户端的安装包,并且依赖一个特定版本的.NET Framework,在macOS上即使用Wine之类的兼容层也跑不起来,各种报错。第二个是测试环境,我们团队开发的应用需要确保在主流Linux发行版上都能正常运行,我总不能为了测个兼容性就去买几台服务器或者反复重启进不同的系统吧?第三个更常见,就是一些专业软件,比如某些工业设计软件、古老的但必须用的银行U盾驱动,它们压根就没有Mac版本。这时候,一个稳定、高效的虚拟机就成了刚需。
在Mac上跑虚拟机,主流的选择有三个:Parallels Desktop、VMware Fusion和开源的VirtualBox。Parallels Desktop以对macOS集成度极高、性能优化好著称,特别是M系列芯片的适配,它往往是第一个跟进的,但它是商业软件,价格不菲。VirtualBox免费开源,功能强大,社区支持好,但在Mac平台,特别是Apple Silicon芯片上,性能损耗和兼容性一直是个问题,用起来总感觉有点“卡顿”,不够跟手。而VMware Fusion,作为虚拟化领域的老牌巨头,它提供了一个非常不错的平衡点:它有面向个人和非商业用途的免费版本(VMware Fusion Player),性能稳定,功能专业,对Windows和Linux的兼容性经过了长期验证。对于开发者、测试人员或者需要多系统环境的用户来说,Fusion Player的免费性质让它成了一个极具吸引力的选择。今天,我就以在Apple Silicon Mac上安装免费的VMware Fusion Player,并配置一个Linux虚拟机为例,带你走一遍完整的流程,过程中我会穿插我踩过的坑和总结的技巧,让你三分钟看完,半小时内就能用上。
2. 前期准备:下载与安装Fusion Player
安装的第一步,不是直接去点下载链接,而是先搞清楚自己的Mac用的是哪种芯片。这决定了你下载的安装包和后续虚拟机的系统镜像类型。打开屏幕左上角的苹果菜单,选择“关于本机”,在“芯片”一项里,你会看到“Apple M1”、“Apple M2 Pro”之类的描述。如果你的芯片是Intel,那么恭喜你,你可以安装x86架构的任何操作系统。如果是Apple Silicon(M1/M2/M3等),情况就稍微复杂一点:你虽然可以通过转译(Rosetta 2)运行x86应用,但在虚拟机里,为了获得最佳性能,我们首选安装ARM架构的操作系统。好在主流Linux发行版和Windows 11都提供了ARM版本。
接下来是下载。直接访问VMware官网的Fusion页面。这里有个小技巧,官网可能会优先展示商业版的Fusion Pro,你需要找到“Download VMware Fusion Player”这个链接。Fusion Player对于个人和非商业用途是免费的,但需要注册一个VMware账号(免费注册)来获取许可证密钥。填写基本信息注册并登录后,你就能看到下载按钮和你的个人免费许可证密钥了,务必复制保存好这个密钥,安装完成后会用到。下载下来的文件通常是一个.dmg格式的磁盘映像文件。
双击打开下载的.dmg文件,你会看到一个熟悉的安装界面,把VMware Fusion的图标拖拽到“Applications”文件夹里即可。这步完成后,先别急着启动。由于VMware Fusion需要安装底层的内核扩展来驱动虚拟化功能,而macOS对系统安全性的要求非常严格,所以我们需要手动授权。打开“系统设置”(System Settings),找到“隐私与安全性”(Privacy & Security),向下滚动,你很可能会看到一个提示,说“来自‘VMware, Inc.’的系统软件已被阻止加载”。点击旁边的“允许”按钮,并输入你的管理员密码。这个步骤至关重要,如果跳过,虚拟机将无法启动。
授权完成后,回到“应用程序”文件夹,启动VMware Fusion。第一次启动,它会提示你输入之前获取的免费许可证密钥。粘贴进去,同意用户协议,安装过程就基本完成了。这里我遇到过一个坑:在macOS Ventura及更新版本上,即使你在“隐私与安全性”里点了允许,有时仍需要完全重启一次Mac,内核扩展才能被正确加载。如果你在后续创建虚拟机时遇到权限错误,不妨先重启一下试试。
3. 创建你的第一个Linux虚拟机
安装好Fusion Player,我们开始创建虚拟机。点击“File” -> “New”,或者直接点击主窗口的“Create a new virtual machine”。Fusion会弹出一个向导。这里我们选择从镜像文件安装,所以点击“Create a custom virtual machine”。
接下来是选择操作系统类型。这是关键一步。假设我们想在Apple Silicon Mac上安装一个轻量、高效的Linux系统用于开发,我推荐Ubuntu Server的ARM版本。它兼容性好,社区支持强大。在客户机操作系统(Guest OS)选择界面,先选择“Linux”,然后在版本下拉菜单里,如果你下载的是ARM版的Ubuntu,就选择“Ubuntu ARM”。如果版本列表里没有明确标出ARM,选择最新的64位Ubuntu版本通常也可以,Fusion会自动检测镜像架构。但为了保险起见,明确选择ARM版本是最好的。
然后,你需要指定安装镜像的路径。点击“Use another disc or disc image…”,找到你提前下载好的Ubuntu ARM版ISO文件(比如ubuntu-22.04.3-live-server-arm64.iso)。选中它,点击“Continue”。
现在来到虚拟硬件配置页面。这是决定虚拟机性能和使用体验的核心步骤。
- 处理器与内存:对于Ubuntu Server这样的系统,默认的配置(如2核CPU、4GB内存)足以运行。但如果你打算在虚拟机里跑数据库、Docker或者IDE,我建议适当调高。在我的M2 MacBook Air上,我给开发用的Ubuntu虚拟机分配了4个CPU核心和8GB内存,这样在运行VS Code、多个Docker容器和本地服务时依然非常流畅。分配原则是:确保宿主机(你的Mac)本身有足够资源剩余,不要“榨干”它。比如你Mac是16GB内存,分给虚拟机8GB是合理的;如果是8GB内存,分4GB更稳妥。
- 硬盘:默认的40GB动态分配(Thin Provision)对于服务器系统起步是够用的。动态分配意味着虚拟机文件不会立刻占用40GB物理空间,而是随着你往虚拟机里存文件而逐渐增大。我通常会把这里改成80GB,给未来留足余地,反正实际占用不会一下子涨上去。这里有一个非常重要的经验:不要选择“立即分配所有磁盘空间”(Pre-allocate disk space),除非你非常确定需要极致的磁盘性能且硬盘空间绝对充裕,否则它会立刻在你的Mac上创建一个80GB的大文件,非常不灵活。
- 网络适配器:默认的“共享网络(NAT)”模式对绝大多数情况都是最佳选择。在这种模式下,虚拟机会共享你Mac的IP地址上网,就像你家路由器后面的设备一样,可以访问外网,外部网络则无法直接访问虚拟机,安全性好,配置简单。
配置完成后,点击“Finish”,Fusion会为你创建虚拟机文件(通常位于~/Documents/Virtual Machines.localized/目录下),并自动启动,开始从ISO镜像安装系统。
4. 操作系统安装与初始配置详解
虚拟机启动后,会进入Ubuntu Server的安装界面。这个过程和物理机安装几乎一样,但有几点在虚拟化环境下需要特别注意。
首先是键盘布局和语言选择,根据自己习惯来即可。接着是网络配置,由于我们使用了NAT模式,安装程序通常能通过DHCP自动获取到IP地址,直接继续就行。磁盘分区这里,对于新手,直接选择“Use an entire disk”并选择虚拟磁盘(通常是/dev/nvme0n1或/dev/sda)是最简单的。安装程序会为你自动创建合理的分区布局。
接下来是设置用户名、主机名和密码。主机名可以取个有意义的,比如dev-vm。用户名和密码务必记住,这是你登录系统的凭证。在SSH安装的选项上,我强烈建议勾选“Install OpenSSH server”。这样系统装好后就自带SSH服务,以后你就可以直接从Mac的终端用ssh username@虚拟机IP命令连接进去操作,比在Fusion的虚拟机窗口里操作要方便得多,特别是复制粘贴命令和文件传输。
然后安装程序会开始下载系统组件并安装。这个过程取决于你的网络速度。安装完成后,它会提示你重启。点击“Reboot Now”。重启后,你可能会看到一个提示,要求你移除安装介质(即ISO镜像)。在Fusion里,你需要在虚拟机菜单栏选择“Virtual Machine” -> “Removable Devices” -> “CD/DVD (IDE)” -> “Disconnect”,断开ISO镜像的连接,然后虚拟机就会从硬盘正常启动,进入登录界面。
第一次登录后,我建议先做几件事:
- 更新系统:在终端里运行
sudo apt update && sudo apt upgrade -y,获取最新的安全补丁和软件包。 - 获取IP地址:运行
ip a命令,查看ens160或类似名称的网络接口,找到inet后面的IP地址(例如192.168.xxx.xxx)。这就是虚拟机在NAT网络内的地址。 - 从宿主机SSH连接测试:在Mac的终端里,输入
ssh 你的用户名@刚才查到的IP地址,输入密码,如果能成功登录,说明网络和SSH配置都正常。以后你就可以主要用这个方式操作虚拟机了。
5. VMware Tools安装与核心功能集成
安装完操作系统,虚拟机已经可以工作了,但体验还不够“无缝”。比如,虚拟机窗口不能自适应缩放,复制粘贴文本和文件在宿主机和虚拟机之间不互通,共享文件夹也无法设置。这就需要安装VMware Tools(对于Linux系统,通常指open-vm-tools)。
对于Ubuntu这样的现代Linux发行版,安装变得非常简单。因为open-vm-tools通常已经包含在官方软件源里。你只需要在虚拟机的终端里执行一条命令:
sudo apt install open-vm-tools open-vm-tools-desktop -y如果你安装的是Ubuntu Server(没有图形界面),那么只安装open-vm-tools包即可。安装完成后,需要重启虚拟机才能生效。
重启后,你会发现几个立竿见影的改进:
- 自适应分辨率:现在你可以随意拖动Fusion的虚拟机窗口边缘,虚拟机的桌面分辨率(如果是桌面版)或终端显示区域会自动适应窗口大小。
- 剪贴板共享:这是极大提升效率的功能。你可以在Mac上复制一段文本或一个文件路径,然后直接在虚拟机的终端里粘贴,反之亦然。无需再通过笨拙的邮件或聊天工具中转。
- 拖放文件:你可以直接将Mac上的文件或文件夹拖拽到Fusion的虚拟机窗口里,文件会自动传输到虚拟机的桌面或家目录。同样,也可以从虚拟机里拖文件出来。
- 共享文件夹(需手动配置):这是更强大的文件交互方式。它允许你将Mac上的某个目录“映射”为虚拟机里的一个网络文件夹。配置方法是在Fusion的虚拟机设置里(Virtual Machine -> Settings -> Sharing),添加一个共享文件夹,指定Mac上的路径和它在虚拟机内的挂载点(比如
/mnt/hgfs)。然后在虚拟机内,你需要手动挂载它(对于open-vm-tools,共享文件夹通常位于/mnt/hgfs/下)。这个功能非常适合用于共享项目代码目录。
6. 网络模式深度解析与高级配置
之前我们用了默认的NAT模式,它很方便,但虚拟化网络不止这一种。理解不同的网络模式,能帮你应对更复杂的场景。
- NAT模式(默认):虚拟机通过宿主机的IP地址“伪装”上网。虚拟机可以主动访问外网和宿主机,但外网和宿主机不能直接访问虚拟机的服务(如Web服务器)。除非你在Fusion的NAT设置里配置端口转发。这适用于大多数只需要上网、不需要对外提供服务的个人开发环境。
- 桥接模式(Bridged Networking):虚拟机会在物理网络上“虚拟”出一台独立的设备,它会从你的家庭或公司路由器获取一个和你的Mac同网段的IP地址。在网络上,它看起来就是一台独立的电脑。优点:虚拟机可以直接被同一局域网内的其他设备访问,无需任何转发。缺点:在某些公共或受控网络(如公司严格管理的Wi-Fi)中,可能无法获取到IP地址。如果你的虚拟机需要运行一个团队都能访问的测试服务器,桥接模式是首选。
- 仅主机模式(Host-Only):虚拟机和宿主机之间会形成一个封闭的私有网络。虚拟机可以与宿主机互相通信,但完全不能访问外网。这种模式用于构建一个纯粹隔离的测试环境,比如做网络安全实验、测试网络服务而不想影响真实网络。
如何在Fusion里切换?关闭虚拟机,进入虚拟机设置(Settings),选择“Network Adapter”,在右侧就可以切换网络连接模式。从NAT切换到桥接模式后,启动虚拟机,用ip a命令查看,你会发现它获取了一个和你的Mac同网段(比如都是192.168.1.xxx)的IP地址。
一个常见问题排查:如果你在NAT模式下,在虚拟机里运行了一个Web服务(比如在8080端口),想在Mac的浏览器里用localhost:8080访问却打不开,这是因为端口没有暴露出来。你需要配置端口转发。关闭虚拟机,在虚拟机设置的“Network Adapter”里,点击右下角的“Advanced Options…”,然后配置端口转发规则,将宿主机的某个端口(如8888)转发到虚拟机的8080端口。这样,你在Mac浏览器访问localhost:8888,流量就会被转发到虚拟机的8080端口。
7. 磁盘管理与快照:数据安全的保险绳
虚拟机的一大优势就是磁盘管理灵活,而“快照”功能更是后悔药。我们先说磁盘。在虚拟机设置里,你可以看到硬盘设备。你可以在这里增加硬盘容量(前提是虚拟磁盘类型支持扩容),或者添加额外的虚拟硬盘。比如,你可以添加一块新的100GB虚拟硬盘,专门用来存放数据库文件,这样管理和备份都更清晰。
快照(Snapshot)是我最依赖的功能之一。它相当于给虚拟机的当前状态(包括内存、磁盘数据、设置)拍一张完整的照片。你可以在进行任何有风险的操作前(比如升级核心系统组件、安装一个不稳定的测试版软件、修改关键配置)创建一个快照。如果操作后系统崩溃或出现无法解决的问题,你可以瞬间回滚到这个快照点,一切恢复如初,就像什么都没发生过。
在Fusion里创建快照非常简单。在虚拟机运行或关闭时,点击菜单栏“Virtual Machine” -> “Snapshots” -> “Take Snapshot…”,给它起个有意义的名称,比如“Before upgrading kernel”,还可以加一段描述。点击“Take”就完成了。回滚时,同样在Snapshots菜单里,选择你想要恢复的快照,点击“Revert to Snapshot”即可。重要提示:回滚操作会丢弃自创建该快照以来所有的磁盘更改,请确保重要数据已备份。
快照会占用磁盘空间,因为它需要存储差异数据。不建议长期保留大量快照。一个好的习惯是:在进行一系列关联操作前拍一个“基线”快照,中间可以拍临时快照,操作全部验证无误后,可以删除中间的临时快照,只保留那个稳定的基线。
8. 性能调优与资源分配实战
虚拟机用起来卡顿?可能是资源分配不合理。除了之前提到的CPU和内存,以下几个设置对性能影响也很大。
- 图形内存:如果你安装的是带图形界面的Linux(如Ubuntu Desktop),可以适当增加“Graphics memory”的分配,比如从默认的256MB增加到1GB或2GB,这会让桌面动画更流畅。对于纯服务器系统,这个设置影响不大。
- 硬盘模式:在创建虚拟机时选择的磁盘类型很重要。“Thin Provision”节省空间,“Pre-allocated”性能稍好但占用固定空间。对于开发环境,Thin Provision是平衡之选。此外,确保虚拟磁盘存储在Mac的高速SSD上,而不是外接的移动硬盘,否则IO性能会成为巨大瓶颈。
- 3D图形加速:对于需要运行3D应用或进行图形化测试的桌面虚拟机,可以尝试在设置中开启“Accelerate 3D graphics”。但这会占用更多宿主资源,且并非所有Linux发行版都支持良好,需要安装对应的VMware驱动。
- 后台资源占用:当虚拟机窗口不在前台时,Fusion会适当降低其CPU优先级。你可以在设置 -> “Processors & Memory” -> “Advanced options”里调整“Background priority”,如果你希望虚拟机在后台也能全力编译代码,可以把它调高。
一个真实的调优案例:我在M1 Mac上运行一个用于集成测试的Ubuntu Server虚拟机,最初分配了2核4G内存,在运行Docker Compose启动多个服务时,系统响应很慢,htop显示内存几乎用满,频繁使用Swap。我将配置调整为4核8G内存后,同时将Docker的数据目录(/var/lib/docker)通过共享文件夹指向Mac SSD上的一个目录(利用宿主机更快的IO),性能得到了质的提升,编译和测试时间缩短了近一半。
9. 常见问题排查与解决手册
即使按照步骤来,也可能会遇到问题。这里我总结几个我遇到过的高频问题及其解决方案。
问题一:启动虚拟机时提示“无法连接到虚拟机”或“VMware Workstation 无法连接到虚拟机。请确保您有权运行该程序、访问该程序使用…”
- 原因与解决:这个错误在Fusion上也可能出现类似提示,核心是权限或服务问题。首先,确保你已按照第二步所述,在“系统设置->隐私与安全性”中允许了VMware内核扩展,并重启过Mac。其次,检查是否有其他安全软件(如某些第三方防火墙或清理工具)阻止了VMware相关进程。可以尝试完全退出Fusion,然后右键点击“应用程序”中的VMware Fusion,选择“显示包内容”,进入
Contents/Library,以管理员身份运行sudo ./install.sh来重新安装服务组件。
问题二:虚拟机内网络无法连接(无法ping通外网)
- 排查步骤:
- 在虚拟机内运行
ip a,检查网卡是否获取到了IP地址(NAT模式下通常是192.168.xxx.xxx)。 - 如果没有IP,尝试重启虚拟机内的网络服务:
sudo systemctl restart systemd-networkd(或netplan apply)。 - 检查Fusion的虚拟网络编辑器(从Fusion菜单栏进入
Virtual Machine->Settings->Network Adapter,确保连接状态是“Connected”和“Connect at power on”已勾选。 - 在Mac上,打开“活动监视器”,搜索“vmnet”,确保
vmnet-dhcp和vmnet-natd等进程在运行。如果没有,可能需要重新安装Fusion。
- 在虚拟机内运行
问题三:从宿主机无法SSH连接到虚拟机
- 排查步骤:
- 确认虚拟机内已安装并启动了SSH服务:
sudo systemctl status ssh。 - 确认虚拟机防火墙是否放行了22端口。对于Ubuntu,默认的
ufw防火墙可能是关闭的。如果开启了,需要运行sudo ufw allow 22。 - 确认你使用的是正确的IP地址和用户名。在NAT模式下,虚拟机IP是宿主机虚拟网卡分配的,不是宿主机本身的IP。
- 在Mac终端用
ssh -v username@ip连接,查看详细的调试信息,通常会明确指出是连接超时、拒绝还是认证失败。
- 确认虚拟机内已安装并启动了SSH服务:
问题四:虚拟机运行异常缓慢
- 排查方向:
- 资源不足:检查宿主机(Mac)本身的资源使用情况(通过“活动监视器”),是不是Mac本身内存或CPU就满了?适当降低虚拟机的分配资源。
- 磁盘IO瓶颈:确认虚拟机磁盘文件是否存放在Mac的内置SSD上。如果在外接USB硬盘上,速度会慢很多。
- 快照过多:如果创建了多个快照且时间跨度很长,虚拟机在读写时需要合并多个差异磁盘文件,会导致性能下降。考虑删除不必要的旧快照。
- 病毒扫描干扰:有些Mac上的安全软件会实时扫描所有文件,包括庞大的虚拟机磁盘文件(
.vmdk),这会导致严重卡顿。将虚拟机存放的目录(如~/Documents/Virtual Machines.localized/)添加到安全软件的排除列表里。
10. 从入门到进阶:我的日常使用心得
经过长时间的使用,VMware Fusion已经成了我开发工作流中不可或缺的一部分。我主要用它做三件事:一是运行一个干净的Linux环境,用于测试服务的跨平台部署;二是临时启动一个Windows虚拟机,处理那些必须用Windows才能处理的文档或软件;三是作为安全沙盒,测试一些来源不明的脚本或软件,用完直接回滚快照,不留任何痕迹。
对于Apple Silicon用户,我的建议是优先寻找和使用ARM架构的系统镜像。虽然通过转译可以运行x86系统,但性能损耗是实实在在的,而且可能遇到一些兼容性怪癖。目前,Ubuntu、Debian、Fedora、Windows 11等主流系统都有官方ARM版本,生态已经相当完善。
最后分享一个提升效率的小技巧:利用Fusion的“Unity模式”(在Fusion 13及以后版本中称为“窗口融合”)。你可以在运行Windows或Linux桌面虚拟机时,启用这个模式。启用后,虚拟机里的应用程序窗口会像Mac原生应用一样,单独显示在Mac的Dock和任务切换器中,你可以把Windows的Notepad或Linux的gedit窗口直接拖到Mac桌面上使用,实现了真正的“无缝融合”,极大地减少了在不同系统间切换的割裂感。要启用它,只需在虚拟机运行后,点击菜单栏的“View” -> “Enter Unity”。你会发现,虚拟化技术带来的,远不止是多一个系统,而是一种灵活、高效、安全的工作方式延伸。