1. 项目概述:为什么一个“VmWare 安装Ubuntu”还值得专门写一篇长文?
“VmWare 安装Ubuntu【多图预警】”——光看标题,你可能觉得这不过是个入门级操作,网上教程一抓一大把,甚至有些老手看到标题就直接划走。但我在某高校实验室带过三年Linux系统实践课,也给二十多家中小企业的开发团队做过虚拟化环境搭建支持,发现一个扎心的事实:90%以上卡在Ubuntu安装环节的人,根本不是不会点“下一步”,而是根本没搞懂自己到底在安装什么、为什么要这样配置、哪一步出错会导致后续完全无法启动或网络不通。他们照着某篇2018年的博客点完所有选项,结果装完连终端都打不开,或者能进桌面却上不了网,再回头查问题时,连错误日志里那行英文报错是哪个组件抛出来的都分不清。
这个标题里的关键词,“VmWare”不是泛指任何虚拟机软件,它特指Workstation Pro(或Player)这一套成熟、稳定、对Linux内核兼容性极佳的商用虚拟化平台;而“Ubuntu”也不是随便选个ISO就行——当前生产环境最稳妥的是Ubuntu 22.04 LTS(Jammy Jellyfish),它内核为5.15,预装了完整的virtio驱动、open-vm-tools基础服务,且LTS版本提供长达5年的安全更新,比24.04刚发布时的驱动适配稳定性高出一个数量级。至于【多图预警】,不是为了凑数,而是因为VmWare的每一个关键配置界面(比如网络适配器类型选择、固件模式切换、共享文件夹权限勾选)背后,都对应着底层硬件模拟逻辑和宿主机资源调度策略。一张图没截对,新手就可能误选“NAT模式”却没启用DHCP服务,或者开了“桥接模式”却忘了关宿主机防火墙,导致整个网络调试陷入死循环。
所以这篇内容,不是教你怎么“点下去”,而是带你从虚拟硬件层开始重建认知:VmWare本质是在你的Windows/macOS物理机上,用软件方式“造出一台假电脑”,而这台假电脑的CPU、内存、硬盘、网卡,全靠VmWare的hypervisor动态翻译指令、分配资源、拦截I/O请求。Ubuntu安装过程,就是让这个“假电脑”的BIOS/UEFI固件识别到你挂载的ISO镜像,加载内核,探测虚拟设备,再把系统文件写进那块被模拟出来的“SCSI硬盘”。你每点一次“Next”,都在向这个虚拟硬件发送一条不可逆的配置指令。我试过用同一份ISO,在相同配置下,仅因“固件类型”选UEFI还是BIOS不同,安装后grub引导菜单就完全不显示;也见过有人把网络适配器从“VMXNET3”换成“E1000”,结果Ubuntu启动时卡在“Waiting for network to be configured”长达三分钟——这些都不是玄学,全是可解释、可复现、可修正的技术因果链。
适合谁来读?如果你是刚接触Linux的大学生,正为课程实验发愁;如果你是转岗做后端开发的程序员,需要快速搭个Docker测试环境;如果你是运维新人,得在客户现场临时部署一套监控节点——那么这篇内容就是为你写的。它不假设你懂KVM或QEMU,也不要求你背过GRUB命令,但会确保你装完之后,能SSH连进去、能apt update成功、能挂载宿主机文件夹、能调高分辨率不糊屏。接下来的所有章节,都围绕这四个“能”字展开,每一处细节,都是我在真实场景中反复验证过的最小可行路径。
2. 核心设计思路与方案选型解析:为什么不是VirtualBox,也不是WSL2?
2.1 虚拟化平台选型:VmWare Workstation Pro vs Player vs 其他
先说结论:个人学习与轻量开发,用VmWare Workstation Player完全够用;团队协作或需高级功能(如快照链、克隆模板、Vagrant集成),必须上Workstation Pro。很多人纠结VirtualBox,它开源免费,界面也简洁,但实际踩坑率远高于VmWare。原因很实在:VirtualBox的Guest Additions驱动更新滞后,尤其在Ubuntu新内核发布后,常出现显卡驱动编译失败、共享剪贴板失效、时间同步漂移等问题。我曾帮某公司排查一个持续两周的CI构建失败问题,最终定位到是VirtualBox 6.1.38的vboxsf模块与Ubuntu 22.04.3内核5.15.0-91不兼容,导致Jenkins工作区挂载失败。换用VmWare后,open-vm-tools在系统安装时已自动集成,无需手动编译,问题当天解决。
而WSL2虽然启动快、资源占用低,但它根本不是虚拟机——它是基于Hyper-V的轻量级Linux子系统,没有独立的内核、没有完整的systemd、无法运行Docker Desktop(需额外启用WSL2 backend)、更不支持GPU直通或USB设备透传。如果你只是跑Python脚本,WSL2挺好;但你要测Kubernetes集群、要调试内核模块、要连串口设备做IoT开发,WSL2直接出局。VmWare的优势在于它模拟的是“完整PC”,从BIOS自检、PCI设备枚举、ACPI电源管理到SATA控制器初始化,全部按真实硬件逻辑走一遍。这意味着你在VmWare里装的Ubuntu,和你在物理服务器上装的,除了性能略有差异,行为逻辑几乎一致。这种一致性,是工程落地的生命线。
提示:Workstation Player虽免费,但2024年起已停止对Windows 10以下系统的支持;Workstation Pro需付费,但教育邮箱可申请免费许可(某高校实验室每年为学生批量申请)。别贪图破解版——盗版驱动签名被禁用后,Ubuntu启动时会卡在“Loading initial ramdisk”,连恢复模式都进不去。
2.2 Ubuntu版本与镜像选择:LTS不是口号,是血泪教训
Ubuntu官网提供Desktop(带GUI)和Server(纯命令行)两个ISO。很多教程默认推Desktop版,但这是个隐蔽陷阱。Desktop版默认启用GNOME桌面、Snap包管理器、以及一堆后台服务(如whoopsie错误报告、apport崩溃收集),这些在虚拟机里会吃掉大量内存和CPU。我实测过:一台分配2GB内存的虚拟机,装Desktop版后,空闲状态下free -h显示可用内存仅剩300MB,top里gnome-shell和snapd常年占满一个CPU核心;换成Server版,同样配置下,空闲内存稳定在1.4GB,CPU负载低于0.1。
所以我的建议非常明确:除非你明确需要图形界面做UI测试,否则一律选Ubuntu Server 22.04.4 LTS ISO。它的安装流程更精简,不问你“是否安装第三方驱动”(VmWare不需要)、不强制你联网(离线也能装),分区步骤清晰(可选“Use entire disk”一键搞定),且默认启用OpenSSH服务——装完重启,你就能用Xshell或Terminal直接SSH登录,省去后续手动开服务的麻烦。
注意:务必从https://releases.ubuntu.com/22.04/ 下载官方SHA256校验值,用
certutil -hashfile ubuntu-22.04.4-live-server-amd64.iso SHA256(Windows)或shasum -a 256 ubuntu-22.04.4-live-server-amd64.iso(macOS/Linux)核对。我见过三次因下载中断导致ISO损坏,安装到70%时提示“initramfs unpacking failed”,重装三遍才发现是镜像本身坏了。
2.3 虚拟硬件配置:参数不是越大越好,而是要匹配真实需求
很多人一创建虚拟机就狂拉资源:4核CPU、8GB内存、100GB硬盘。结果呢?宿主机卡成PPT,Ubuntu里htop显示CPU使用率长期99%,但实际任务队列空空如也——因为VmWare的CPU调度器在超配时会产生严重争抢。我的经验法则是:按“最小够用+预留20%余量”原则配置。
- CPU:开发测试环境,2核足够。Ubuntu Server 22.04的systemd能完美调度双核,
make -j4编译也不会卡顿。若跑数据库或大数据分析,再升到4核。 - 内存:2GB是底线。Server版最小启动需约1.2GB,留800MB给应用缓冲。别信“1GB也能跑”的说法——
apt upgrade时会因内存不足触发OOM Killer,直接杀掉dpkg进程,导致系统半残。 - 硬盘:推荐25GB起。Ubuntu Server基础系统占约4GB,
/var/log日志、/var/cache/apt/archives缓存、Docker镜像层,三个月就能吃掉10GB。用“Split virtual disk into multiple files”选项,方便后续迁移;格式选“Thin Provisioned”,按需分配空间,避免一创建就占满宿主机磁盘。
最关键的是固件类型:必须选“UEFI”,而非传统BIOS。Ubuntu 22.04默认使用GRUB2+UEFI引导,选BIOS会导致安装后无法启动,或启动时黑屏。VmWare从16.x版本起已全面优化UEFI模拟,安全启动(Secure Boot)可关闭,不影响功能。
3. 核心细节解析与实操要点:从创建虚拟机到首次登录的每一步深挖
3.1 创建虚拟机前的宿主机准备:三个常被忽略的硬性前提
在VmWare里点“Create a New Virtual Machine”之前,请务必确认以下三点,否则后面所有操作都是无用功:
宿主机虚拟化技术已开启:Windows用户需进入BIOS/UEFI,找到“Intel VT-x”或“AMD-V”选项并设为Enabled;macOS用户(M1/M2芯片)注意:VmWare Fusion Tech Preview才支持ARM虚拟化,x86版VmWare无法在Apple Silicon上运行。我曾帮一位设计师远程排查,折腾两小时才发现她MacBook Air M1根本不能装x86版VmWare。
关闭Hyper-V与Windows Sandbox:Windows 10/11默认启用Hyper-V,它会独占硬件虚拟化层,导致VmWare启动时报错“VMware Workstation cannot connect to the virtual machine”。以管理员身份运行PowerShell,执行:
dism.exe /Online /Disable-Feature:Microsoft-Hyper-V /All /NoRestart bcdedit /set hypervisorlaunchtype off shutdown /r /t 0重启后,VmWare才能接管VT-x。
为VmWare分配足够权限:Windows Defender可能会将VmWare进程误判为风险程序,阻止其创建虚拟网卡。需在Defender设置中,将
vmware.exe、vmware-vmx.exe加入“排除项”;同时右键VmWare快捷方式→“属性”→“兼容性”→勾选“以管理员身份运行此程序”。否则安装Ubuntu时,网络配置步骤会提示“Failed to start NetworkManager service”。
实操心得:每次重装系统后,我都会新建一个记事本,把这三条命令和操作截图存好。因为90%的“VmWare打不开虚拟机”问题,根源都在这里,而不是Ubuntu镜像或配置。
3.2 虚拟机创建向导中的关键决策点:五处必须手动干预的位置
VmWare的“New Virtual Machine Wizard”看似傻瓜,但有五个位置必须停下思考,不能一路“Next”:
第2步:Installer Disc Image file (ISO)
点“Browse”选中你下载好的ubuntu-22.04.4-live-server-amd64.iso。重点来了:不要勾选“Copy the installation disc to the virtual machine”!这个选项会把ISO复制一份到虚拟机目录,浪费空间且无必要。直接指向原ISO路径即可。第3步:Virtual Machine Name and Location
名称建议用语义化命名,如ubuntu-dev-2204,而非VM1。位置选在SSD盘(如D:\VMs\),机械硬盘会导致安装过程卡顿。VmWare默认把所有VM存在C:\Users\XXX\Documents\Virtual Machines\,C盘爆满是新手常见悲剧。第4步:Maximum Disk Size
输入25GB后,务必取消勾选“Store virtual disk as a single file”。选“Split virtual disk into multiple files”,单个文件不超过2GB,既方便备份(可rsync增量同步),也避免单文件过大导致云盘上传失败。第5步:Customize Hardware(点击后进入高级设置)
这是核心战场,逐项确认:- Processors:勾选“Virtualize Intel VT-x/EPT or AMD-V/RVI”,这是启用嵌套虚拟化的开关,后续若要在Ubuntu里跑Docker或K3s,必须开。
- Memory:滑块拉到2048MB,下方勾选“Enable virtual memory page file on host”,让VmWare用宿主机页面文件缓解内存压力。
- Network Adapter:关键!选“NAT Mode”,不是“Bridged”。NAT模式下,VmWare自动创建一个私有子网(如192.168.121.0/24),Ubuntu获取192.168.121.x地址,通过宿主机NAT上网,无需额外配置;Bridged模式需宿主机在同一局域网有可用IP,且易受路由器DHCP限制。
- CD/DVD (SATA):状态设为“Connected”,勾选“Connect at power on”,否则启动时读不到ISO。
- Printer & USB Controller:全关。虚拟打印机和USB设备在Server版里毫无用处,还占资源。
完成上述设置,点“Close”,再点“Finish”。此时虚拟机已创建完毕,但尚未安装系统。
3.3 Ubuntu安装过程详解:从启动到登录的12个关键帧
启动虚拟机后,你会看到熟悉的Ubuntu紫色启动画面。全程无需键盘操作,直到出现语言选择界面。以下是必须关注的12个关键帧(每个都配图说明,此处文字描述核心动作):
- 语言选择:选“English”,别选中文——中文输入法在安装器里常失灵,且后续终端乱码风险高。
- 键盘布局:默认“English (US)”,回车确认。
- 网络配置:自动获取IP。若卡住,Alt+F2切到console,执行
sudo dhclient ens33(网卡名可能为ens33或ens160,用ip a查看)。 - 代理设置:留空。国内用户若需加速,可在
http://后填公司代理,但多数情况不需。 - 镜像源:关键!选“Done”跳过,用默认archive.ubuntu.com。国内用户可在此处选“Change Mirror”,输入
http://mirrors.tuna.tsinghua.edu.cn/ubuntu/,但需确认该镜像站同步正常(有时延迟24小时)。 - 文件系统:选“Use an entire disk”,回车。它会自动创建
/根分区(ext4)和swap交换分区(2GB)。 - 确认写入:出现警告“Writing to disk is irreversible”,按Tab键切到“Yes”,回车。这是唯一不可逆操作。
- 用户信息:填用户名(如
devuser),密码务必记牢。Ubuntu Server默认禁用root,所有操作用sudo。 - SSH设置:必须勾选“Install OpenSSH server”。这是远程管理的生命线。
- Featured Server Snaps:全不选。Snap包在服务器环境臃肿且慢,
apt install才是正道。 - 安装完成:进度条满后,提示“Installation complete”,点“Reboot Now”。
- 首次启动:重启后,出现
ubuntu-dev-2204 login:提示符,输入用户名和密码。成功登录即表示安装完成。
常见问题:若登录后黑屏或只显示光标,Alt+Ctrl+F2切到TTY2,执行
sudo systemctl restart gdm3(Desktop版)或检查journalctl -u ssh(Server版)。Server版本就不该有图形界面,黑屏是正常的。
4. 实操过程与核心环节实现:装完之后的七项必做配置
4.1 首次登录后的基础加固:三分钟完成安全基线
Ubuntu Server安装完,系统是裸奔状态。必须立即执行以下加固,否则连apt update都可能被中间人劫持:
更新系统并升级内核:
sudo apt update && sudo apt full-upgrade -y sudo rebootfull-upgrade会处理依赖冲突,比upgrade更彻底。重启后,内核应升至5.15.0-91-generic。配置非root用户sudo免密(可选但推荐):
编辑sudoers文件:sudo visudo,在%sudo ALL=(ALL:ALL) ALL下方添加:devuser ALL=(ALL) NOPASSWD: ALL保存退出。此后
sudo apt install无需输密码,提升效率。启用UFW防火墙:
sudo ufw enable sudo ufw allow OpenSSH # 允许SSH sudo ufw status verbose # 查看状态默认拒绝所有入站,只放行SSH,杜绝暴力破解。
注意:
sudo apt full-upgrade可能耗时10分钟以上,期间不要关机。我习惯在执行前先screen -S upgrade建个会话,防止网络中断导致升级中断。
4.2 网络连通性深度验证:不止于ping通,更要穿透三层协议
很多人以为ping 8.8.8.8成功就代表网络OK,其实远不止。请按顺序执行以下四步验证:
物理层连通:
ip a查看ens33(或类似)网卡是否有inet 192.168.121.x/24地址。若无,执行sudo dhclient ens33。网络层连通:
ping -c 4 192.168.121.2(VmWare NAT网关地址)。不通?检查VmWare网络编辑器里NAT设置是否启用。传输层连通:
telnet 8.8.8.8 53测试DNS端口。若超时,说明DNS未配置。编辑/etc/netplan/00-installer-config.yaml:network: ethernets: ens33: dhcp4: true nameservers: addresses: [114.114.114.114, 8.8.8.8] version: 2执行
sudo netplan apply生效。应用层连通:
curl -I https://google.com。若返回HTTP 200,说明HTTPS代理、证书、DNS解析全部正常。
实操心得:我写了个一键检测脚本
netcheck.sh,放在GitHub Gist里,每次新装系统直接curl -sL gisturl | bash,三秒出报告。脚本会自动执行上述四步,并高亮失败项。
4.3 宿主机-虚拟机文件共享:告别SCP,实现拖拽式互通
VmWare Tools(现为open-vm-tools)已预装,但共享文件夹需手动启用:
- 在VmWare菜单栏,点“虚拟机”→“设置”→“选项”→“共享文件夹”,选“总是启用”。
- 点“添加”→“下一步”,路径选宿主机一个文件夹(如
D:\shared),名称填host-share,勾选“启用此共享”。 - 在Ubuntu中,执行:
此时sudo mkdir -p /mnt/hgfs sudo vmhgfs-fuse .host:/ /mnt/hgfs -o allow_other -o uid=1000/mnt/hgfs/host-share即映射到宿主机D:\shared。为开机自动挂载,编辑/etc/fstab,追加:.host:/ /mnt/hgfs fuse.vmhgfs-fuse allow_other,uid=1000,gid=1000 0 0
注意:
uid=1000必须与你的用户ID一致,用id -u查看。若填错,挂载后文件属主为root,普通用户无法读写。
4.4 显示分辨率与剪贴板增强:让虚拟机不再“糊”和“哑”
Ubuntu Server默认无GUI,但若你装了Desktop版,或后续安装了XFCE等轻量桌面,分辨率常卡在800x600。解决方法:
- 确保open-vm-tools-desktop已安装:
sudo apt install open-vm-tools-desktop -y - 重启显示管理器:
sudo systemctl restart gdm3(GNOME)或sudo systemctl restart lightdm(XFCE) - 进入桌面后,右键桌面→“Displays”,将分辨率调至“Recommended”。
剪贴板同步同理:sudo apt install open-vm-tools-desktop后,无需额外配置,Ctrl+C/Ctrl+V即可在宿主机与Ubuntu间互传文本。
4.5 时间同步精准校准:避免因时间漂移导致SSL证书失效
虚拟机时钟易漂移,尤其宿主机休眠后。Ubuntu 22.04默认用systemd-timesyncd,但精度不够。改用NTP:
sudo systemctl stop systemd-timesyncd sudo systemctl disable systemd-timesyncd sudo apt install ntp -y sudo systemctl enable ntp sudo systemctl start ntp验证:ntpq -p应显示*ntp.aliyun.com(阿里云NTP)或+time1.google.com在列表中,星号表示正在同步。
提示:VmWare设置里“虚拟机”→“设置”→“选项”→“VMware Tools”→勾选“Synchronize guest time with host”,可作为第二道保险,但不能替代NTP。
5. 常见问题与排查技巧实录:那些让你抓狂的“玄学”故障真相
5.1 故障速查表:按现象反向定位根因
| 现象 | 可能原因 | 排查命令 | 解决方案 |
|---|---|---|---|
| 启动卡在“GRUB loading” | UEFI固件未启用,或ISO损坏 | 重启进VmWare BIOS(F2),确认Secure Boot Disabled | 重新创建虚拟机,固件类型选UEFI;重新下载ISO并校验SHA256 |
| 安装时黑屏,光标闪烁 | 显卡驱动未加载(Server版正常) | Alt+F2进console,执行lsmod | grep drm | 若无输出,说明内核未加载drm驱动,换用Ubuntu 20.04 LTS ISO测试 |
| SSH连不上,端口拒绝 | OpenSSH未安装或防火墙拦截 | sudo ss -tlnp | grep :22,sudo ufw status | 重装:sudo apt install --reinstall openssh-server;sudo ufw allow 22 |
apt update超时,域名无法解析 | DNS配置错误或网络未通 | cat /etc/resolv.conf,ping 114.114.114.114 | 按4.2节修改netplan配置,指定nameservers |
共享文件夹/mnt/hgfs为空 | vmhgfs-fuse未运行或权限错误 | lsmod | grep vmw,id -u | sudo modprobe vmhgfs;sudo vmhgfs-fuse .host:/ /mnt/hgfs -o allow_other -o uid=1000 |
5.2 我踩过的三个深坑:说出来能帮你省三天
坑一:VmWare Network Editor里NAT设置被重置
某次Windows系统更新后,VmWare Network Editor里的NAT网关IP(192.168.121.2)被自动改成192.168.171.2,导致所有虚拟机断网。排查时ip a显示Ubuntu获取到192.168.171.x地址,但宿主机根本不存在这个子网。解决方案:打开Network Editor→选NAT模式→点“NAT Settings”→手动改回192.168.121.2,并确保“Use local DHCP service”已勾选。
坑二:Ubuntu启动后CPU占用100%,top显示ksoftirqd/0进程霸榜
这不是病毒,是VmWare的网络驱动bug。Ubuntu 22.04内核5.15与某些VmWare版本(如16.2.3)的vmxnet3驱动存在中断处理缺陷。临时解法:sudo ethtool -K ens33 gro off关闭GRO(通用接收卸载);永久解法:升级VmWare到17.0+,或换用e1000网卡(性能略降但稳定)。
坑三:sudo apt upgrade中途断电,系统变砖dpkg进程被kill后,/var/lib/dpkg/status文件损坏,后续所有apt命令报错“dpkg was interrupted”。别重装!执行:
sudo dpkg --configure -a sudo apt install -f sudo apt update && sudo apt full-upgrade--configure -a会修复未完成的包配置,install -f修正依赖,90%的“半残系统”都能救活。
最后分享一个小技巧:每次成功配置好一台Ubuntu虚拟机后,立即在VmWare里创建一个快照,命名为“clean-base-2204-fully-patched”。后续所有新项目,都以此快照为起点克隆,比重装快十倍,且保证环境纯净一致。这是我带团队时定下的铁律——所有人的开发环境,必须基于同一快照衍生。