我这些年装 Ubuntu 虚拟机装到闭着眼睛都能把新建虚拟机的向导点完。每次有新人问“我在 Windows 上想跑 Linux到底用哪个方案”我给的建议基本没变过——VMware Workstation Pro 16 搭配 Ubuntu 20.04 LTS。这套组合不算新潮但确实是我踩了无数坑之后留在主力机上的默认配置。如果你需要在 Windows 里跑一个完整的 Linux 桌面想用快照抵御瞎折腾的风险想要可控的虚拟网络环境这篇文章适合你如果你只是想要一个终端敲命令文末会顺带聊聊 WSL2 的取舍。1. 为什么是 VMware Workstation Pro 16 配上 Ubuntu 20.04 这个组合1.1 这套组合解决了什么问题先把一个容易被忽视的事实摆出来Ubuntu 20.04 LTS 虽然已经发布多年但它的 Extended Security MaintenanceESM支持会持续到 2030 年。这意味着你装一台 20.04 的虚拟机它的安全更新、软件生态、社区问答存量都是滚动的并不会因为版本旧而过时。很多企业项目的生产环境就是 20.04开发环境和生产环境保持一致本身就是一种省事。VMware Workstation Pro 16 这边16.x 时代把虚拟硬件和 3D 加速都打磨得相当成熟。Virtual NVMe 控制器、快照管理器、自动适应客户机分辨率、共享文件夹、剪贴板共享这些日常天天用到的东西在 16.2 以后的版本里都达到了“开了就能用”的稳定程度。后来 17 出来以后个人授权甚至免费了但 16 的安装流程和配置文件结构没有任何变化你现在学的东西换到 17、换到 Linux 主机上的 Workstation、迁移到 ESXi思路完全通用。1.2 折腾过这么多方案之后的客观对比这一节给还在犹豫选型的读者。我这些年用过 VirtualBox、WSL2、裸机双系统各有各的毛病和优点方案启动速度桌面体验快照/回滚隔离性适合场景VMware Workstation Pro 16中完整GPU加速强强完整桌面、多网络实验、频繁回滚VirtualBox中慢3D加速较弱中强免费场景、不想纠结授权WSL2极快命令行为主WSLg 桌面串流弱靠 Windows 磁盘中命令行开发、Docker、配合宿主驱动做 CUDA裸机双系统最快完整无无重度 GPU 计算、需要 100% 硬件的场景如果你需要跑 GNOME 桌面、需要多个虚拟网卡互相隔离、需要随时保存一个“干净状态”的照片VMware 的体验是目前最顺的。WSL2 虽然启动快但它本质是共享内核的轻量虚拟机玩坏内核或者想做网络抓包实验时隔离性不够而且它的文件系统 IO 在跨盘场景下有历史性问题。裸机双系统性能最强但切一次系统要重启一次频繁开发时效率很低。所以我现在的工作流是日常命令行在 WSL2 里秒开需要桌面、需要完整隔离、需要回滚的时候打开这台 VMware 的 Ubuntu 20.04各干各的互不添乱。2. 第一步先把镜像弄到手清华源下载与校验2.1 ISO 用哪个版本安装之前的第一件事是把 Ubuntu 20.04 的 ISO 搞到手。这里先确认一个概念20.04 是发行代号期间会不断发布 20.04.1、20.04.2……这样的点版本最新的已经是 20.04.6。建议直接下点版本最新的因为里面包含了从旧点版本到现在的所有安全补丁和硬件支持改进。文件名一般是ubuntu-20.04.6-desktop-amd64.iso。Desktop 版自带 GNOME 桌面适合绝大多数人如果你要的是跑服务的无界面环境选 server 版装完默认没有桌面内存占用也小很多。2.2 用清华源和 SHA256 校验把坑挡在安装之前国内直接访问 Ubuntu 官网的下载服务器速度经常不稳定有时候一个 2GB 的 ISO 下到一半断开又得重来。我一般直接用清华 TUNA 镜像地址是https://mirrors.tuna.tsinghua.edu.cn/ubuntu-releases/20.04/进去以后下载 ISO 和SHA256SUMS文件。校验的重要性很多人会跳过但 ISO 文件损坏在安装时表现得很奇怪——解包失败、GRUB 装不上、装到一半报错你排查半天到最后发现是文件坏了非常浪费时间。所以下载完成后先跑一条命令sha256sum ubuntu-20.04.6-desktop-amd64.iso然后把输出和你下载的SHA256SUMS里对应的值比对。如果你用的是 Linux 或 macOS直接用sha256sum -c SHA256SUMS也能全自动校验Windows 上可以用 PowerShell 的Get-FileHash。提示如果你在用其他镜像源比如阿里云、USTC、华为云结构都类似记得每次都要校验一次特别是通过浏览器下载时。2.3 顺带说一下 rootfs 在哪有不少人在搜索“清华镜像下载 Ubuntu 20.04 的 rootfs 文件链接在哪”。rootfs 文件不是桌面 ISO而是一个不带内核、不带安装器的根文件系统压缩包通常用来给容器做基础镜像或者用一个 chroot 环境做定制系统。清华镜像上对应路径在https://mirrors.tuna.tsinghua.edu.cn/ubuntu-cdimage/ubuntu-base/releases/20.04/release/里面的文件类似ubuntu-base-20.04.x-base-amd64.tar.gz。这个和 VMware 装虚拟机不是一条路线但如果你后面想把一个精简的 Ubuntu 环境导入到 Docker 或者做嵌入式系统用得上。3. 新建虚拟机向导里的参数取舍每一栏为什么这么填3.1 向导的默认值为什么不能直接信VMware Workstation Pro 16 的新建虚拟机向导很友好一路 Next 也能装完系统但默认参数在几个关键位置上和你需要的体验差得很远。比如默认的磁盘大小是 20GB装完 Ubuntu 桌面就剩下没多少了默认的处理器核心数通常是 1 个GNOME 桌面加几个浏览器标签页就会卡默认的网络连接方式虽然通常没问题但在实验室环境里你可能根本不需要 NAT。正因为这样我在向导第一个界面就会选“自定义高级”把每个参数过一遍。多花两分钟后面省一个晚上。3.2 CPU、内存、磁盘与网络的具体建议处理器Ubuntu 20.04 桌面版建议至少 2 核开发机直接给 4 核。注意 VMware 里“处理器数量”和“每个处理器的内核数量”这两个字段的区别它们乘起来才是你总的 vCPU 数。比如 1 个处理器、4 个内核总 vCPU 就是 4。内存4GB 是流畅底线6GB 到 8GB 最舒服。如果你的 Windows 主机只有 8GB 内存给虚拟机 4GB 就收手别把宿主机挤爆否则两边都卡。磁盘虚拟磁盘大小我一般给 60GB虽然刚装完只占用 6GB 左右但后面装 Python 包、编译缓存、Docker 镜像会涨得很快。磁盘控制器建议选用 NVMeUbuntu 20.04 内核原生支持读写速度比传统的 SATA/LSI 控制器快不少。文件格式方面“拆分成多个文件”和“存储为单个文件”的区别主要是方便性和性能单个文件性能略好但如果你要把虚拟机文件放在 FAT32 移动硬盘或者某些网盘同步目录里就只能选拆分。网络三种模式里NAT默认最简单虚拟机通过宿主机访问外网外部设备访问不到虚拟机适合纯开发环境桥接让虚拟机直接出现在宿主机所在局域网里适合做服务测试其他设备可以直接 SSH 进来仅主机模式是完全隔离的实验室环境。我建议做实验的第一步就用 NAT跑通了再根据需求切桥接。3.3 自定义硬件里还藏着哪些开关向导最后一步有个“自定义硬件”按钮这里面可做的文章最多。显示选项里的“加速 3D 图形”默认是关的如果你要跑需要 OpenGL 的桌面应用把勾打上然后视频内存拉到 128MB 以上。处理器选项里如果勾选了“虚拟化 Intel VT-x/EPT 或 AMD-V/RVI”以后在虚拟机里跑 Docker Desktop、Android 模拟器、KVM 嵌套虚拟化才不会报错。USB 控制器建议选 3.1挂载 U 盘和调试设备时速度才有保证。我见过不少人装完系统后悔当时没勾这些回头又要改配置关机重启。所以这一页值得花几分钟看清。4. 安装 Ubuntu 20.04 的过程与那些默认勾选的影响4.1 引导与安装模式选择虚拟机创建好以后把下载的 ISO 文件挂载到虚拟光驱里虚拟机设置 CD/DVD 使用 ISO 映像文件开机。如果一切正常你会看到 Ubuntu 的 GRUB 引导界面。这里有“尝试 Ubuntu”和“安装 Ubuntu”两个选项直接选“安装 Ubuntu”即可没必要先进 Live 桌面逛一圈再开安装程序除非你想先验证这个 ISO 能不能正常启动。如果引导界面都没出现或者黑屏先检查 CD/DVD 设置里“启动时连接”是否勾选再检查虚拟机固件是不是 UEFI 模式。Ubuntu 20.04 对 UEFI 的支持已经很成熟但如果你的 ISO 是从很老的渠道下载的改回 BIOS 固件能提升兼容性。4.2 分区、更新和三方驱动的取舍安装向导会问你“更新和其他软件”这一页的选择最小安装 vs 正常安装正常安装会附带 LibreOffice、游戏、媒体播放器等一大堆软件安装慢而且虚拟机里大概率用不上。选“最小安装”后面缺什么用什么装什么。是否勾选“安装时下载更新”我第一次装的时候勾选过结果因为网络原因装了一个多小时。更新可以等装完系统后用apt upgrade统一处理反而更可控。是否勾选“为图形和无线硬件安装第三方软件”这里的第三方软件包含一些非开源的图形驱动和媒体解码器。在 VMware 虚拟机里显卡是由 VMware 虚拟的 SVGA 设备提供的Ubuntu 自带的开源驱动就能正常工作装 Nvidia 第三方驱动反而会引入问题。所以这一步我通常不勾等进入系统后再按需安装。安装类型里选择“清除整个磁盘并安装 Ubuntu”——注意这里清除的是虚拟磁盘不是你的 Windows 实体盘所以不用害怕。如果你有高级需求可以在“高级功能”里启用 LVM 逻辑卷管理方便以后在线扩容。但对于绝大多数虚拟机使用场景直接默认分区表反而更好维护少了 LVM 这层抽象快照恢复和磁盘迁移都更直观。4.3 用户与主机名设置“你是谁”这一页设置的账号就是以后登录系统的唯一账号。用户名建议全小写字母加数字不要用中文也尽量别用带空格的用户名否则很多开发工具有时候会在路径上出幺蛾子。主机名我一般取ubuntu2004-dev这种一眼能认出来的名字方便在局域网里找设备。登录选项里“自动登录”和“需要密码”的区别取决于你的使用场景。虚拟机文件本身已经在宿主机手里安全边界并不强自动登录省事但如果是做安全实验、或者你不想别人开机就能进系统那就保留密码。4.4 重启用到的“移除介质”提示安装文件复制完成以后系统会提示你重启。这时候 VMware 会自动把 ISO 从光驱“弹出”吗不一定。很多人的第一个困惑是重启后看到一行提示Please remove the installation medium, then press ENTER——这是虚拟机还挂着安装介质你直接按回车即可。如果每次都卡在这句提示可以在虚拟机设置里把 CD/DVD 的“启动时连接”取消勾选下次开机就不会再试图找安装盘了。重启后能正常进入 GNOME 登录界面说明基础系统已经装好了。但这时候先别急着用还差几轮配置才能让它真正顺手。5. 登进桌面后的第一轮配置正确使用 VMware Tools 全家桶5.1 open-vm-tools 才是正解“VMware Tools”这个名字听起来像是 VMware 官方提供的一个闭源工具包需要从虚拟机菜单里点“安装 VMware Tools”加载一个 ISO。但实际安装 Ubuntu 的时候我更推荐直接用 Ubuntu 软件源里的 open-vm-tools这是 VMware Tools 的开源版本由 VMware 维护但打包在 Ubuntu 官方仓库里。它随系统更新一起升级不用每次内核更新后手动重新编译模块用官方 Toolkit 反而会因为版本滞后在内核升级后出问题。所以进入系统的第一件事打开终端sudo apt update sudo apt upgrade -y升级完成后安装桌面增强包sudo apt install open-vm-tools-desktop -y很多人只装open-vm-tools但如果想要分辨率自适应、剪贴板共享、拖拽文件这些桌面功能必须装open-vm-tools-desktop。装完以后重启一次systemctl status open-vm-tools能看到服务是 running 状态。5.2 分辨率自适应与共享文件夹重启之后你拖拽 VMware 窗口大小Ubuntu 桌面应该会自动改变分辨率跟随窗口尺寸。这就是 open-vm-tools-desktop 里 vmtoolsd 和 xrandr 配合工作的效果。如果发现分辨率不跟随多半是系统还在用 Wayland 会话或者没重启。共享文件夹是 VMware 相对 VirtualBox 最顺滑的一个特性。在虚拟机设置 选项 共享文件夹里把某个 Windows 目录共享给虚拟机比如D:\share。勾选“总是启用”添加共享目录设置一个名字。然后在 Ubuntu 里这个目录会被自动挂载到ls /mnt/hgfs/如果你看到这个目录是空的或者压根没有/mnt/hgfs可以手动挂载sudo mkdir -p /mnt/hgfs sudo vmhgfs-fuse .host:/ /mnt/hgfs -o allow_other如果希望每次开机自动挂载在/etc/fstab里加一行.host:/ /mnt/hgfs fuse.vmhgfs-fuse allow_other,defaults 0 0注意allow_other这个参数不是随便写的如果不加普通用户可能只能看到目录但打不开尤其是在非 root 登录的场景下。5.3 剪贴板、拖拽与客户机隔离设置剪贴板共享在 open-vm-tools-desktop 安装后默认是打开的Windows 和 Ubuntu 之间可以互相复制粘贴文本也能拖拽文件。如果你发现拖拽文件只在某些目录生效可以检查一下 VMware 的“虚拟机 设置 选项 客户机隔离”两个勾选框是否都启用启用复制粘贴启用拖放这轮配置之后虚拟机才算进入可用的日常状态。不过先别急着装一堆开发环境我建议先看一眼第六节的常见坑别等踩了再回来。6. 黑屏、分辨率和显卡驱动这套环境最容易踩的三个坑6.1 黑屏问题的排查链路黑屏是 VMware Ubuntu 20.04 出现频率最高的故障我见过四种典型情况排查方式各不相同。第一种开机直接黑屏连 GRUB 都看不到。优先检查虚拟机设置里的固件类型和 CD/DVD 是否还挂着安装盘。这种黑屏通常是引导介质问题而不是显示器问题。第二种安装完系统重启后卡在登录界面之前屏幕黑掉但鼠标指针能动。这多半是 GNOME 默认的 Wayland 会话和 VMware 虚拟显卡的兼容性问题。解决办法是开机后在 GRUB 按e进入编辑模式在linux那行的末尾加上nomodeset按CtrlX启动。如果这样就正常了就在/etc/default/grub里把GRUB_CMDLINE_LINUX_DEFAULT改成GRUB_CMDLINE_LINUX_DEFAULTquiet splash nomodeset然后执行sudo update-grub持久化。另外更根治的办法是让 GDM 强制使用 Xorg 会话编辑/etc/gdm3/custom.conf取消WaylandEnablefalse那行的注释重启后 Ubuntu 会固定走 Xorg兼容性好很多。第三种开机后屏幕能显示但分辨率始终只有 800x600 或者 1024x768怎么调都调不上去。这个几乎可以断定是 open-vm-tools 没装好或者装了但服务没跑起来。执行systemctl status open-vm-tools看看状态再确认xrandr的输出里有没有更多分辨率选项。没有的话回到 5.1 节的安装步骤检查。第四种开启 3D 加速后花屏或者闪屏。这是虚拟显卡驱动的问题把“加速 3D 图形”关掉或者把视频内存调低能绕过去。说到底VMware 的虚拟显卡是一个性能有限的标准 VGA 设备3D 加速只是为了让你能跑一些 OpenGL 应用不适合拿它打游戏或者跑重型渲染。6.2 NVIDIA 520 驱动为什么不该装在虚拟机的 Ubuntu 里最近搜“nvidia 520 linux 64-bit ubuntu 20.04”的人不少这个搜索词背后大概率是两种需求一种是在 VMware 虚拟机里想给 Ubuntu 装 NVIDIA 驱动另一种是在物理机上给 Ubuntu 20.04 装 520 分支驱动。先说第一种。VMware Workstation 的虚拟显卡是 VMware SVGA不是 NVIDIA 的物理显卡。你在虚拟机里执行nvidia-smi结果是no devices were found这是正常的。非要硬装 NVIDIA 的 .run 驱动大概率会报Unable to load the nvidia-drm kernel module之类的错误严重点直接把 X 服务搞挂还得进恢复模式把驱动卸掉浪费时间。即使你在虚拟机设置里开启了 3D 加速那也只是宿主机 GPU 通过 WDDM/OpenGL 转换层间接参与渲染虚拟机里的 CUDA 程序依然无法直接调用宿主 GPU。所以虚拟机里的 Ubuntu 20.04 不需要、也不应该装任何 NVIDIA 驱动。那如果你的目标真的是 GPU 计算怎么办三个靠谱路线物理机装 Ubuntu 20.04使用 NVIDIA 官方仓库或 Ubuntu 图形驱动 PPA 安装驱动比如 535、550 分支Windows 宿主机上用 WSL2 Ubuntu 20.04Windows 的 NVIDIA 驱动可以直接透传给 WSL 里的 CUDA 程序这是目前性价比最高的开发路径生产级虚拟化 GPU 需求上 ESXi 加 vGPU 授权Workstation 这个产品线做不了。关于 520 这个数字本身它是 2022 年底为 RTX 40 系列首发准备的过渡分支生命周期很短后续很快被 525 取代。现在在 Ubuntu 20.04 上没必要认准 520装太老的驱动反而可能因为不支持当前内核而编译失败。6.3 分辨率、缩放与显示性能的长期优化思路还有一个很常见的损耗点Ubuntu 桌面默认开着一堆动画效果在虚拟机里这些动画会消耗不少 CPU。可以通过一个命令关掉gsettings set org.gnome.desktop.interface enable-animations false另外如果你的屏幕是高分屏Ubuntu 会自动开启缩放fractional scaling缩放倍数非整数时虚拟显卡开销会明显增加。优先把缩放设置成整数倍比如 1x、2x虚拟机运行会流畅不少。7. 快照、磁盘瘦身与日常维护的长期实践7.1 快照什么时候必须拍怎么管理VMware 的快照机制是我离不开这个产品的一个重要原因。它的本质是记录虚拟磁盘和内存的某个状态之后无论你怎么折腾只要在快照管理器里点“恢复到快照”系统就回到那一刻。我的习惯是在这几个节点各拍一下Ubuntu 装完apt upgrade做完桌面和 VMware Tools 配置好后拍一个叫base-clean的快照。这是以后所有折腾的安全网。每次要装可能影响系统底层的软件前比如换内核、装显卡驱动、配置奇怪的网络服务拍一个临时快照。实验做完确认系统还健康就把临时快照删掉避免快照树越积越乱。快照不是备份这个我要强调。快照文件是挂在同一个 VMDK 文件上的增量数据如果虚拟磁盘文件整体损坏快照也跟着一起消失。所以真正重要的数据还是要在关机后把整个虚拟机文件夹复制一份或者用共享文件夹把成果同步到宿主机。7.2 磁盘瘦身实践Ubuntu 虚拟机用久了vmdk 文件会像吹气球一样膨胀尤其是 apt 安装包、日志、Docker 镜像这几个大头。先处理系统内部sudo apt clean sudo apt autoremove --purge -y journalctl --vacuum-size100Mapt clean清掉下载的 .deb 包缓存autoremove清掉无用的依赖包journalctl限制日志大小。处理完之后还可以用 VMware 自带的压缩功能回缩虚拟磁盘sudo vmware-toolbox-cmd disk shrink /这个命令会把磁盘上的空闲块标记出来让宿主机回收实际物理占用。最好在快照树里没有多余快照的时候做否则效果会打折扣。压缩期间不要动虚拟机让它跑完就行。7.3 时间同步与双系统残留问题如果你这台虚拟机所在的主机还同时装了 Windows/Linux 双系统你可能会遇到一个诡异的问题虚拟机里的时间总是不对。根源是 Windows 默认把硬件时钟当本地时间Linux 默认当 UTC 时间两个系统来回切会把 RTC 时钟搞乱。最简单的修法是让 Windows 用 UTC以管理员身份打开 CMD 执行reg add HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TimeZoneInformation /v RealTimeIsUniversal /d 1 /t REG_DWORD /f然后重启 Windows。如果不想动宿主机也可以在虚拟机设置 选项 VMware Tools 时间同步里勾选“与主机同步”这样 VMware 会定期把宿主时间强制同步给客户机。日常维护里还有一个我自己的习惯每隔一段时间看一眼快照管理器和磁盘空间不要在虚拟机里塞满日志和中间产物。毕竟虚拟机的意义就是“可以随便折腾随时能重来”保持系统干净快照恢复起来才快。最后再说一句心里话。如果你把这篇读完其实你已经知道怎么把 VMware 里的 Ubuntu 20.04 装得又稳又好用。真不需要虚拟机的时候比如只是跑点命令行工具、写写代码、用用 DockerWSL2 的轻量级优势会很明显。它的离线安装包appx 文件可以通过微软商店网页获取用Add-AppxPackage装进去即可。我个人是两种都留日常命令行秒开需要桌面、需要完整隔离、需要回滚的时候打开这台 VMware 的 Ubuntu 20.04互不添乱。
阅读完成 · 觉得有帮助?