ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

虚拟机安装与配置全攻略:VMware与Ubuntu实战排坑指南

虚拟机安装与配置全攻略:VMware与Ubuntu实战排坑指南 从最早的Windows XP时代玩VMware Workstation 5到后来折腾VirtualBox、Hyper-V再到给公司搭KVM虚拟化集群这十几年算是把“虚拟机安装与配置”这条路踩得比较透了。很多人一提到装虚拟机就头疼觉得步骤多、坑也多其实问题大多出在同一个地方没想清楚自己要什么就直接开干。这篇东西我不打算给你念说明书而是把“选型、安装、配置、排坑”这条完整链路串起来讲重点放在那些网上教程不会明说、但实际操作中几乎必踩的点上。不管你是想在Windows上装个Ubuntu做开发环境还是想在虚拟机里搭一套MySQL、Redis、Nginx的本地联调环境这篇应该都能帮上忙。1. 先想清楚你真的需要一台虚拟机吗1.1 裸机、双系统与虚拟机的拆分逻辑很多人第一次接触虚拟机是因为想用Linux又不敢直接格式化硬盘。这时候有个经典的三角选择题物理机装Linux、WindowsLinux双系统、Windows里跑虚拟机。三者各有适用场景选错了后面全是泪。物理机直装Linux适合服务器或者你确定未来几个月都不需要Windows的情况。性能最完整但反悔成本极高你总不能在写代码写一半的时候切回Windows查个网银。双系统适合“两个系统都要用、但不是同时用”的人切换系统需要重启每次开机都要面对GRUB引导菜单时间长了挺烦。虚拟机则完全换了个思路宿主系统不动Linux只是你桌面上一个窗口里的“客人”。如果目标是搭建开发环境、跑数据库集群、测试多节点部署、或者体验不同发行版虚拟机是这三者里最合适的。它带来的隔离性意味着你可以随便折腾搞坏了删掉重来就是宿主毫发无损。我见过不少初学者在物理机上装Linux配坏了一个环境变量导致系统起不来最后只能重装系统这经历一次就够刻骨铭心了。虚拟机最大的价值其实就是“容错”。1.2 主流虚拟化方案横向对比VMware、VirtualBox 与 Hyper-V市面上的桌面虚拟化方案绕不开这三家。很多人问到底哪个好我的建议一直很简单Windows宿主机首选VMware Workstation Pro想免费省事就VirtualBox工作电脑有严格合规要求就Hyper-V。VMware Workstation Pro从2024年下半年开始对个人用户免费了这是个大变化。以前它收几百块一年现在个人用途直接免费用功能还全量开放。它的图形性能、USB设备兼容性、快照管理、Unity模式跨系统融合操作目前依然是桌面虚拟机的天花板。驱动兼容性也做得好安装Linux后基本不用手动折腾显卡和网卡驱动。VirtualBox开源免费胜在轻量但USB设备直通偶尔抽风、3D加速能力偏弱而且对高分辨率屏幕的适配不如VMware细腻。Hyper-V是微软自家方案作为Windows可选功能存在稳定性很好但创建和管理虚拟机的方式更像服务器场景和普通桌面用户的使用习惯有距离而且默认不支持USB直通和VMware比“亲和力”差不少。如果你不是Mac用户那Windows平台下的选择基本不用犹豫。Mac用户当然另说Parallels Desktop体验最好但收费UTM免费也够用——不过那不是本文范畴就不展开了。2. 装虚拟机之前这三件事没做全是白搭2.1 硬件检查CPU虚拟化、内存与磁盘规划在下载任何ISO镜像之前先花五分钟确认你的硬件够不够格。这里有个非常普遍的误解以为虚拟机性能不够是软件问题。实际上90%的卡顿都出在宿主机资源规划上。CPU虚拟化是硬门槛。无论VMware还是VirtualBox都需要CPU支持并启用虚拟化技术Intel叫VT-xAMD叫AMD-V。这是现代CPU的标配功能但某些品牌机出厂默认在BIOS里把它关掉了。检测方法很快打开任务管理器切到“性能”页签点CPU看右下角“虚拟化”那项是否显示“已启用”。如果显示“已禁用”需要进BIOS开启。第二道检查是“基于虚拟化的安全”VBS有些电脑开了内核隔离、内存完整性这会影响第三方虚拟化软件运行。如果你发现VMware启动虚拟机直接蓝屏八成和它有关这个在第6章细说。内存和磁盘是另外两个关键资源。跑一个纯命令行界面的Linux发行版2GB内存勉强够用跑带桌面环境的Ubuntu4GB起步如果你打算在虚拟机里同时起MySQL、Redis、Nginx再加一个Java应用给8GB都嫌少。所以宿主机16GB内存是底线32GB能让你在跑虚拟机和日常办公之间游刃有余。磁盘方面Ubuntu最小安装大约需要10GB我建议至少分配40GB虚拟磁盘因为后续装软件、拉镜像、编译代码都会吃空间。这里有个良心建议VMware创建虚拟磁盘时默认是“拆分”或“单个文件”的选择题我总选“单个文件”磁盘性能略有优势备份和迁移也更直观。2.2 BIOS/UEFI里开启CPU虚拟化如果你确认CPU虚拟化被禁用了就要进BIOS开启。不同品牌电脑入口键不太一样戴尔和联想多是F2惠普是F10ThinkPad是F1再进F12华硕是Del或F2。不确定就在开机时反复按Esc或F12看提示。进入BIOS后路径大同小异找“Advanced”或“Configuration”菜单下的“Intel Virtualization Technology”或“SVM Mode”AMD平台设为Enabled。保存退出重启后再回任务管理器确认。注意一个细节开了VT后如果Windows提示“虚拟化已启用但仍不可用”很可能是Hyper-V或内存完整性占用了虚拟化层需要按第6章的方法关闭冲突功能。之前碰到过一个真实案例电脑BIOS里开了VTVMware还是提示“此主机支持Intel VT-x但Intel VT-x被禁用”折腾半天最后发现是Windows的安全中心里“内核隔离-内存完整性”开着关掉就好了。2.3 镜像准备ISO下载与校验系统镜像建议从官方网站下载别在第三方站点随便下后患无穷。Ubuntu的官方地址是ubuntu.com/download/server或desktopCentOS虽然停止维护了但它的替代品Rocky Linux、AlmaLinux都提供官方镜像习惯CentOS操作方式的可以直接转Rocky。Debian也有官方镜像站。下载ISO后用校验工具确认文件完整性这是很多人会跳过的步骤SHA256值在下载页会给出官方值Windows下用certutil算一遍比对就行命令很简单。certutil -hashfile ubuntu-24.04-desktop-amd64.iso SHA256如果不一致说明下载文件损坏了装到一半必然报错。这个步骤30秒就能做完但能帮你避免“安装过程莫名失败”这种最让人崩溃的问题。毕竟一个Ubuntu ISO动辄4~5GB断点续传或网盘转存都可能导致文件损坏校验一下买个安心。3. 手把手装一台Ubuntu虚拟机以VMware为例3.1 创建虚拟机的关键配置项打开VMware Workstation Pro点击“创建新的虚拟机”选择“典型”安装即可不需要自定义一步步手选。典型安装向导会引导你选择ISO镜像然后自动识别系统类型。这里有个小技巧VMware经常能自动探测到Ubuntu的版本但如果它识别错了手动在下拉列表里改成正确的操作系统版本就行因为不同版本虚拟机的硬件兼容层可能不同。接下去几步是关键配置的取舍固件类型默认是UEFIUbuntu 22.04及以后版本强烈推荐UEFI安全启动也建议打开。处理器数量不用贪多。给2个处理器核心、每个核1个线程对于常规开发足够了。你给虚拟机8个核它也不会变快多少反而拖累宿主机的编译性能。真正的瓶颈通常不在CPU而在内存和磁盘IO。内存分配4~8GB取决于你宿主机总内存。推荐“不超过宿主机总内存的一半”比如宿主机16GB虚机最多给8GB。VMware会提示你推荐的分配范围别低于最小值就行。网络类型默认NAT模式初学者不要动它。NAT模式下虚拟机通过宿主机的网络连接上网对外表现为宿主机的一个进程不占用局域网IP不用额外配置就能上网对新手最友好。磁盘容量默认20GB一般建议提到40GB或60GB。想省空间的话勾选“立即分配所有磁盘空间”之外的那个选项——把虚拟磁盘存储为单个文件动态增长。注意不要在向导里勾“立即分配”那样会一次性占满你物理磁盘的空间而且建立大文件很慢。自定义硬件里还可以调整声卡、打印机等设备。想安静的话把不需要的声卡、USB控制器都移除减少虚拟机启动时对宿主资源的占用。创建完成后先别急着开机还有两个小优化得做右键虚拟机在“虚拟机设置-选项-高级”里把“抓取鼠标和键盘”的优先级调低再把“虚拟机-电源-启动客户机”改成“打开电源时进入固件”方便首次安装时按需调整引导顺序不过这一步新手可以跳过因为ISO引导默认就排在第一位。3.2 安装过程与分区策略启动虚拟机后会看到Ubuntu的GRUB菜单。选择“Install Ubuntu”进入图形化安装界面。语言建议选English或中文看个人习惯键盘布局选English (US)一般不会错。到“Updates and other software”那步我习惯选“Minimal installation”加“Download updates while installing Ubuntu”前者避开一堆用不到的自带软件后者让系统在安装过程中就把补丁打上。分区是新手最容易慌的一步。如果你只是拿来当开发环境直接选“Erase disk and install Ubuntu”即可安装器会帮你自动分区。但如果你想让虚拟机更可控可以选手动分区我的常规方案是主分区挂载到/大小留给30~40GB文件系统ext4。Swap交换分区给2~4GB内存不够时系统不至于立刻崩溃。如果预留了额外空间可以单独分一个/home挂载点这样遇到系统升级或重装时个人文件还在。手动分区看似复杂但这是理解Linux文件系统的一个好机会分一次就懂什么叫挂载点了。自动分区也不是不能用只是后续如果磁盘不够要扩容就稍麻烦一些。安装过程通常在5~10分钟内完成取决于磁盘性能。我用NVMe固态宿主机装Ubuntu 24.04大概六分钟就完了。装完重启把ISO光盘从虚拟机设置里断开避免再次从光盘引导——VMware一般会自动断开但手动确认一下没坏处。3.3 安装VMware Tools与open-vm-tools系统装完的第一件事不是换壁纸而是安装虚拟化增强工具。VMware Tools提供共享文件夹、剪贴板共享、自适应分辨率、更好的鼠标流畅度。在老版本VMware里你需要通过菜单“虚拟机-安装VMware Tools”挂载一个虚拟光驱然后在虚拟机里执行一个perl脚本。现在主流Linux发行版默认就带open-vm-tools直接一条命令就能搞定sudo apt update sudo apt install open-vm-tools-desktop -y如果图形界面没起来也可以只装open-vm-tools不带desktop后缀。装好后重启虚拟机你会发现窗口可以随意拉伸、分辨率自动适配、剪贴板能跟宿主机共享文本了这套体验相当于装好了“虚拟机的显卡驱动”。这个步骤别拖没有它你后面共享文件、复制代码都会非常痛苦。另外需要留意如果你用的Ubuntu 22.04之后的版本snap版本的open-vm-tools偶尔和内核更新冲突出现问题时用apt重装一遍即可。4. 虚拟机里的软件安装与配置核心方法论4.1 Linux环境变量、包管理器与发行版差异虚拟机装好Linux真正的开发环境搭建才开始。很多人直接用搜索引擎搜“某某软件安装教程”然后对着一个Windows教程在Linux上敲命令结果必然是一堆报错。这里需要先建立一套Linux软件安装的思维模型而不是死记命令。Linux装软件的路径和Windows有本质区别。Windows装软件大多是双击exe环境变量由安装器帮你在注册表里处理用户基本不感知。Linux则分成两条路一是用发行版自带的包管理器安装包会自动放到系统目录里同时把可执行文件的路径注册到/usr/bin二是手动解压二进制包或源码编译这时候可执行文件在自定义目录系统并不知道它的存在于是环境变量就成了核心问题。环境变量里最要命的是PATH。它决定了你在终端敲一个命令时shell去哪几个目录找可执行文件。修改方式有临时和永久之分临时执行export PATH$PATH:/your/custom/path只在当前终端会话生效永久配置要写进~/.bashrc或~/.zshrc文件。配置完执行source ~/.bashrc或者重新打开终端才生效。很多教程让人改/etc/profile那是全局生效的做法普通用户改自己的~/.bashrc就够别乱动系统级文件以免影响其他用户。4.2 以JDK、MySQL、Git、Node.js为例的真实配置拿Java开发者最常见的JDK举例。从Oracle或Adoptium下载的Linux x64 tar.gz包解压后你需要编辑~/.bashrc加入两行export JAVA_HOME/home/yourname/jdk-17.0.10 export PATH$JAVA_HOME/bin:$PATH注意顺序$PATH放在后面表示在原有路径的基础上追加JDK路径。然后输入source ~/.bashrc再敲java -version验证。Linux不像Windows那样有“此电脑-属性-高级系统设置”的图形界面改法命令行虽显得原始但写进配置文件以后一劳永逸。MySQL的安装配置完全是另一个故事。在Ubuntu上我强烈建议用apt默认源安装mysql-server而不是从官网下载tar包因为apt会自动处理systemd服务、数据目录、日志轮转等一堆琐事版本也够新。装完以后执行sudo mysql_secure_installation做安全初始化然后使用sudo mysql进入命令行因为新装MySQL默认root用户通过auth_socket插件认证需要先建立应用用户CREATE USER devlocalhost IDENTIFIED BY 你的密码; GRANT ALL PRIVILEGES ON *.* TO devlocalhost; FLUSH PRIVILEGES;这里有个很多人踩过的坑按照Windows教程习惯性赋权root远程登录。虚拟机的端口只暴露在NAT内部本身不算危险但养成“root只限本地登录”的好习惯没有坏处。Git、Node.js、Redis这些相对简单。前者直接sudo apt install gitNode.js推荐用官方提供的NodeSource仓库装或者用nvm管理多版本比从官网下载tar包解压优雅太多。Redis装完默认只监听127.0.0.1如果想让宿主机连虚拟机的Redis得去改/etc/redis/redis.conf里的bind配置并设置密码。这是很多教程忽略的细节也是后端联调时遇到“连不上Redis”的第一大原因。4.3 快照安装配置前必做的“后悔药”有一件事我在任何软件安装教程里都会强调那就是在动手安装大型软件前做一个虚拟机快照。快照相当于把虚拟机当前整个状态冻结保存如果后面配置搞坏了一条命令就能回到这个时间点比任何备份工具都省心。我在给虚拟机装Hadoop、Kafka这类涉及多配置文件、多服务联动的软件集群时几乎是每完成一个阶段就打个快照。比如刚装完系统和open-vm-tools打一个“base”快照。装完JDK和Git打一个“dev-base”快照。配好MySQL和Redis打一个“data-services”快照。这样万一某个环节操作失误恢复快照后只需要重做最后几步前面的成果全保留。VMware的快照按钮就在工具栏上右键虚拟机也可以操作。注意别保留太多层级的快照链长期保留三五个比较合适因为快照越多虚拟机磁盘读写性能下降越明显。还有一个常见误解快照不是备份。如果虚拟磁盘文件本身损坏了快照也救不了你重要数据仍然是备份到宿主机或对象存储里更靠谱。5. 网络配置从虚拟机“能上网”到“能被宿主机访问”5.1 三种网络模式到底怎么选虚拟机装好后大多数人第一个需求就是“能上网”NAT模式默认就能满足。但当你想把虚拟机变成一个可被局域网其他设备访问的服务节点或者想通过固定IP连SSH就需要理解VMware的三种网络模式。NAT模式相当于宿主机给虚拟机建了一个独立的内网虚拟机通过宿主机的IP去访问外部网络外部网络无法直接访问虚拟机。好处是配置零成本坏处是宿主机之外的设备找不到虚拟机。桥接模式则直接让虚拟机像一台独立的物理机一样接入局域网它需要占用一个局域网IP好处是外部设备可以直接访问虚拟机坏处是你得手动分配一个不冲突的IP还受公司网络策略限制。仅主机模式最封闭虚拟机和宿主机直连但不对外访问常用于安全测试或离线环境。日常开发我推荐NAT为主、桥接为辅。在NAT模式下如果需要宿主机访问虚拟机可以设置端口转发。比如虚拟机里有Nginx跑在80端口你在VMware的NAT设置里加一条规则宿主机的8080端口转发到虚拟机的80端口这样浏览器访问http://localhost:8080就能打开虚拟机里的网站。5.2 手动修改虚拟机IP地址不再“随缘”Ubuntu Server 18.04以后用netplan管理网络配置文件在/etc/netplan/目录下通常是01-network-manager-all.yaml或50-cloud-init.yaml。想给虚拟机设一个固定IP比如192.168.80.130需要编辑这个文件network: version: 2 ethernets: ens33: dhcp4: no addresses: - 192.168.80.130/24 routes: - to: default via: 192.168.80.2 nameservers: addresses: [223.5.5.5, 8.8.4.4]这里的ens33是网卡名称以ip addr输出的实际名称为准。via是网关地址在VMware NAT模式下通常是.2结尾具体可以看“编辑-虚拟网络编辑器”里的NAT设置。改完执行sudo netplan apply让配置生效再用ip addr show验证。如果是最小安装的Ubuntu Server可能没有netplan而是systemd-networkd配置文件在/etc/systemd/network/目录下逻辑大同小异。还有一点如果你的虚拟机是通过Cloud-init配置的比如某些云镜像修改IP时要么改Cloud-init的配置文件要么干脆禁用Cloud-init对网络的管理否则重启后IP又会变回去这个坑我在折腾OpenStack镜像时踩过不止一次。5.3 宿主机浏览器访问虚拟机网站与多站点域名配置开发环境下最常见的一个诉求是在Windows宿主机上打开浏览器访问虚拟机里跑的Nginx服务。如果你用的是桥接模式直接访问虚拟机的局域网IP就行如果继续用NAT模式就需要配置端口转发或者用我刚才提到的hosts映射方案。多站点配置是这个话题里更进阶也更有意思的部分。现在的Web项目往往不止一个站点前端一个域名、后端一个域名、管理后台一个域名。在虚拟机里可以用Nginx的多server块实现server { listen 80; server_name dev.myapp.com; root /var/www/myapp-frontend; } server { listen 80; server_name api.myapp.com; root /var/www/myapp-backend/public; }然后在宿主机修改C:\Windows\System32\drivers\etc\hosts文件把自定义域名指向虚拟机IP桥接模式或127.0.0.1NAT加端口转发。这样你在宿主机浏览器里输入dev.myapp.com就能访问虚拟机里的前端服务输入api.myapp.com切到后端服务。配合Nginx的反向代理和负载均衡还能在一台虚拟机里模拟出一整套微服务网关的形态。这套做法的精髓就是本地开发环境尽量贴近生产环境的域名结构避免以后部署时因为路径、跨域问题返工。6. 虚拟机安装与配置中的高频问题排查实录6.1 虚拟机启动蓝屏VT、Hyper-V与内存完整性的三方博弈“虚拟机安装linux蓝屏”和“vmware 驱动启动虚拟机蓝屏”是热搜词里的两个高频问题我自己也踩过。症状都一样VMware界面出现Windows蓝屏通常是SYSTEM_THREAD_EXCEPTION_NOT_HANDLED或VIDEO_DXGKRNL_FATAL_ERROR宿主机直接重启或死机。这大概率不是虚拟机本身的问题而是宿主机Windows的虚拟化功能和VMware冲突了。冲突来源主要是三个Hyper-V、虚拟机平台、基于虚拟化的安全性VBS。Windows 10/11默认情况下Hyper-V是关闭的但如果你之前装过Docker Desktop、WSL2、Windows Sandbox或者手机模拟器Hyper-V相关组件可能已经被开启。Docker Desktop尤其爱干这事。解决方案分两步。第一步打开“控制面板-程序-启用或关闭Windows功能”把以下选项全部取消勾选Hyper-V、虚拟机平台、Windows虚拟机监控程序平台、适用于Linux的Windows子系统如果你暂时不用WSL、Windows沙盒。第二步在“Windows安全中心-设备安全性-内核隔离”里关闭“内存完整性”开关然后重启电脑。这个组合拳能解决绝大多数蓝屏问题。另外还要检查“Windows安全中心-应用和浏览器控制-基于虚拟化的安全性”相关设置某些品牌机预装了安全软件也会占用虚拟化。如果重启后问题依旧试试更新VMware到最新版新版本对Windows 11 24H2的兼容性修复了不少。如果你确实需要WSL2和VMware并存终极方案是升级VMware Workstation到17.6以上版本它从底层兼容了Microsoft的虚拟化栈但即便如此我建议还是按需开启别让两者同时抢虚拟化层。6.2 VMware Workstation报“无法连接到虚拟机”或启动服务失败另一个高频报错是“VMware Workstation无法连接到虚拟机。请确保您有权运行该程序、访问该程序使用的所有目录以及临时目录”。这个提示通常出现在虚拟机非正常关闭后或者VMware相关Windows服务停掉了。排查路径很固定。先按WinR输入services.msc找到“VMware Authorization Service”确认状态是“正在运行”如果不是右键启动并设为“自动”。然后检查用户对工作目录的权限如果虚拟机文件放在系统盘Program Files下权限经常出问题把虚拟机目录移到用户目录下比如D:\VMs或C:\Users\你的用户名\VMs一般就解决了。还有一种情况是上次虚拟机意外关闭后锁文件没释放看虚拟机所在目录里有没有.lck后缀的文件夹有就删掉再重新打开虚拟机电源。这个报错在低配电脑或磁盘满了时也容易出现虚拟机的临时文件写不进去就会一直卡在启动阶段。如果删除锁文件加修复服务都无效打开事件查看器看“Windows日志-应用程序”里的VMware相关错误那里会给出具体是哪个组件起不来。6.3 删除虚拟机目录、U盘启动、安卓模拟器联网等杂项问题群里经常有人问“直接把虚拟机文件夹删了行不行”答案是删除前先关闭虚拟机电源然后在VMware主界面右键虚拟机选“从库中移除”。移除之后还没完需要到文件资源管理器里找到虚拟磁盘文件.vmdk和配置文件.vmx所在的目录手动删除整个文件夹。如果你直接把目录删了VMware库中的虚拟机入口会变成无法打开的“幽灵”右键删除更干净。“VMware用U盘启动PE”这类问题本质上是把物理U盘接到虚拟机里的操作。在VMware菜单选“虚拟机-可移动设备-连接”如果你的U盘没在列表里需要先在宿主机弹出U盘再连接因为VMware对正在被占用U盘的处理不好。连接后重启虚拟机按F2进BIOS把USB设备设为第一启动项即可。另外也可以先把PE镜像写入一个虚拟磁盘文件然后用DiskGenius之类的工具去操作这块属于进阶玩法涉及对虚拟磁盘格式的理解。Android模拟器联网问题也常出现。如果你用的是VMware里套Android-x86默认NAT模式下经常出现能连局域网但无法打开网页的情况多半是DNS配置问题把DNS改成223.5.5.5或者关闭IPv6试试。如果模拟器需要和宿主机局域网内的真机联调建议改用桥接模式并手动指定IPAndroid系统在这种模式下联网更稳定。7. 最后分享一点实际体会玩虚拟机这么多年我最深的感触是虚拟机安装与配置这件事最大的难点不在于每个步骤有多复杂而是很多人容易在一个小环节卡住然后越试越乱最后干脆放弃。其实按今天的工具成熟度只要硬件没硬伤、镜像没损坏、虚拟化冲突处理干净装机成功率接近百分之百。真正拉开差距的是后面那些软件环境编排、网络规划和快照管理策略。我个人的习惯是每建一台新虚拟机都会刻意练习一遍“从头到尾手动配一遍”而不是用克隆或模板的方式批量复制。这个过程虽然慢但对系统目录结构、环境变量、服务管理、网络配置的理解会越来越深。等哪天你被人问到“虚拟机里Nginx起不来怎么办”脑子里能立刻蹦出日志路径、权限坑、SELinux开关这几个排查方向那说明你已经出师了。希望这篇内容能帮你少走些弯路在“安装与配置虚拟机”这条路上一次就顺顺利利走到你想要的终点。
返回列表