装虚拟机这件事说难真不难但我在帮朋友排查问题的时候发现大部分人在 VMware 里装 Ubuntu 20.04-server 卡住的点其实翻来覆去就那么几个镜像下载太慢、分区方案不敢选、SSH 配好了却连不上、装完系统弹一个 VMware Tools 脚本警告就慌了。这篇文章我把整个流程从头到尾拆开讲从 VMware 新建虚拟机的参数设置到 subiquity 安装器里每一步该怎么选再到装完之后的网络检查和常见翻车现场全部给你过一遍。文章里的操作步骤我都用我实际在工作环境里验证过的方案来写哪个选项选错了会有什么后果我也会直接告诉你。这篇文章面向的是第一次在虚拟机里部署 Linux 服务器版的读者也适合以前只装过 Ubuntu Desktop、没碰过 Server 版的朋友。1. 安装前的准备软件版本、密钥和镜像获取1.1 VMware Workstation 版本选择和序列号问题现在 VMware Workstation 有两个主要版本线16.x 和 17.x。如果你去官网下载默认推荐的是 VMware Workstation Pro 17这个版本界面更现代对 Windows 11 宿主机和较新的 CPU 支持更好新建虚拟机时默认固件类型和硬件兼容级别也更合理。16 和 17 在安装 Ubuntu 20.04-server 这件事上没有任何区别选哪个都行但我建议直接用 17。关于序列号的问题我多说一句。VMware Workstation Pro 被博通收购之后对个人用户已经开放了免费使用下载安装时直接选择个人非商业用途的许可方式就可以正常使用不需要额外找密钥。如果你看到的教程还在让你填密钥那基本都是很早期的商业授权流程。安装包下载之后一路 Next 就能装完唯一一个需要留意的点是如果你的 Windows 系统开启了内核隔离或者 Hyper-VVMware 安装程序可能会提示需要禁用某些 Windows 功能才能正常运行虚拟机这个我后面会在第 5 章的坑里详细讲。1.2 Ubuntu 20.04-server 镜像下载别去官方源硬扛Ubuntu 的官方下载页面在国内网络环境下访问速度不稳定下载一个 1.2GB 左右的 ISO 可能要很久。我的习惯是直接从国内镜像站拿阿里云、清华 TUNA、中科大源都有完整的 ubuntu-releases 目录。阿里云镜像https://mirrors.aliyun.com/ubuntu-releases/20.04/清华 TUNA 镜像https://mirrors.tuna.tsinghua.edu.cn/ubuntu-releases/20.04/中科大镜像https://mirrors.ustc.edu.cn/ubuntu-releases/20.04/进去之后找ubuntu-20.04.6-live-server-amd64.iso这个文件。特别注意文件名里带live-server字样这是 Ubuntu 20.04 系列 Server 版的标准镜像用的是 subiquity 安装器和我后面要讲的交互界面完全对应。不要下载成ubuntu-20.04.6-desktop-amd64.iso那是带图形界面的桌面版文件名区别很明显。顺带说一个细节20.04 是 LTSLong Term Support版本官方支持周期到 2025 年之后还有扩展安全维护。当前最新小版本号是 20.04.6下载时尽量选数字最大的小版本因为累积了所有内核和软件包更新安装完可以减少一部分系统更新等待时间。1.3 安装前需要确认的三个环境项第一是 CPU 虚拟化支持。在 Windows 宿主机上打开任务管理器切到性能选项卡查看 CPU 一栏虚拟化状态必须显示“已启用”。如果没有启用需要进 BIOS/UEFI 打开 Intel VT-x 或 AMD-V。VMware 在处理器设置里也有一个“虚拟化 Intel VT-x/EPT”的勾选项但前提是 BIOS 层面已经打开。这个不确认好后面创建虚拟机时启动 Linux 内核会非常慢甚至直接报错。第二是磁盘空间。Ubuntu 20.04-server 最小化安装占用的空间很小2GB 内存在 20GB 磁盘上就能跑起来但如果你打算装 Docker、编译工具链或者跑几个中间件我建议给虚拟机分配 30GB 到 50GB 比较舒服。这个可以创建完之后随时扩容不用太纠结但初始给太小后面扩展磁盘还要多一步分区操作的麻烦。第三是备份。如果你电脑上已经装了其他虚拟机尤其是配置了复杂网络环境的新建虚拟机前最好在 VMware 的“编辑 - 虚拟网络编辑器”里看一眼当前的网络配置记录一下 NAT 网段的网段号。这样万一新虚拟机网络出问题你能更快定位是 VMware 虚拟网络整体的问题还是单个虚拟机的配置问题。2. 新建虚拟机的关键参数每个选项背后的逻辑2.1 向导中必须留心的三个节点打开 VMware Workstation点击“创建新的虚拟机”。在向导第一页选择“典型推荐”即可不需要进“自定义”。但是第二页有一个非常关键的选项安装来源选择“稍后安装操作系统”不要直接选“安装程序光盘映像文件iso”。这个操作很多新手不理解。如果你在这里直接挂载 ISOVMware 会启动它的 Easy Install 简易安装模式它会在后台自动帮你选择语言、创建用户、设置分区全部用默认参数。问题在于 Easy Install 对 Server 版的支持并不总是能得到你想要的结果比如它可能会强制用 LVM 但没有单独划分 /boot或者自动生成的主机名不是你想要的。选择“稍后安装操作系统”等虚拟机制建好之后在 CD/DVD 设置里手动挂载 ISO这样启动虚拟机时就不会触发 Easy Install安装完全由 Ubuntu 安装器接管你想要什么分区方案、什么用户名都能精确控制。第三个需要留意的节点是虚拟硬盘创建。在向导的“指定磁盘容量”页面把“最大磁盘大小”改成 30GB根据你的需求来并且勾选“将虚拟磁盘拆分成多个文件”。拆分多文件的好处是方便备份和迁移如果你以后用快照功能多文件模式对磁盘空间的回收也更灵活。2.2 硬件配置建议CPU、内存与磁盘虚拟机制建完成后点“编辑虚拟机设置”进入硬件配置页面。这张表是我实测下来最适合 20.04-server 的配置你可以直接抄硬件建议配置理由内存2GB-4GBServer 版最小化安装 2GB 够用跑编译、Docker 建议 4GB处理器2 核以上1 核也能装但安装器进行 LVM 加密、软件包解压时明显偏慢硬盘30GB系统占用约 5GB留足 /var 日志、Docker 镜像、软件缓存空间网络适配器NAT宿主机有网虚拟机就有网适合绝大多数学习场景CD/DVD使用 ISO 镜像文件指定到刚下载的 live-server ISO声卡、打印机移除服务器不需要这些设备移除能减少系统识别硬件的开销很多教程让你把内存拉到 8GB处理器给 4 核这其实没必要。Server 版没图形界面内存占用很低你把资源都给到它宿主机反而会卡。虚拟化不是堆配置装系统跑服务讲究的是够用和稳定。2.3 网络类型NAT 与桥接的取舍VMware 有三张默认的虚拟网络VMnet0桥接、VMnet1仅主机、VMnet8NAT。新建虚拟机默认选的就是 NAT。NAT 模式下虚拟机通过宿主机转发流量访问外部网络宿主机可以访问虚拟机虚拟机和虚拟机之间也能互通但外部局域网内的其他设备无法直接访问这台虚拟机。桥接模式则完全不同虚拟机会直接和宿主机处于同一个物理局域网拥有一个独立的局域网 IP。此时其他设备可以直接访问虚拟机的服务但前提是你的局域网里有空闲 IP且路由器没有做端口隔离。第一次装 Server 版、只想学习 Linux 操作的话用默认 NAT 就好省心。等以后要部署网站或者测试服务再改成桥接或者加一块桥接网卡完全来得及。在虚拟机上添加新网卡的路径是编辑虚拟机设置 - 添加 - 网络适配器。3. 安装器逐项走查subiquity 里的每一步都代表着什么挂载好 ISO 并启动虚拟机等几秒钟会看到一个紫色背景的启动菜单第一项是“Try or Install Ubuntu Server”默认高亮直接回车。然后就是 Ubuntu 20.04 Server 标志性的安装界面终端风格蓝底白字这就是 subiquity 安装器。接下来从语言选择到最终重启我把每一步都拆给你看。3.1 语言与键盘布局第一步是选择语言列表很长直接回车选默认的 English。然后选择键盘布局默认是 English (US)。如果你的物理键盘是带中文输入法习惯的布局可以在这里按 L 打开布局检测工具但没必要在服务器上默认美式布局是最通用的选择。这里说一个很多人问我的点为什么不安中文界面因为 Server 版没有图形桌面环境安装器是终端交互中文字符集在原生 TTY 下显示很别扭而且服务器上的错误日志、配置文件、命令输出标准语言都是英文你用中文界面反而在将来排查问题时对应不上论坛里报错信息的原貌。想图省事用中文最后一定会在某个错误提示面前懵住。3.2 Configure Networking 的实操细节语言选完进入网络配置界面。正常情况下你会看到一张网卡默认启用 DHCP自动获取到一个 IP 地址网卡名前缀通常是 ens33、enp0s3 这种形式。如果你看到网卡没有 IP或者报错未连接先别急可能是 VMware 的虚拟网络服务没起来。想手动配置静态 IP 的话用键盘上下键选中网卡名称回车进入子菜单选 IPv4把 Method 从 AutomaticDHCP改成 Manual然后填子网前缀和网关地址。注意这个界面是在 VMware 的 NAT 模式下配置IP 范围必须和 VMware 虚拟网络编辑器里的 VMnet8 网段一致否则配置了也上不了网。虚拟网络编辑器默认网段是 192.168.xxx.0xxx 是安装 VMware 时随机生成的你在里面看到多少就用多少。其实学习阶段让虚拟机用 DHCP 就够了。你只需要记住这个 IP后面 SSH 登录要用。不过 DHCP 有个问题虚拟机关机再重启后 IP 可能变每次变化之后你需要回 VMware 控制台重新敲ip addr查看新地址。想一劳永逸的话安装完成后可以在系统里设置静态 IP或者直接在 VMware 的虚拟网络编辑器里给这台虚拟机的 MAC 地址绑定一个固定的 DHCP 保留地址这个操作更符合 VMware 环境的习惯。3.3 代理配置与 Ubuntu 归档镜像源国内环境最关键的切换点接着是 Configure Proxy方框直接留空回车跳过。服务器环境如果不涉及 HTTP 代理请求不需要填任何内容。然后就是整个安装流程里最重要的一步Configure Ubuntu archive mirror。默认填的是http://archive.ubuntu.com/ubuntu/这个源从国内访问极其不稳定会在“正在安装系统”的阶段卡很长时间。你需要把它改成国内源。用方向键选中 URL 输入框CtrlA 全选然后删除填上http://mirrors.aliyun.com/ubuntu/或者http://mirrors.tuna.tsinghua.edu.cn/ubuntu/填完之后光标移到 Done 回车。安装器会立刻测试这个源的连通性并拉取软件包索引。如果你用的是清华源且看到证书验证提示选择接受即可。这一步顺利走过去后面安装才会快得起来。改源这个动作建议你无论如何都要做即便你觉得自己网络好。它节省的不是一两分钟而是整个安装过程中所有软件包的下载时间。20.04-server 的 live-server 镜像安装时会根据源重新拉取一部分软件包比如 openssh-server、qemu-guest-agent 这类源慢了真的能把人等崩溃。3.4 Storage 分区方案Use entire disk 和 LVM 的关系网络和源配置完成后进入分区界面。第一次装的人看到这个界面容易慌界面上列出的是 VMware 的虚拟磁盘/dev/sda点击磁盘区域会出现两个选项。Use entire disk不使用 LVM安装器直接把整块磁盘按默认方案分区在 30GB 虚拟磁盘上会自动分出 /boot/efi、/ 和 swap。Use entire disk with LVM先建立 LVM 物理卷和卷组然后在卷组上创建逻辑卷。系统所有分区都在 LVM 逻辑卷上。新手到底选哪个我的建议是直接选Use entire disk with LVM因为 LVM 的最大优势是以后可以动态调整分区大小。举个例子你装完 Docker 之后发现根分区空间不够了如果是 LVM 方案后续在卷组里扩一个逻辑卷很简单如果用的是传统分区方案这块 VMware 虚拟磁盘的剩余空间想并到根分区操作起来就麻烦得多。选完方案之后安装器会显示一个分区摘要点击 Done。它会再弹一次确认框提示损坏磁盘上已有文件之类的警告因为是全新虚拟磁盘这些提示可以直接忽略把光标移到 Continue 确认。3.5 Profile Setup 与 SSH 配置这两步决定了你后面怎么连服务器分区确认完进入 Profile setup这是设置普通用户账号的界面。填写你的名字、服务器名称主机名、用户名和密码。主机名我建议起得短一点比如ubuntu01、dev-server这种因为后面 SSH 登录、终端提示符都会显示这个主机名太长了看着难受。密码强度要求不算高但如果你打算让这台虚拟机暴露在局域网里密码别用太简单的。你还需要记住这里创建的用户有 sudo 权限但安装器默认不让你直接设置 root 密码你想用 root 登录的话装完后要自己执行sudo passwd root来设置。接下来是Install OpenSSH server勾选项。默认是不勾选的这就是很多人装完系统之后发现自己从宿主机里 SSH 连不上的根本原因之一。按下空格键勾选它。在 OpenSSH 配置项里有一个“Import SSH identity from GitHub”的选项如果你有 GitHub 账号可以把自己的 SSH 公钥上传到 GitHub安装时输入你的 GitHub 用户名并回车安装器会自动拉取你的公钥并写入~/.ssh/authorized_keys。这个功能对后面免密登录和自动化操作非常友好。没有 GitHub 账号也无所谓留空跳过即可。后面还有个Install server snaps勾选项默认勾选了里面包含一些常用的 snap 包。我建议把这个勾去掉因为学习阶段用不上还能省一部分安装时间。3.6 安装进度、重启和第一屏信息配置完成后安装器开始写入系统。这个过程持续多久取决于磁盘和源的速度快则两三分钟慢则如果不幸用官方源的话十几分钟。界面上会显示日志滚动你不需要做任何操作。安装完成会提示Installation complete!并让你按回车重启。重启过程中它会提示你移除安装介质直接回车即可VMware 里挂载的 ISO 不会影响启动因为虚拟机的固件启动顺序里硬盘优先。重启之后你会看到 GRUB 菜单、Ubuntu 启动日志最后停在一个黑色终端界面显示login:。输入你之前创建的用户名和密码就进入了系统。到这里安装本身其实已经结束了但整个「可用」还差最后几步。4. 首次登录后的三件套检查网络、SSH 和工具链4.1 先确认 IP 和默认路由登录系统后第一件事敲ip addr查看网卡状态。正常情况下你会看到网卡上有inet 192.168.xxx.xxx/24这样的地址。如果没有 IP说明 DHCP 没拿到地址常见原因是安装器网络配置那一步使用的是手动配置且子网掩码填错了或 VMware 的 NAT 服务没运行。接着敲ip route查看默认路由。输出里应该有一行default via 192.168.xxx.1 dev ens33这个 192.168.xxx.1 是 VMware NAT 模式的网关地址。如果默认路由缺失说明网络配置不完整最稳妥的办法是编辑/etc/netplan/目录下的 YAML 配置文件。Ubuntu 20.04 默认使用 netplan 管理网络它的配置文件在/etc/netplan/00-installer-config.yaml。这个文件在安装时如果选了 DHCP内容是network: ethernets: ens33: dhcp4: true version: 2手动改静态 IP 的配置是这样的network: ethernets: ens33: dhcp4: no addresses: - 192.168.xx.xx/24 routes: - to: default via: 192.168.xx.1 nameservers: addresses: - 223.5.5.5 - 114.114.114.114 version: 2改完执行sudo netplan apply让配置生效。注意 YAML 对缩进要求严格推荐用sudo nano编辑不要用 Tab 键缩进否则会出现解析错误。4.2 从宿主机终端验证 SSH确认虚拟机网络正常后在 Windows 宿主机上打开 PowerShell 或 CMD执行ssh 用户名虚拟机IP如果你之前勾选了 OpenSSH server并且宿主机是 Windows 10 1809 以上版本自带 OpenSSH 客户端这一步应该直接就能连上。如果提示ssh: connect to host ... port 22: Connection refused说明虚拟机上的 SSH 服务可能没启动或者防火墙阻断了连接。先用宿主机 VMware 控制台登录进虚拟机系统执行sudo systemctl status ssh如果状态是 dead 或者 inactive执行sudo systemctl start ssh启动再执行sudo systemctl enable ssh设置开机自启。这步虽然简单但很多人装完发现 SSH 连不上追查半天发现 OpenSSH 服务压根没设开机自启一重启又连不上了。4.3 系统更新与 open-vm-tools 的安装登录系统的另外两件事一件是更新软件源缓存一件是安装 VMware 增强工具。执行sudo apt update sudo apt upgrade -y这一步会把所有软件包升级到源里最新的版本。如果是刚下载的老镜像这一步可能要下载几百 MB 的更新属于正常现象。这里解释一下安装器里的系统只是镜像出厂的版本2022 年之后的 20.04.6 镜像里带的是更新的内核但小版本之间依然有大量软件包更新跑一遍 upgrade 是必须的。VMware 增强工具对应 Ubuntu 里是open-vm-tools。你可以在 VMware 菜单栏看到“虚拟机 - 安装 VMware Tools”这样的选项但它本质上是给没有 open-vm-tools 的系统用的老方案需要挂载 ISO 后手动编译安装过时而且不稳定。Ubuntu 20.04 里直接sudo apt install open-vm-tools -y装完之后重启虚拟机鼠标进出自由、窗口自适应分辨率、剪贴板共享这些功能就能用了。装这个包还能解决很多 VMware 场景下的兼容性问题比如虚拟机内的时钟漂移。5. 安装之后的高频翻车现场排查思路和解决方案5.1 SSH 一直连不上的完整排查链路这是我最常被问到的问题认真的排查顺序应该是这样的。先在宿主机执行ping 虚拟机IP如果 ping 不通问题在网络层检查 VMware 的虚拟网络编辑器里 NAT 模式是否正常如果 ping 通了但 22 端口连不上检查虚拟机内 SSH 服务是否启动如果服务也启动了检查防火墙。Ubuntu 20.04 默认没启用 ufw 防火墙大概率不是防火墙的问题。第二步在虚拟机里执行sudo ss -tlnp | grep sshd如果你看到输出里有0.0.0.0:22或者[::]:22说明 sshd 在正常监听。如果没有输出说明 OpenSSH 服务端真的没装好。碰到这种情况也不用重装系统直接sudo apt install openssh-server -y sudo systemctl enable ssh sudo systemctl start ssh这里有个小区别需要注意openssh-server是服务端ssh这个 unit 是服务别名。在 Ubuntu 20.04 上两个命令都能用但最保险的是用systemctl enable ssh。5.2 “VMware Tools 继续运行脚本未能在虚拟机中成功运行”的解决这是 VMware 虚拟机上装完 Linux 之后弹出率极高的一个警告英文提示很长大意是说 VMware Tools 的安装脚本没有成功完成。出现这个提示的原因很简单Ubuntu 的 open-vm-tools 和 VMware 自带的 VMware Tools 安装包冲突了或者系统里没有正确安装任何 tools 包VMware 菜单栏的“安装 VMware Tools”操作挂载的虚拟光驱里的脚本在 Server 版里跑不起来。解决办法不用去管那个警告框直接在系统里执行sudo apt install open-vm-tools-desktop -y注意如果 Server 版没有图形桌面环境装open-vm-tools就行如果以后装了 X 桌面再补open-vm-tools-desktop。装完后重启虚拟机提示就不会弹了。这个坑的根源在于很多人按照网上老教程去 VMware 菜单里执行 tools 安装脚本而现代 Ubuntu 已经把这个功能发成了发行版软件包方案完全变了。5.3 开机卡在 “A start job is running for wait for network to be configured”系统启动过程中卡住一两分钟然后提示a start job is running for wait for network to be configured最后超时跳过继续启动。这是因为 systemd 默认会等网络完全就绪才继续而 DHCP 获取 IP 的过程在某次开机时比较慢。这个慢一般是虚拟网卡在 NAT 模式下初始化慢导致的不影响使用但很烦人。开启机的等待时间可以关掉编辑这个文件sudo nano /etc/systemd/system/network-online.targets.wants/systemd-networkd-wait-online.service实际上更简洁的做法是直接sudo systemctl disable systemd-networkd-wait-online.service不过这个服务名在不同环境里可能叫NetworkManager-wait-online.service或者systemd-networkd-wait-online.service你自己先systemctl list-unit-files | grep wait-online看一眼实际名称再禁用。禁用的后果是从开机到网络完全联网之间会有一个时间差对于纯粹跑服务的学习环境完全无所谓。5.4 重装系统时提示检测到多个操作系统很多人装完不满意会重新安装一遍然后把 ISO 重新挂载启动安装器会提示检测到磁盘上已有 Linux 系统问是否回滚。别看这个提示就慌它只是确认你是不是真的想覆盖安装。确认后进入分区步骤选择Use entire disk并确认清除数据就可以继续了。但我要提醒一个真正的坑如果你想保留旧系统里的一些数据但重新安装时不小心选择了Use entire disk整个磁盘分区都会被重写。这种重装只是把根系统和数据全部抹平没有后悔药。想保留数据的话在分区界面要选Custom storage layout手动挂载旧分区。初学者没有备份习惯的话最稳妥的方式是重装前在 VMware 里做一次快照出问题随时回滚。5.5 安装器里配置镜像源后出现 TLS 错误这个问题只会在你用 https 格式的镜像源地址时出现因为 subiquity 安装器在安装阶段可能没有完整加载 CA 证书链。解决方案很简单源地址改回 http 格式即可等系统安装完成后镜像源想换成 https 的清华源或者 openEuler 镜像在/etc/apt/sources.list里改好后执行sudo apt update到时候再启用 https 就完全正常了。顺带一提20.04 的 apt 源配置很容易被网上教程带偏写错因为 20.04 和 22.04 的源格式不同。20.04 的/etc/apt/sources.list里组件是main restricted universe multiverse而且还需要security那一段独立配置不能直接照搬 22.04 的格式。你如果后续打算换源直接用sed把archive.ubuntu.com替换成镜像站地址是最不容易出错的方案。5.6 虚拟网络适配器感叹号与宿主机网络异常安装过多个虚拟机之后有些人的 Windows 设备管理器里的 VMware Virtual Ethernet Adapter for VMnet1 和 VMnet8 会出现黄色感叹号。这通常是在 VMware 完全退出或系统休眠后虚拟网卡驱动状态异常导致的。排查方式先在服务管理器里确认 VMware NAT Service 和 VMware DHCP Service 都处于运行状态再把 VMware Workstation 完整退出然后在设备管理器里右键这两个虚拟网卡选择禁用再启用。如果重启网络适配器还不行打开“编辑 - 虚拟网络编辑器”点击“更改设置”需要管理员权限确认 VMnet8 的 NAT 子网设置没问题后执行“还原默认设置”可以重整所有虚拟网络。执行还原默认设置后注意此前所有虚拟机自定义的静态 IP 都要重新检查一遍因为子网网段可能会变。我在实际使用中还有一个习惯安装完成并验证正常后给这个虚拟机做一次快照命名为“initial-system-setup”。这样以后把系统玩坏了恢复快照就能回到刚装完的干净状态。这个习惯治好了我很多次手滑误删配置文件、改坏源地址导致 apt 崩溃之类的毛病强烈建议你也养成。