
1. 折腾前夜为什么你需要一台虚拟机以及VMware怎么选先把话说在前头如果你至今还在用装双系统或者再买一台电脑的方式来跑Linux环境、隔离测试乱七八糟的软件那我强烈建议你把这个习惯改掉。虚拟机这东西不是IT运维才需要的高级玩意儿它本质上就是给你的Windows系统请了一个租客隔离墙——你在这堵墙里面随便折腾系统、装软件、测病毒、搞坏配置墙外面的宿主机一点事儿都没有。对开发人员、运维人员、甚至只是喜欢捣鼓电脑的普通玩家来说这几乎是刚需技能。我最早接触VMware Workstation大概是十年前的事了那时候还在用Windows 7装个虚拟机纯粹为了跑一个只能在老系统里运行的财务软件。后来转做开发开始在虚拟机里跑Linux服务器、搭数据库集群、测试分布式组件这才意识到自己当年对虚拟机的理解有多浅它不止是装个系统玩一玩更是一个完整的网络环境模拟器。你在虚拟机里搭出来的架构和你在真实机房里的架构在网络逻辑上基本是一模一样的。所以这篇教程虽然名字叫保姆级图文教程我实际想分享的东西比怎么点下一步要多得多——特别是网络配置这一块我会把它从能用讲到懂为什么能通。先说版本选择。虚拟机软件目前市面上主流的就是VMware Workstation Pro和Oracle的VirtualBox。如果你看到网上有大量VMware 17密钥、VMware Workstation Pro 17免费之类的话题别惊讶因为VMware Workstation Pro从2024年5月开始已经对个人用户免费了——对你没看错个人非商业用途直接免费使用不需要再去搜什么激活码。我自己目前主力用的是VMware Workstation Pro 17因为对Windows 11的兼容性、对新版Linux内核的支持都比16好尤其是如果你是配合WSL2、Docker Desktop之类的东西一起用17在资源调度上更稳。下载的话认准官网渠道不要随便在第三方下载站拿安装包原因我不多解释你只要知道这类工具软件是全家桶捆绑和恶意修改版的重灾区就可以了。安装过程基本就是一路Next但有两点需要注意第一安装路径尽量不要带中文和空格虽然现在VMware对中文路径支持好了很多但后续如果你接的虚拟磁盘文件路径里有中文某些Linux发行版的镜像挂载还是可能闹情绪第二安装完以后在编辑→首选项→更新里建议把启动时检查更新关掉VMware的更新检查不仅烦而且有时候新版本反而引入奇怪的兼容性问题稳定干活才是王道。开始装之前再确认一下你电脑的硬件底子。虚拟机最吃的是内存和硬盘不是CPU。如果你的宿主机内存小于8GB我劝你先加内存再玩虚拟机否则开了虚拟机之后宿主机自己先卡成幻灯片。硬盘建议至少留出60GB以上可用空间给虚拟机文件虽然你可以选择立即分配所有磁盘空间还是动态增长但不管哪种最终占用的空间都不会小于你给虚拟机分配的磁盘大小太多。下面是官方建议配置我直接列个表配置项建议最低要求个人推荐舒适配置CPU支持VT-x/AMD-V且已在BIOS中开启Intel i5/Ryzen 5以上6核心以上内存8GB但会比较紧16GB或32GB硬盘40GB可用空间SSD 512GB以上剩余空间至少80GB操作系统Windows 10/11 x64Windows 11 Pro/家庭版均可另外CPU虚拟化VT-x/AMD-V如果没在BIOS里开启装VMware的过程不报错但创建虚拟机以后开机会提示二进制转换与此平台上的长模式不兼容这个坑我在第4部分会详细讲。先记住安装VMware之前去任务管理器→性能→CPU里看一眼虚拟化那一栏是不是已启用这一步能省掉后面一堆麻烦。2. 下载安装VMware Workstation Pro 17避开安装包的坑VMware Workstation Pro的官方下载页面其实有过几次改版很多人找不到下载入口这里直接给你说清楚路径。浏览器搜索VMware Workstation Pro download认准Broadcom官网VMware被Broadcom收购之后下载流程变了一点点或者直接访问VMware的官方下载站点。在页面里选择Workstation Pro版本注意区分17和16如果是个人学习用途直接下载17的Windows版本就行。下载的时候又会遇到一个变化现在VMware官网要求注册一个Broadcom账号才能下载注册是免费的就是步骤多一点。如果你不想注册也可以用Internet Archive或者国内一些大型软件分发平台例如一些高校镜像站下载官方原版安装包但我还是建议你走一遍注册流程拿官网包毕竟这是唯一能保证包体干净、签名完整的路径。网上流传的各种VMware 17永久激活密钥在免费政策出来之后基本没意义了你用官网个人版装完就是激活状态不需要密钥。如果你实在遇到要求输入许可证密钥的界面那说明你下载的是商业试用版这类版本在安装时可以选个人使用来绕开密钥输入。安装包大概600MB左右下载完成后右键以管理员身份运行这个习惯很重要虚拟机和网络相关的软件普遍需要管理员权限写驱动的。整个安装向导是全中文的一路下一步但有几个节点我要单独拎出来说说第一个是增强型虚拟键盘驱动程序这个组件建议默认勾选。这个驱动能让虚拟机内部的特殊按键组合比如CtrlAltDelete直接传递给虚拟机系统避免一些输入焦点的问题尤其是你装了Linux发行版以后没有这个驱动的话在虚拟机里按快捷键可能会失灵。第二个是安装过程中的软件更新和客户体验提升计划勾选项两个都可以去掉。软件更新前面说了没必要客户体验提升计划就是给VMware发匿名数据对个人用户没有价值。第三个是安装路径选择。我个人习惯把VMware装到D:\VMware\这种非系统盘路径虽然它不像虚拟磁盘文件那样占大量空间但主程序装在非系统盘重装系统时虚拟机文件、配置文件、OVA模板等都能干净地分开管理出问题也好排查。注意路径不要用中文原因前面说过了。安装完成后第一次启动会提示是否允许此应用对您的设备进行更改点是。之后进入主界面左侧是虚拟机库右侧是大图标快捷操作整个界面不复杂、不需要过多适应。此时建议先别急着创建虚拟机先做一步打开编辑→首选项→内存把预留所有虚拟机内存这个选项取消勾选。默认情况下VMware是按需动态分配内存给虚拟机的如果勾选了预留所有虚拟机内存你的16GB内存会被虚拟机一次性占走大半宿主机直接变卡。这个优化很多人不知道但实际使用体感差别巨大。到这里VMware本体就准备好了。别急着往下走我先帮你在这一步做个验证——用VMware打开一个虚拟机的过程本质上就是调用系统虚拟化能力的过程如果处理器虚拟化没开启你在后面几步会遇到开机黑屏或报错。验证方法很简单随便创建一个空白虚拟机先不用挂载系统镜像点开启此虚拟机如果弹出以下任意一种提示此主机支持Intel VT-x但Intel VT-x处于禁用状态二进制转换与此平台上的长模式不兼容VMware Workstation无法在此主机上运行那就说明BIOS里的虚拟化开关没打开。解决方法是重启电脑开机时按Del或F2进入BIOS不同主板品牌快捷键不同一般是Del、F2、F10这几个找到Intel Virtualization Technology或者AMD SVM Mode选项把它设置为Enabled保存退出。这一步做完虚拟化就不会再出幺蛾子了。3. 创建第一台虚拟机从镜像下载到系统安装全流程VMware装好了接下来就是整个教程的核心主菜——创建并安装一个虚拟机系统。为了让内容通用性更强我以安装Ubuntu Server 22.04 LTS为例为什么选这个后面会讲同时也会穿插Windows 7虚拟机安装的注意点因为热词里有人搜windows7虚拟机安装这类老系统在虚拟机上安装反而更挑剔值得单独提一句。先说镜像选择。Ubuntu Server的镜像从官网或者清华大学开源软件镜像站下载文件名一般是ubuntu-22.04.x-live-server-amd64.iso大概2GB左右。我为什么推荐Ubuntu Server而不是带图形界面的Ubuntu Desktop因为如果你是为了学习Linux服务器操作Server版本没有桌面环境会强迫你熟悉命令行而且资源占用低很多2核4G内存跑起来轻轻松松。如果你只是想在虚拟机里体验Windows系统那直接准备好Windows 7/10/11的ISO镜像即可Windows 7还有一个额外的步骤——安装完系统后必须手动安装VMware Tools否则屏幕分辨率会锁定在800x600且无法使用剪贴板共享。Windows 10/11则一般会自动联网下载驱动问题不大。打开VMware Workstation点击创建新的虚拟机或者直接主界面点创建虚拟机大按钮。这里有两种选择典型推荐和自定义。典型模式对小白友好自定义模式适合需要精细调整硬件的场景。我的建议是第一次创建虚拟机直接选典型后面需要改配置再右键虚拟机设置去改效率更高。在安装程序光盘映像文件这一步点击浏览选中你下载好的ISO镜像。此时VMware会智能检测到你用的是Ubuntu Server并自动把客户机操作系统设置为Linux版本选Ubuntu 64位。这个自动检测一般靠谱但如果你用的是某些小众发行版比如Rocky Linux、Arch Linux之类VMware可能识别不准你需要手动在客户机操作系统里选择对应的分类否则后面可能出现引导失败。接下来是虚拟机名称和位置。我给一个实用建议虚拟机名称建议改成目标系统用途的格式比如UbuntuServer-WebDevCentOS7-Elk这种因为虚拟机一多名字叫Ubuntu 64位这种你根本分不清哪台是干嘛的。存储位置务必放到空间充足的磁盘并且养成一个习惯——每台虚拟机单独建一个文件夹文件夹名叫什么虚拟机就叫什么路径中不要有中文和空格。比如D:\Virtual Machines\UbuntuServer-WebDev\。这个习惯在你后续克隆虚拟机、迁移虚拟机、做快照时都会省心很多因为VMware的vmdk虚拟磁盘文件、vmx配置文件、vmsn快照文件全都堆在同一个目录里有个清晰的结构备份也方便。再往下是指定磁盘容量。默认给20GB我建议直接填60GB并选择将虚拟磁盘存储为单个文件。立即分配所有磁盘空间这个选项不要勾让它动态增长就好否则你创建虚拟机的时候就会一次性占用60GB真实硬盘空间而动态增长的话最开始时可能只占几GB之后随着虚拟机内部数据增加逐渐变大。硬件定制这一步点击自定义硬件可以调整虚拟机的内存、CPU、网络适配器等。创建Ubuntu Server的话我给一个相对均衡的参考内存4096MB4GB处理器2核心网络适配器选VMnet8NAT模式这是后文要重点讲的模式。新创建的虚拟机默认网络适配器就是NAT模式这个默认值很科学新手建议保留等你看完第4部分理解了几种网络模式的区别之后再按需去改。配置完成后点击完成虚拟机就创建好了。此时虚拟机列表中会出现刚创建的那台机器左侧会显示已打开电源前的一个灰色状态。点开启此虚拟机即可启动安装流程。下面我把Ubuntu Server 22.04的安装流程中你会遇到的关键步骤快速带一遍第一是引导界面选择Try or Install Ubuntu Server进入安装程序第二是语言和键盘布局默认英文键盘默认English (US)如果你的键盘是中文输入法用户建议把键盘改成English (US)中文键盘布局默认也能用但安装完后在终端里部分符号会错位别问我怎么知道的第三是网络配置界面安装程序会自动DHCP获取一个IP这是VMware的NAT网络提供的如果看到netplan的配置界面上自动填了IP地址说明网络已经通了直接下一步如果没有获取到IP先检查网络适配器是不是NAT模式这个问题后面的网络配置部分详细展开第四是Configure Proxy和Ubuntu Archive Mirror国内用户建议把镜像源改成清华源或阿里源否则后面下载软件包速度会让你怀疑人生——这一步其实就是换apt源安装完成后也可以自己改第五是Guided storage configuration默认整块磁盘安装即可新手不建议手动分区第六是创建用户注意用户名不要设成rootUbuntu默认禁止root远程登录新建一个普通用户就好安装过程中会让你设置这个用户的密码和是否加密家目录加密家目录对初学者来说没太大必要选No即可第七是Featured Server Snaps全部不选直接下一步快照。安装完成后重启登录用户名密码你就会看到一个纯命令行界面——到这里你的第一台虚拟机已经诞生了。装Windows 7虚拟机的流程类似但有几个特殊注意点在创建虚拟机时客户机操作系统选Microsoft Windows→Windows 7 x64内存给2GB以上磁盘40GB以上然后安装过程中会有一个Press any key to boot from CD or DVD...的提示必须快速在虚拟机窗口内点一下按任意键否则会从硬盘启动失败。特别提醒Windows 7在新版VMware里安装时偶尔会遇到安装程序无法创建新的系统分区这个报错原因多数是磁盘是MBR分区表且预留的引导分区不对简单粗暴的解决办法是删除虚拟机内的所有分区让Windows安装程序自己重新创建不要手动分配。4. 网络配置是分水岭桥接、NAT、仅主机三种模式我到底该用谁虚拟机装好了大多数人会卡在下一个问题上为什么我的虚拟机可以上网为什么宿主机访问不到虚拟机里的网站为什么虚拟机之间互相ping不通这些问题的根源都在于VMware虚拟网络编辑器里的三种网络模式桥接模式Bridged、网络地址转换模式NAT和仅主机模式Host-only。这三者的关系我找一个最贴近生活的类比桥接模式就像你在同一个办公室局域网里又加了一台电脑这台电脑向路由器要一个和宿主机同网段的IP地址它和你宿主机在外人看来就是两台独立的设备地位平等各自从路由器获取IPNAT模式就像你家房子宿主机里又隔出了一间小房间虚拟机小房间里的设备不能直接和外部通信所有进出的数据都要经过你宿主机这个门卫和翻译转发仅主机模式则是一个完全隔离的房间房间里的设备只能跟你宿主机交流和外部世界完全不通。三种模式各有各的适用场景我直接拉一个表模式网络拓扑特点虚拟机能否访问外网外部能否访问虚拟机适用场景桥接模式虚拟机与宿主机在同一局域网像独立设备能能模拟真实服务器、多机集群、跨主机联调NAT模式虚拟机在虚拟内部网络中通过宿主机转发上网能不能默认日常开发、上网、安装软件、单机测试仅主机模式虚拟机与宿主机组成私有网络无外网不能不能安全实验、离线环境、内网渗透练习对初次上手的读者尤其是跟着本教程装Ubuntu Server的人来说我强烈建议你日常使用NAT模式。原因很简单NAT模式下的虚拟机可以正常上网下载软件包、apt update等都行而且不需要关心你宿主机当前连的是WiFi还是有线、路由器是否开启了AP隔离之类的外部网络环境宿主机换网络了虚拟机网络不会断。桥接模式虽然听起来更真实但它对宿主机的物理网络环境很敏感如果你是在公司网络里有线WiFi各种权限限制桥接模式的虚拟机可能直接拿不到IP如果你家里的路由器开了AP隔离或者访客网络桥接模式下虚拟机也可能互不相通。所以除非你有明确的需要局域网内其他设备直接访问这台虚拟机的需求否则NAT就是最佳选择没有之一。那NAT模式下的IP地址是怎么分配的VMware安装时会默认创建两个虚拟网络适配器VMnet1仅主机模式和VMnet8NAT模式。虚拟网卡VMnet8在宿主机上有一个固定的IP地址默认一般是192.168.x.1x通常是个网段。打开编辑→虚拟网络编辑器你可以看到VMnet8的详细配置子网IP一般是192.168.x.0子网掩码255.255.255.0NAT网关地址是192.168.x.2DHCP自动分配的地址池通常从192.168.x.128到192.168.x.254。虚拟机在NAT网络里就是从这个DHCP池子里获取IP的。所以你的虚拟机里看到的IP通常类似192.168.x.129/130/131网关是192.168.x.2DNS一般也和宿主机一致或者填8.8.8.8之类的公网DNS。这里有几个常见坑我先帮你排掉坑一宿主机换了WiFi网络虚拟机就连不上网了。这种情况不是因为你的NAT配置坏了而是VMware的NAT服务可能会在宿主机网络切换时重启失败。解决方法是到Windows服务里重启一下VMware NAT Service或者干脆重启VMware软件。坑二虚拟机突然拿不到IP。先在虚拟机的系统里检查网卡是否启用Ubuntu下ip link命令再检查VMware虚拟网络编辑器里的DHCP服务是否启用最后看Windows服务里VMware DHCP Service是否在运行。很多时候服务被安全软件优化成了手动启动就导致虚拟机开机时DHCP服务没起来。坑三我改了虚拟机的网络模式从NAT到桥接为什么虚拟机还是用原来的IP因为系统内部的网卡配置没有重新获取。Ubuntu Server用的是netplan配置网络修改了虚拟机的虚拟网卡模式后需要到/etc/netplan/目录下的yaml文件里重新配置或者直接sudo netplan apply。到这里我还得把宿主机如何访问虚拟机里的网站/服务这个问题讲清楚这是NAT模式下大家最容易糊涂的点。前面说NAT模式下外部不能主动访问虚拟机但这指的是外部设备直接按虚拟机IP去访问——因为虚拟机IP是私有的外部设备根本不认识这个IP。但是宿主机自己有一个特殊的访问通道直接访问虚拟机的IP。因为宿主机上有VMnet8这个虚拟网卡它的网段和虚拟机是同一个局域网段所以宿主机可以直接用浏览器访问 http://192.168.x.129来访问虚拟机里的Web服务前提是虚拟机里的服务监听在0.0.0.0上而不能只监听loopback地址。如果这台虚拟机要提供给局域网内其他物理机访问那就需要配置端口转发——在虚拟网络编辑器→VMnet8→NAT设置里添加一条端口转发规则把宿主机的某个端口例如8080映射到虚拟机的80端口这样局域网其他机器访问宿主机IP:8080就能到虚拟机里的服务了。5. 实操配置让虚拟机在NAT模式下稳定上网并实现宿主机访问虚拟机网站现在进入真正的实操环节。前面我已经说了要用NAT模式下面我按完整的步骤把网络配置过程走一遍从虚拟网络编辑器的检查到虚拟机内部IP的手动固定再到宿主机端口转发一步不落。首先在VMware主界面点击编辑→虚拟网络编辑器这一步需要管理员权限系统会弹一个UAC确认点是。打开后你会看到虚拟网卡列表找到VMnet8确认下面几个关键设置NAT模式已选中子网IP填写192.168.88.0这种私有网段默认即可但建议把它从默认的192.168.xxx.0换成一个不容易冲突的网段比如192.168.88.0因为192.168.1.0这种网段和家里路由器LAN网段冲突的概率太高了一旦冲突宿主机访问虚拟机或者虚拟机上网会出现诡异的路由问题子网掩码保持255.255.255.0点击DHCP设置看一下地址池起始地址确认是从192.168.88.128开始结束到192.168.88.254点击NAT设置确认网关IP是192.168.88.2。如果你改动过子网IP顺势把DHCP地址池的起始和结束地址也改成对应网段比如192.168.88.128到192.168.88.254不然DHCP会分配出子网之外的IP虚拟机内部直接网络不可用。这个细节网上很多教程不会特意提醒但我实际配过太多机器十次里有两次踩在这个上面。然后回到Windows的网络连接页面你会看到多出来两张虚拟网卡VMware Network Adapter VMnet1和VMware Network Adapter VMnet8。右键VMware Network Adapter VMnet8进入属性双击Internet协议版本4TCP/IPv4手动填写IP地址为192.168.88.1子网掩码255.255.255.0网关留空即可。这一步很多教程没写但事实上非常重要——宿主机这张VMnet8网卡的IP必须和VMnet8的子网在同一网段否则宿主机和虚拟机之间无法互相ping通。接下来启动虚拟机假设你已经在里面装好了Ubuntu Server 22.04登录后执行ip addr看一眼网卡是否拿到了192.168.88.x的地址。正常情况下Ubuntu的systemd-networkd或者netplan会自动通过DHCP拿到IP不需要手动配置什么。如果拿不到IP执行sudo netplan apply强制应用网络配置或者试试sudo dhclient手动续租一次。再不行就重启虚拟机。此时在虚拟机里执行ping 8.8.8.8通了说明NAT出口正常执行ping 192.168.88.1通了说明宿主机与虚拟机通路正常执行ping 192.168.88.2通了说明NAT网关正常。这三层ping能通网络就已经完全OK了。如果8.8.8.8不通但192.168.88.2通了那大概率是DNS问题域名解析不了可以检查/etc/resolv.conf里的DNS是不是192.168.88.2或8.8.8.8。很多新手想不通一个问题NAT模式下虚拟机是通过宿主机转发访问外网的那我在虚拟机里执行ping baidu.com这个过程里IP包的源地址和目的地址分别是啥其实NAT的原理就是虚拟机发出的IP包源IP是192.168.88.x目标IP是baidu.com解析出来的公网IP这个包到VMnet8的NAT网关后NAT网关把源IP改成宿主机物理网卡的IP所以外部网络看到的请求来源就是宿主机的公网/局域网IP。回包到达宿主机后NAT网关再把目标地址改成192.168.88.x转回虚拟机。整个过程对虚拟机完全透明。这就是为什么NAT模式下虚拟机能上网但别人找不到你的原因。接下来实现一个最常见的需求宿主机用浏览器访问虚拟机里的Web服务。假设你在Ubuntu虚拟机上装了Nginx并启动了服务监听80端口。在虚拟机里执行curl 127.0.0.1如果能看到Nginx的欢迎页说明服务正常。此时在宿主机浏览器里访问http://192.168.88.129替换成你虚拟机的实际IP正常情况下就能看到Nginx页面了。这就是宿主机直接访问虚拟机IP的方式极其简单。那如果我想让虚拟机里的MySQL端口3306、SSH端口22等服务也能被宿主机访问甚至被局域网其他机器访问呢两种思路思路一适合宿主机自己访问虚拟机的所有服务不用做任何额外配置直接访问虚拟机的IP:服务端口即可因为它们在同一网段。思路二适合外部设备访问虚拟机的服务在虚拟网络编辑器→VMnet8→NAT设置里添加端口转发。比如我要让外部机器通过宿主机IP的2222端口访问虚拟机的SSH服务就点NAT设置→添加把主机端口填2222类型TCP虚拟机IP填192.168.88.129虚拟机端口填22。这样一来局域网内任何一台机器访问宿主机IP:2222流量就会通过宿主机的NAT转发到虚拟机的22端口。注意Windows防火墙如果拦截了2222端口你还得在Windows防火墙里放行这个端口否则外部机器连不上。还有一个高频需求在Windows宿主机上用Xshell或FinalShell远程连接虚拟机里的Ubuntu系统。这个其实不需要做什么端口转发因为Xshell连接的目标地址直接填虚拟机的IP192.168.88.129用户名密码就是安装系统时设置的普通用户。第一次连接可能报SSH服务未安装因为Ubuntu Server默认很可能没装ssh-server需要在虚拟机里执行sudo apt install openssh-server安装并启动服务然后Xshell就能连了。这个操作我在多台机器上重复过太多次了看起来简单但很多入门朋友就是卡在这一步以为虚拟机都该默认开着SSH。最后再给你一个稳定性的建议如果你希望虚拟机IP固定不变比如你要在虚拟机里搭服务IP一变宿主机侧的端口转发和Xshell的连接配置全部失效建议在虚拟机内部给网卡配置一个静态IP地址而不是依赖DHCP。Ubuntu 22.04的netplan配置文件在/etc/netplan/01-network-config.yaml内容大致如下network: version: 2 ethernets: ens33: dhcp4: false addresses: - 192.168.88.129/24 routes: - to: default via: 192.168.88.2 nameservers: addresses: - 192.168.88.2 - 8.8.8.8修改完执行sudo netplan apply让配置生效。注意ens33这个网卡名称不一定和你机器上相同先用ip addr确认实际网卡名字再改。这种静态IP方案比DHCP稳定得多尤其是在你做了端口转发之后转发规则绑定的是IP如果DHCP把IP换了转发规则就全断了。6. 踩坑实录虚拟机装Linux蓝屏、VMware Tools报错、Codex安装等常见问题排查前面把正常流程走完了但实际使用中你一定还会遇到零零散散的问题。我挑了一些高频、但网上答案比较分散的问题集中做个复盘这些都是过去几年里我自己踩过或者被身边人问过无数次的坑。坑一虚拟机安装Linux时蓝屏。很多人装Windows虚拟机蓝屏比如给Windows 7虚拟机装系统时出现0x000000A5蓝屏原因是新版VMware默认给虚拟机开启了EFI固件类型而Windows 7对EFI的支持很烂。解决问题很简单在虚拟机设置里把固件类型从UEFI改为BIOS再开启虚拟机重新安装。怎么改关机状态下右键虚拟机→设置→选项→高级→固件类型改成BIOS确定再开机就好了。至于虚拟机里跑Linux系统时出现RST/ACPI错误导致的蓝屏多半是VMware的虚拟硬件兼容性设置问题。把虚拟机设置里的硬件兼容性从Workstation 17降到16或15能绕开一些相对新的硬件怪癖。如果装的是CentOS 7、Rocky 8这类老Linux系统内核版本旧新版本VMware的虚拟显卡或虚拟SCSI驱动可能引发异常把硬盘控制器从NVMe改成SATALSI Logic/LSI Logic SAS一般也能解决。坑二VMware Tools安装时报继续运行脚本未能在虚拟机中成功运行。这是一个极其经典的问题搜索热词里出现vmware tools 继续运行脚本未能在虚拟机中成功运行我也不意外因为我几乎每次都遇到。先说VMware Tools是什么它是一组驱动和工具装上之后可以实现剪贴板共享、文件拖拽、自适应分辨率、时间同步等功能对Windows虚拟机尤其重要不装的话Windows虚拟机会一直卡在低分辨率。报继续运行脚本未能在虚拟机中成功运行一般发生在VMware Tools安装向导快完成时提示脚本执行失败。原因各异但最常见的是虚拟机里的Windows系统缺Visual C运行库或者当前登录用户权限不足。网上给的标准解法是点是忽略脚本错误安装完成后到虚拟机内手动执行C:\Program Files\VMware\VMware Tools\VMwareToolboxCmd.exe试试看工具命令是否正常。这个解法在实践中确实有效大多数情况下VMware Tools主体驱动已经装上去了脚本失败只是最后的配置脚本没跑完。如果你要彻底解决脚本错误有个旁门左道先别装VMware Tools先给Windows系统打满补丁、装全VC运行库directx修复工具一键搞定再重新挂载VMware Tools镜像安装。我这么操作过Windows 7和Windows 10虚拟机四台里三台都正常通过了。坑三VMware 17里右键虚拟机菜单没有配置或打开虚拟机选项。这个问题的出现场景一般是用户双击了某个虚拟机文件.vmx但VMware Workstation没有把它识别为虚拟机然后右键菜单里看不到打开入口。解决办法是打开VMware主界面点文件→打开手动选择.vmx文件打开。如果打开按钮是灰色的那就把那个.vmx文件用记事本打开看看开头几行是否包含config.version 8之类的版本声明格式不对就可能是文件损坏或者从低版本迁移时没导出干净。坑四Windows宿主机上启动Codex或其他需要联网的应用时报安装未完成或者网络不通。Codex这个工具本身和VMware没有直接关系但如果你是在虚拟机里跑Codex会发现在NAT模式下它可能工作异常。原因在于Codex以及很多AI工具认证时需要监听localhost回调端口在某些情况下NAT模式会导致回调地址被解析到虚拟机内部IP而非127.0.0.1。解决方法是把网络模式临时改为桥接或者配置端口转发但从我实测的结果看最简单靠谱的是直接改为桥接模式前提是你宿主机网络环境允许。我在一台Windows 11宿主机上试过在NAT模式下跑Codex启动过程报Service cant reach backend切到桥接后一切正常。如果你也遇到类似问题可以优先考虑这个思路。坑五Docker Desktop和VMware冲突。这是Windows平台的一大经典矛盾点。Docker Desktop在Windows上有两种后端WSL2和Hyper-V。如果你电脑上装了VMware Workstation又在Docker Desktop里选了Hyper-V后端两者都会抢占系统虚拟化层导致要么VMware开不了机要么Docker起不来。妥协方案是如果两个都要用把Docker Desktop的后端改成WSL2。WSL2虽然也基于Hyper-V但它与VMware的冲突面比传统Hyper-V小很多实测下来两者可以共存。具体操作Docker Desktop→Settings→General→Use the WSL 2 based engine勾选并重启Docker。注意开WSL2需要Windows功能里启用适用于Linux的Windows子系统和虚拟机平台重启后生效。如果你在Windows 11上第一次跑Docker还是报错多半是没启用虚拟机平台这个功能去启用或关闭Windows功能里找到并勾选上重启。按输入内容要求不涉及代理相关内容这里只提问题本身。坑六启动虚拟机时提示内部错误或VMware Authorization Service 未运行。这个一般在Windows服务里把VMware Authorization Service设置为自动然后启动它就行。方法是WinR打开services.msc找到VMware相关服务有VMware Authorization Service、VMware DHCP Service、VMware NAT Service、VMware USB Arbitration Service全部设为自动并且确保正在运行。如果服务启动失败另一种可能是因为VMware软件没有以管理员权限安装过去安装目录右键vmware.exe→属性→兼容性→勾选以管理员身份运行此程序保险起见再做一次。Windows安全日志里可能会记录相关服务启动失败的错误代码打开事件查看器看一眼就能定位到具体原因。7. 终局玩法快照、克隆和迁移——让虚拟机真正成为你的第二台电脑到这里你已经在VMware里装好了系统也解决了网络问题。但如果只是把它当个能开机的系统那还远远没有发挥出虚拟机的真正价值。最后这部分我讲讲虚拟机之所以比实体机好用太多的几个核心功能快照、克隆和迁移。这些功能配合刚才的网络配置才让虚拟机真正成为一个可复制、可回滚、可搬走的第二台电脑。先说快照Snapshot。快照的本质是记录虚拟机在某个时刻的完整状态包括内存、磁盘、虚拟硬件配置等。在给虚拟机做危险操作之前——比如安装一个不熟悉的软件包、改系统配置、跑一段来路不明的脚本——先拍一张快照万一翻车了马上回滚到快照时间点。这个功能对折腾系统的人来说简直是后悔药。右键虚拟机→快照→拍摄快照在弹出的窗口里写个名字和描述比如安装nginx前-系统干净状态。拍快照的时机有讲究不要在高I/O场景下拍比如正在编译、正在大量读写磁盘也不要太频繁地拍因为快照文件会逐渐膨胀占据大量磁盘空间。我个人的习惯是系统装好并做完所有基础配置网络、SSH、基本软件后拍第一张快照这是黄金快照之后所有折腾都基于这个状态之后再拍新的快照回滚也只回滚到这个点这样管理成本最低。再一个就是克隆Clone。克隆是把一台虚拟机复制一份完全独立的新虚拟机有两种模式链接克隆和完整克隆。链接克隆节省磁盘空间因为它共享父虚拟机的磁盘文件但缺点是父虚拟机坏了子克隆也会受影响完整克隆是磁盘文件完全复制一份虽然占用空间大但独立性最好。如果你只是想快速起一个测试环境链接克隆够用如果是生产环境复制必须是完整克隆。克隆之前的准备工作很重要先在原虚拟机里执行sudo cloud-init clean或者至少把主机名改掉Ubuntu里主机名文件在/etc/hostname因为克隆出来的机器和原机器如果主机名一样放在同一个网段里会互相冲突。我做过最夸张的事情是拿一台基础镜像虚拟机克隆出8台Linux节点组成一个小型K8s集群每台机器只改了IP和主机名整体耗时不超过半小时。这就是虚拟机相对物理机碾压级的优势——批量复制环境而不是一台一台重装。最后是迁移Move。这可能是很多用户没意识到的一个点虚拟机其实是可以带走的。你的整个虚拟机硬件配置、系统、数据全都在那个虚拟机的文件夹里只要把这个文件夹整体拷贝到另一台装了VMware的Windows电脑上用VMware打开里面的.vmx文件就能直接运行不需要重装系统。我在家和公司两头跑的时候就经常把正在用的虚拟机拷贝到移动硬盘里带过去。这里有几个注意点第一迁移前先关机不要在虚拟机还在运行的时候拷贝文件夹那样文件处于非一致状态启动后可能损坏第二如果虚拟机里配置了NAT网络和静态IP迁移到另一台电脑后只要那台电脑的VMware虚拟网络编辑器里VMnet8网段与虚拟机内的静态IP一致网络就是通的如果不一致改一下VMnet8的子网IP或者虚拟机里的静态IP就行不需要动系统里的任何其他配置。第三如果你有多个快照做迁移前建议先删除不需要的旧快照否则快照链会让拷贝出来的虚拟机在打开时多一个需要合并快照的步骤处理不当会出问题。还有一个小技巧虚拟机文件夹可以做成压缩包或者直接放进云盘同步。因为虚拟磁盘文件是稀疏的动态增长的vmdk文件在你没写满之前实际很小用压缩软件打个包经常能压到一半大小。配合坚果云、OneDrive之类的同步盘就能实现类NAS式的虚拟机管理。我自己就有一台轻量级Linux虚拟机常年躺在云盘里遇到什么临时需求就在当前电脑上打开用用完了关机云盘自动同步回云端下次换台电脑继续用。这种体验用物理机是永远不可能实现的。8. 装了无数台虚拟机之后我想留给你的一些体会可能你注意到了这篇教程从VMware的下载安装一路讲到了网络模式、端口转发、快照克隆迁移内容跨度不小。这些内容并不是我一次性就能写出来的而是从第一台装得磕磕绊绊的Ubuntu虚拟机开始一台一台踩坑踩出来的。回过头来看虚拟机学习有一个特别有意思的曲线装系统本身很简单难的是装完之后让虚拟机融入你的工作流——网络通不通、宿主机能不能访问、能不能快速复制环境、出了问题能不能快速回滚这些问题才是决定虚拟机好不好用的关键。在Windows上用VMware装虚拟机的核心链路我总结成一句话下载安装VMware、创建虚拟机、安装系统、选对网络模式、用好快照和克隆。这五步的每一步都必须理解背后为什么而不是机械地抄步骤。比如网络模式你现在理解了NAT模式下虚拟机怎么上网、宿主机怎么访问虚拟机、端口转发起了什么作用那你以后遇到虚拟机连不上网外部设备访问不到虚拟机这类问题脑海中就会有清晰的排查路径而不用到处搜教程。如果你是完全的新手我的建议是先把这篇教程里的步骤在本地跟着做一遍不管你是装Ubuntu Server也好、CentOS Stream也好、Windows 7也好重点是完整走一遍流程理解每一步在做啥。遇到网上的教程和我的说法不一样不要慌先按自己理解的逻辑去判断大多数时候都只是实现方式不同而不是对错不同。等你装完两三台虚拟机后再去学Docker、K8s这些更上层的东西你会在容器和虚拟机之间建立起清晰的边界感——知道哪个场景用虚拟机隔离更合适哪个场景用容器更轻量这种判断力是从动手实践中长出来的不是看几篇文章就能获得的。最后再分享一个小技巧算是我用了这么多年虚拟机的压箱底经验虚拟机里的系统永远不要在同一时刻只保留一个版本。我现在电脑上常驻着Ubuntu Server日常开发环境、Rocky Linux复现运维场景、Windows 10测试机软件兼容性验证三台虚拟机每台都是干净的黄金快照起步用完就回滚或克隆。这样做的好处是不管工作中接到什么需求我都能在五分钟内拉起一个干净的测试环境而不是花两个小时去排查一个被我昨天搞坏了的环境。希望这篇教程能帮你把虚拟机真正用起来而不是装完就丢在硬盘里吃灰。