新闻详情

新闻详情

首页 / 资讯中心 / 详情

VMware 安装 Ubuntu 虚拟机:配置、Tools、SSH 与开发环境避坑

发布时间:2026/9/30 4:00:04来源:尧图网络
VMware 安装 Ubuntu 虚拟机:配置、Tools、SSH 与开发环境避坑
1. 为什么把 Ubuntu 装进 VMware 里而不是直接干掉 Windows先把最核心的问题说清楚用 VMware Workstation 跑 Ubuntu本质上是在你已有的系统里套出一台虚拟电脑。这台虚拟电脑有自己的虚拟 CPU、虚拟内存、虚拟硬盘和虚拟网卡Ubuntu 在里面以为自己独占了一台机器实际上它用的都是宿主机借出来的资源。这个方案能火这么多年原因很朴素——它把试错成本降到了几乎为零。我见过太多人一上来就搞双系统分区的时候手一抖把 Windows 的引导分区覆盖了最后抱着笔记本去维修店。也有人把 Ubuntu 装到移动硬盘里结果换台电脑就起不来。虚拟机的最大价值不是性能而是随时删掉重来。你折腾坏了删掉虚拟磁盘文件二十分钟后又是一台干净的系统。这一点对于要学 Linux 命令、要跑嵌入式工具链、要验证某个软件在特定版本下的行为的人来说比什么性能优势都重要。这篇文章面向的是之前没接触过虚拟机的人也照顾那些装过一次但被各种报错劝退的人。我会把 VMware 侧的每个参数为什么这么设、Ubuntu 侧的每个选项意味着什么讲透再把安装完成后最容易卡住的那几个环节——tools 装不上、SSH 连不通、中文输入法打不出字、gcc 编译失败——一个个拆开说。你看完之后应该能独立从零搭出一台可用、好用、能长期用的 Ubuntu 开发环境。1.1 三种常见方案的真实取舍先把选择摆到台面上我给一个我自己用下来觉得最接近实际的对比。所谓哪个好从来不是绝对的取决于你要拿这台 Ubuntu 做什么。方案启动方式性能损耗隔离性适合场景主要代价VMware 虚拟机宿主系统内开窗口CPU 约 5%~15%磁盘 IO 更明显高独立硬件抽象学习、开发、测试、跑工具链显卡直通难大型游戏和重度图形渲染吃亏双系统开机引导菜单选择几乎无损耗物理隔离但共享引导长期主力使用、需要完整硬件性能分区有风险切换系统要重启移动硬盘 / U盘系统BIOS 选择启动设备受 USB 接口带宽限制物理隔离随身携带个人环境接口速度差换机器可能驱动异常如果你的目标是我想学 Linux顺便跑跑 Python 和 Docker虚拟机是性价比最高的。如果你的目标是我要在这台机器上做深度学习训练显卡要跑满那虚拟机的显卡透传会让你很头疼双系统反而更省事。我个人的习惯是日常开发、写脚本、验证编译行为全在虚拟机里做因为我可以为每个项目开一台独立的机器互不污染。还有一个细节值得说虚拟机可以随时打快照。这意味着你可以在装完系统什么都没配的时候存一个点在装完开发环境的时候再存一个点。后面手滑改了某个配置文件导致系统起不来回滚只需要几十秒。双系统做这件事要靠 Clonezilla 之类的工具整盘备份麻烦得多。1.2 开装之前的三分钟硬件体检很多人装到一半发现卡得要死问题往往不在 VMware而在宿主机资源本来就不够分。这里给几个我自己习惯先确认的指标。内存是第一个硬门槛。宿主 Windows 本身要吃掉 4~6GB浏览器再开一堆标签页又是 3~4GB。如果你只有 8GB 内存给虚拟机分 4GB 之后两边都会开始频繁使用页面文件体验非常糟。我的建议是宿主 16GB给虚拟机 4~6GB日常写代码、跑 Docker 够用宿主 32GB给虚拟机 8~12GB可以比较舒服地跑数据库、容器和 IDE宿主 8GB给虚拟机最多 2~3GB而且建议装 Ubuntu Server 版本别装带桌面的硬盘同样要有余量。Ubuntu 桌面版官方最低要求是 25GB但那个数字只是能装进去实际用两周你就发现不够了。我给你算一笔账系统本体约 8~10GB加上常用开发工具build-essential、Python、Node、Docker 镜像大约再吃 8~15GB再加上你自己的工作文件和快照占用的空间。所以虚拟磁盘我一般直接给 80GB并且选择拆分成多个文件因为它不会一次性把 80GB 全部吃掉而是用多少涨多少。物理上只要保证宿主机所在分区还有 60GB 以上空闲就没问题。CPU 这一项要确认虚拟化支持打开了。绝大多数近十年的机器都支持 Intel VT-x 或 AMD-V但很多品牌机出厂默认是关闭的。判断方法很简单打开任务管理器的性能标签页看 CPU 那一栏右下角有没有虚拟化已启用。如果显示已禁用你需要重启进入 BIOS/UEFI找到类似 Intel Virtualization Technology、VT-x、SVM Mode 这样的开关打开它。这一步不做VMware 装 64 位系统时会直接报错或者在启动时提示此主机支持 Intel VT-x但 Intel VT-x 处于禁用状态。顺带确认一下宿主系统是什么架构。现在很多轻薄本用的是 ARM 处理器这类机器上传统版 VMware Workstation 是用不了的需要换成对应 ARM 平台的产品。在 Windows 上可以按Win R输入msinfo32查看系统类型Linux 上执行uname -m输出x86_64就是常见的 64 位 Intel/AMD 平台输出aarch64就是 ARM。Ubuntu 里查看系统架构用这个命令比看界面信息更靠谱。2. 安装包和镜像版本选择藏着的坑准备工作看着简单其实是整条链路里最容易踩坑的一段。选错版本后面要么是 tools 装不上要么是输入法配不起来要么是某个开发工具链的版本对不上。2.1 VMware 侧的版本与授权怎么处理正路VMware Workstation 现在归 Broadcom 旗下主流版本是 17.x 系列。我的建议是直接用 17 的最新小版本不要贪图老版本更稳的说法。老版本在新内核、新 CPU 上可能出现兼容问题尤其是宿主机用的是比较新的 Windows 11 时。下载渠道认准官方站点在 Broadcom 的支持页面里找 Workstation 产品线注册账号后可以获取安装包。关于授权这里说句实在话Workstation Pro 目前对个人使用提供了免费许可你在官网注册并申请之后就能拿到合法的个人使用授权。我不建议去网上搜所谓的通用密钥这类信息不仅来源不明而且版本更新后大概率失效装到一半弹出授权提示会很扫兴。老老实实走官方流程虽然注册多花五分钟但后续升级、打补丁都不用担心。卸载和重装的时候有个工具值得记一下VMware 官方提供的清理工具cleanup tool。有时候安装程序卡在正在配置或者卸载后残留了虚拟网卡、服务项导致新版本装不上去这时候用清理工具彻底扫一遍比手动删注册表靠谱得多。我用过一次是因为反复安装卸载之后网络适配器里堆了好几个 vmnet1、vmnet8 的幽灵设备导致虚拟机拿不到 IP。清理之后就恢复正常了。2.2 Ubuntu 版本选 LTS 还是最新版这个问题我被问过无数次答案很明确除非你有特殊需求一律选 LTS 版本。LTS 是长期支持版桌面版提供 3 年支持服务器版 5 年。现在常用的两个选择是 22.04 LTS 和 24.04 LTS。24.04 的优点是新内核版本新对新硬件的驱动支持更好GNOME 桌面也更新。缺点是刚发布那阵子生态适配会有些滞后某些第三方软件仓库还没提供对应版本的包。22.04 的优点是成熟几乎所有教程和第三方安装脚本都是围绕它写的遇到问题更容易搜到答案。如果你是要装搜狗输入法、要跑某个特定版本的深度学习框架22.04 会更省心一些。还有一个选择是桌面版还是服务器版。这个判断标准很简单你需不需要图形界面。如果你只是用来跑服务、写代码、做编译其实服务器版更合适资源占用小很多而且后面可以通过 SSH 从宿主机或者其他机器连过去操作。但如果你是第一次接触 Linux我强烈建议先装桌面版因为图形界面能极大降低学习门槛你能看见文件管理器、能打开浏览器查资料心里踏实。镜像文件从官方渠道或者国内镜像站下载。国内镜像站的下载速度通常快很多尤其是晚上高峰期。下载完成后一定要做一次完整性校验因为镜像文件普遍在 4~6GB下载过程中出现几个字节错误完全有可能而这种错误在安装到一半的时候才会暴露出来非常浪费时间。2.3 镜像校验和虚拟磁盘的存放位置Windows 上校验 SHA256 可以用 PowerShellGet-FileHash .\ubuntu-24.04-desktop-amd64.iso -Algorithm SHA256Linux 或 macOS 上直接用sha256sum ubuntu-24.04-desktop-amd64.iso把输出的哈希值和官网镜像页面上公布的值逐位比对字符完全一致才算通过。另外一个容易被忽略的点是虚拟磁盘的存放位置。VMware 默认会把虚拟机文件放在用户目录下比如C:\Users\你的用户名\Documents\Virtual Machines\。如果你的系统盘是固态硬盘但容量紧张建议在新建虚拟机的时候手动改到容量更大的数据盘上。不过要注意虚拟机放在机械硬盘上会有明显的卡顿感尤其是 apt 安装软件的时候磁盘 IO 会成为瓶颈。所以优先级是固态硬盘优先容量其次。3. 新建虚拟机每个参数背后的逻辑打开 VMware点创建新的虚拟机你会看到两种模式典型配置和自定义配置。很多人图省事选典型结果磁盘类型、网络模式、固件类型全被默认值决定后面出问题还得回头改。我的建议是第一次装选自定义一步一步看清楚每个选项在做什么。3.1 典型配置与自定义配置差在哪典型配置其实已经把大部分参数替你定了它会自动识别你要装的系统类型、自动分配内存和 CPU、自动创建 SCSI 或 SATA 磁盘、默认使用 NAT 网络、默认开启 UEFI 或 BIOS取决于版本。这些默认值不能说错但它是为了让最多的人能装成功而不是让每个人用得舒服。自定义配置会依次问你这些问题硬件兼容性版本、是否挂载安装镜像、客户机操作系统类型和版本、虚拟机名称和位置、固件类型、处理器数量和核心数、内存大小、网络类型、IO 控制器类型、磁盘类型、磁盘容量和拆分方式。听起来繁琐但每一项都会影响后面用起来的手感。硬件兼容性版本建议选最新的除非你需要把虚拟机文件拷到一台老版本的 VMware 上运行。这个参数决定了虚拟硬件的规格上限选低了后面改不了只能重建虚拟机。客户机操作系统类型一定要选对而且版本要选准比如Ubuntu 64 位。VMware 会根据这个选择加载不同的优化配置比如推荐的磁盘控制器类型、是否需要安装特定驱动。选错了虽然也能装起来但性能可能不是最优。3.2 CPU、内存、磁盘、网络四大件怎么定处理器配置这一页你会看到处理器数量和每个处理器的核心数量两个输入框。这里有个细节总核心数等于两者相乘。比如处理器数量 2、每处理器核心 2虚拟机看到的就是 4 核。那到底该填什么我的经验是宿主机是 4 核 8 线程给虚拟机 2 核宿主机是 8 核 16 线程给虚拟机 2~4 核宿主机是 16 核以上给虚拟机 4~8 核不要把所有核心都给虚拟机。因为宿主机自己还要运行 VMware 的界面、后台服务以及你本来的系统。更不要设置处理器数量大于物理 CPU 插槽数那会导致 VMware 警告并且影响调度效率。简单说把处理器数量保持为 1只调整每个处理器的核心数量是最不容易出错的做法。内存分配我在前面算过了这里再补一句宁少勿多。给得太多宿主机会开始把内存换出到磁盘整体变慢给得太少Ubuntu 桌面版会卡到没法用。Ubuntu 桌面版跑得比较舒服的门槛是 4GB如果要开 IDE 和容器8GB 起步。磁盘这一页有两个关键选择。一是将虚拟磁盘存储为单个文件还是拆分成多个文件。单个文件在大量小文件读写时性能略好适合放在固态硬盘上拆分成多个文件便于迁移和拷贝单个文件不超过 2GB适合要经常把虚拟机搬到移动硬盘的人。二是磁盘容量我前面建议 80GB并且不要勾选立即分配所有磁盘空间勾了的话它真的会立刻占用 80GB 物理空间。网络类型这一页是后面 SSH 能不能连通的关键我放到第 8 节展开讲这里先记住三种模式的定位桥接相当于让虚拟机和宿主机一样直接接入你所在的局域网NAT 是虚拟机藏在宿主机后面共享上网仅主机是虚拟机和宿主机组成一个封闭的内网不通外网。3.3 固件类型、安全启动和 3D 加速固件类型有 BIOS 和 UEFI 两个选项。新版本的 VMware 默认推荐 UEFI因为它支持安全启动、GPT 分区表、更快的启动速度。如果你装的是 22.04 或 24.04用 UEFI 完全没有问题。唯一需要注意的是勾选安全启动之后某些需要签名的内核模块会装不上如果你后面要折腾显卡驱动或者自己编译内核模块可以把这个勾去掉。还有一个容易被忽略的选项在显示器设置里叫加速 3D 图形。开着的确能让桌面动画更流畅但在某些显卡驱动组合下会导致 Ubuntu 进入桌面后黑屏或者花屏。我遇到过好几次这种情况安装过程一切正常重启进入系统后只有一片黑鼠标能动什么也点不了。最后的解决办法是在虚拟机设置的显示器里把 3D 加速关掉重启就正常了。所以我的建议是先关掉它把系统装完确认稳定之后再尝试打开。虚拟机创建完成后先别急着开机检查一下编辑虚拟机设置里的几个地方CD/DVD 是否指向了正确的 ISO 文件并且勾选了启动时连接USB 控制器是否开启后面要用 U 盘或者加密狗的时候有用声卡和打印机这类用不上的设备可以先移除能省一点资源。4. Ubuntu 安装全过程实录参数配好点开机接下来就是 Ubuntu 自己的安装向导了。这一步的选项不多但有几个地方值得展开说。4.1 启动、语言与更新选项第一次启动会先出现 GRUB 引导菜单有两个选项Try or Install Ubuntu和Ubuntu (safe graphics)。如果你的宿主机显卡比较新或者前面遇到的启动异常直接用 safe graphics 那个选项它用的是兼容性更好的显示驱动。进入安装向导后第一页选语言。这里有个小建议安装时先选 English装完系统之后再改中文。原因是安装过程中的分区、磁盘命名这些信息用英文显示更清晰不容易误操作而且有些中文界面下的路径显示会出现方块字符。语言改成中文是安装完成后在设置里改的事几秒钟。键盘布局直接选默认的 English (US) 就行中文键盘的物理布局和这个基本一致。如果你用的是特殊布局的键盘可以点Detect Keyboard Layout让它自动识别。接下来会问你要不要更新安装程序和是否安装第三方驱动。这两项我的建议是都不要勾。原因很实在——勾了之后安装程序会去联网下载一是慢二是如果网络不通会直接卡死或者报错。第三方驱动里主要是无线网卡和显卡的闭源驱动虚拟机里根本用不到。装完系统之后需要什么再单独装。4.2 分区自动还是手动这是整个安装过程里唯一需要动脑的地方。Ubuntu 提供了两个选项清除整个磁盘并安装以及手动分区。因为这是在虚拟磁盘里操作不会影响你的宿主机所以两个方案都很安全。选清除整个磁盘并安装的话安装程序会自动创建 EFI 分区、根分区和可能的交换分区简单可靠。对于第一次装、只想有个能用的系统的人来说这是最省事的选择。如果你打算长期使用或者想体验一下手动分区的思路可以选Something else自己来。我给一个我自己常用的方案假设虚拟磁盘是 80GB挂载点建议容量类型用途说明EFI 分区512MB~1GBFAT32UEFI 启动必需格式化即可交换分区 swap4~8GBswap area内存不足时兜底也用于休眠根分区 /40~50GBext4系统和软件都在这里家目录 /home剩余全部ext4你的文件、配置、下载的东西这样分的好处是重装系统的时候只需要格式化//home里的个人数据可以保留。这个习惯一旦养成以后折腾系统的心理负担会小很多。注意 swap 分区的大小不是必须等于内存大小Ubuntu 桌面版现在默认用的是 swap 文件而不是分区手动分一个 4GB 到 8GB 的分区就够日常用了。注意手动分区的界面上有个容易点错的地方——Device for boot loader installation。选成 EFI 分区所在的磁盘即可不要选成某个分区本身。选错了会导致开机找不到引导需要重新走一遍安装流程。4.3 账户、时区与第一次重启分区确认之后向导会让你填写用户名、计算机名、密码。这里有个细节密码不要设得太简单因为后面用到 sudo 的场景非常多而且如果你打算开 SSH弱密码是很不安全的。另外Ubuntu 默认不允许 root 直接登录日常操作靠 sudo 提权这是官方推荐的做法不用去改成允许 root 登录。时区选上海即可。这一步影响系统时间和文件时间戳虽然虚拟机可以同步宿主机时间但时区选错会导致日志时间看着很奇怪。安装过程大约 10~25 分钟取决于你的磁盘速度。安装完成后会提示重启这时注意一件小事重启的时候如果又进了安装界面说明 ISO 还挂在虚拟光驱里并且启动顺序优先从光驱启动。解决办法是关机在虚拟机设置里把 CD/DVD 的连接取消勾选或者进 BIOS 调整启动顺序。第一次进入系统建议先做两件事。一是打开终端执行系统更新sudo apt update sudo apt upgrade -y二是确认一下虚拟机的网络和分辨率是否正常。如果分辨率很奇怪窗口大小调整后桌面不跟着变那说明 tools 还没装这就是下一节的内容。5. VMware Tools 与桌面体验调优系统装完了不代表能舒服地用。分辨率自适应、剪贴板复制粘贴、宿主机与虚拟机之间拖拽文件、共享文件夹这些功能全都依赖 tools。这一节是踩坑最集中的地方。5.1 open-vm-tools 和官方 VMware Tools 怎么选VMware 菜单里有个安装 VMware Tools点了之后会把一个虚拟光盘挂到系统里里面是官方的安装脚本。但 Ubuntu 从 16.04 开始就在官方源里提供了open-vm-tools它是开源的实现跟系统集成得更好更新也走 apt 管理。我的建议是直接用官方源的版本除非你有特殊需求sudo apt update sudo apt install open-vm-tools open-vm-tools-desktop -y注意那个-desktop后缀它包含了图形界面相关的支持只装open-vm-tools的话分辨率自适应和剪贴板共享是用不了的。装完之后重启一次虚拟机绝大多数功能就生效了。那什么时候需要官方的 VMware Tools比如你在用很老的发行版或者需要调用一些 open-vm-tools 没有实现的接口。对 Ubuntu 22.04 和 24.04 来说open-vm-tools 完全够用。5.2 继续运行脚本未能在虚拟机中成功运行到底卡在哪这个报错出现在官方 Tools 的安装流程里。点击安装 VMware Tools之后你需要在 Ubuntu 里挂载那个虚拟光驱把压缩包解出来然后运行安装脚本。脚本跑到一半抛出类似继续运行脚本未能在虚拟机中成功运行如果您在此虚拟机中配置的提示就说明中间某个环节失败了。我梳理了一下这条链路上最常见的三个断点。第一个断点是光驱没挂上。你在 VMware 菜单点了安装但要确认虚拟机设置里 CD/DVD 设备的状态是已连接。有些版本的界面里点是点了实际只是把 ISO 挂载了光驱本身还是断开状态。在 Ubuntu 里用lsblk看有没有出现一个光盘设备如果没出现回到设置里把已连接勾上。第二个断点是解压路径的权限。如果直接在图形界面里双击压缩包解压到某个目录可能因为权限问题导致脚本无法写入。正确的做法是在终端里操作先切换到一个你有写权限的目录解压再用 sudo 运行脚本。第三个断点也是最常见的一个其实是内核头文件没装。官方 Tools 需要编译内核模块如果没有对应的头文件编译就会失败脚本报出的就是那句继续运行脚本未能成功运行。解决办法是先装上编译环境和头文件sudo apt install build-essential linux-headers-$(uname -r) -y这里$(uname -r)会展开成当前正在运行的内核版本号这个顺序很重要——必须装和当前运行内核版本匹配的头文件。我曾经遇到过一次怎么装都不对的情况最后发现是系统更新之后内核版本升了但没重启uname -r显示的还是旧内核装的头文件自然对不上。重启一次问题消失。提示如果你只是想解决分辨率、剪贴板这些显示问题完全没必要跟官方 Tools 较劲直接用open-vm-tools-desktop是更省时间的路径。5.3 分辨率、剪贴板、拖拽和共享文件夹装完 tools 重启之后桌面应该会自动适配窗口大小。如果还没有可以在显示设置里手动选一个分辨率或者执行sudo systemctl restart open-vm-tools剪贴板共享需要在虚拟机设置里开启客户机隔离下的两个选项启用拖放、启用复制粘贴。这两个选项默认是开的如果你发现复制不了去那里检查一下。共享文件夹是另一个高频需求。配置路径是虚拟机设置里的选项标签页找到共享文件夹选择总是启用然后添加一个宿主机上的目录。配置好之后Ubuntu 里可以在/mnt/hgfs/下面看到它。如果这个目录是空的通常是因为 open-vm-tools 没有正确挂载可以手动执行sudo vmhgfs-fuse .host:/ /mnt/hgfs -o allow_other想让这条命令开机自动生效可以写进/etc/fstab。不过我个人的习惯是与其折腾共享文件夹不如直接用 SSH 或者 SCP 在宿主机和虚拟机之间传文件速度更快配置也更简单。共享文件夹在传大量小文件的时候会有明显的性能问题。6. 中文输入法与日常可用性配置Ubuntu 桌面版默认装了中文语言支持之后通常自带一个拼音输入法但那个输入法的词库和联想能力实在一般。很多人会去装搜狗输入法这一步踩坑的概率相当高。我把几条路线都说说。6.1 输入法的三条路线和各自的坑第一条路线是用系统自带的 IBus 拼音。在设置里把输入源添加为中文智能拼音就能用。优点是零配置、和系统集成好、不会导致登录界面卡死。缺点是词库弱长句输入体验一般。我的建议是如果你只是偶尔打几个中文字比如在浏览器里搜个东西用这个就够了。第二条路线是 Fcitx5 加拼音。这是目前社区里口碑比较好的方案sudo apt install fcitx5 fcitx5-chinese-addons fcitx5-frontend-gtk3 fcitx5-frontend-qt5 -y装完之后需要在语言支持里把键盘输入法系统从 IBus 切换成 fcitx5然后重新登录。切换之后要配置环境变量在~/.xprofile或者/etc/environment里加上export GTK_IM_MODULEfcitx export QT_IM_MODULEfcitx export XMODIFIERSimfcitx这三个变量是让图形程序知道该找哪个输入法框架。漏配的典型症状是浏览器里能打字终端或者某个 IDE 里打不出中文。第三条路线是搜狗输入法。它的输入体验确实好但它是基于 Fcitx4 时代的组件构建的在新系统上经常需要额外装兼容库而且依赖的 Qt 版本和系统自带的不一致时会出现登录界面黑屏、输入法图标不显示、候选框乱码等一系列问题。我个人的态度是除非你对搜狗的词库有强烈依赖否则 Fcitx5 加拼音已经完全够用了省下的排错时间够你敲几千行代码。6.2 中文字体、时间同步和截图装完系统之后如果发现某些界面显示方块或者中文字体很丑可以装一套常用字体sudo apt install fonts-noto-cjk fonts-wqy-microhei fonts-wqy-zenhei -y时间是另一个容易出问题的点。虚拟机从挂起状态恢复之后系统时间可能会漂移导致 apt 报证书过期、git 提交时间错乱。检查一下时间同步服务状态timedatectl status如果显示System clock synchronized: no把 NTP 同步打开sudo timedatectl set-ntp true截图工具方面Ubuntu 默认的截图快捷键是 Print Screen但功能比较基础。我习惯装一个flameshot标注和局部截图都方便。这个属于个人偏好装不装都行。6.3 常用软件怎么装微信在 Linux 上一直是个麻烦事。目前有几条路一是用社区维护的第三方 Linux 版客户端安装简单但功能会落后于 Windows 版二是用网页版功能有限三是用兼容层运行 Windows 版本配置复杂且不一定稳定。我的建议是如果你只是想收个消息用网页版或者手机端就够了如果要传文件、发朋友圈还是别指望 Linux 版能完全替代。浏览器方面Firefox 是系统自带的Chrome 可以通过官网下载 deb 包安装sudo apt install ./google-chrome-stable_current_amd64.deb注意前面的./不能省这是让 apt 把参数当成文件路径而不是包名。这个细节坑过不少人。7. 开发环境换源、工具链和容器的那些坑如果你装 Ubuntu 是为了写代码这一节是真金白银的经验。7.1 换国内源和 apt 提速默认的软件源在国外apt 安装速度可能只有几十 KB 每秒。换成国内镜像站之后速度能提升一个数量级。操作方式是编辑/etc/apt/sources.listUbuntu 24.04 用的是/etc/apt/sources.list.d/ubuntu.sources这种新格式把里面的域名替换成镜像站的域名。改之前先备份sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak改完之后执行sudo apt update如果出现大量 404 或者 GPG 签名错误说明源地址和你的发行版代号不匹配。发行版代号可以用这个命令确认lsb_release -cs比如 24.04 的代号是 noble22.04 是 jammy。镜像站上的目录名要和这个对应。7.2 gcc、cmake 装不上怎么排查ubuntu安装gcc失败是个很典型的搜索词我遇到过几种不同的原因。第一种是依赖没配齐。装gcc本身一般不会失败但装build-essential这个元包的时候会拉一堆依赖如果其中某个依赖的源地址不可达整个安装就中断了。解决思路是先把源换好、apt update成功之后再来装。第二种是磁盘空间不足。这个报错有时候很隐晦可能在下载阶段就失败提示无法写入。用df -h看一眼根分区使用率如果是 90% 以上先清理一下sudo apt clean sudo apt autoremove -yapt clean清的是下载缓存的 deb 包通常能释放出几百 MB 到几 GB。第三种是 dpkg 锁被占用。症状是提示无法获得锁 /var/lib/dpkg/lock-frontend。这通常是因为另一个 apt 进程还在运行比如系统的自动更新后台任务。等它跑完或者用ps aux | grep apt确认没有残留进程后再重试。cmake 的情况稍微不同。Ubuntu 官方源里的 cmake 版本往往比较旧如果你要编译的项目要求最低版本比如很多现代 C 项目要求 3.20 以上就需要单独装新版。最省事的办法是用官方提供的安装脚本wget https://github.com/Kitware/CMake/releases/download/v3.29.0/cmake-3.29.0-linux-x86_64.sh chmod x cmake-3.29.0-linux-x86_64.sh sudo ./cmake-3.29.0-linux-x86_64.sh --prefix/usr/local --skip-license装完之后用cmake --version确认。如果显示的版本还是旧的检查一下PATH里/usr/local/bin是不是排在/usr/bin前面which cmake能告诉你当前用的是哪一个。7.3 Docker、Miniconda 和环境变量的配置Docker 的安装我建议用官方脚本或者按官方文档添加软件源不要直接用 apt 里的docker.io包那个版本通常比较老而且和官方文档里的命令有些差异。装完之后有一件必做的事把当前用户加入 docker 组否则每次都要 sudo。sudo usermod -aG docker $USER执行完要重新登录才生效或者用newgrp docker临时切换。这个步骤漏掉的话你会遇到permission denied while trying to connect to the Docker daemon socket这种报错很多人以为是 Docker 没启动其实是权限问题。Miniconda 装完之后安装脚本会问你要不要自动初始化 shell选 yes 的话它会往~/.bashrc里加一段初始化代码。这段代码会让每次打开终端都加载 conda 环境如果你不想这样可以在.bashrc里把它改成手动激活。环境变量配置错误是新手最容易踩的坑而且症状很迷惑明明.bashrc里写了为什么新开的终端不生效几个要点export PATH$PATH:/your/path里的$PATH不能省否则会把原有路径全覆盖改完.bashrc之后要么执行source ~/.bashrc要么重开终端如果是在图形界面里通过图标启动的程序它读的是~/.profile而不是.bashrc这两者是有区别的。7.4 嵌入式工具链和 AI 辅助工具的安装要点有段时间我在虚拟机里跑 Zephyr 的开发环境。这个 RTOS 的工具链依赖比较多Python、pip、cmake、ninja、设备树编译器、还有它自己的west工具。安装在虚拟机上完全可行唯一需要注意的是磁盘空间要给够因为不同架构的 SDK 加起来能占好几个 GB。流程大致是先用 pip 装 west然后用 west 拉取源码和 SDKpip install west west init ~/zephyrproject cd ~/zephyrproject west update west zephyr-export pip install -r ~/zephyrproject/zephyr/scripts/requirements.txt这套流程在虚拟机上跑没什么特殊之处关键是网络要通、Python 版本别用系统自带的太老版本建议用 Miniconda 建一个独立环境。至于 AI 辅助编程工具比如一些命令行形式的代码助手一般通过 npm 安装sudo apt install nodejs npm -y sudo npm install -g 包名Node 的版本有时候需要比较新系统源里的版本可能不够这时候用 NodeSource 的源或者 nvm 来装。装完之后登录账号需要浏览器授权虚拟机的浏览器能正常打开网页就没问题。8. 网络与远程连接SSH 连不上怎么办这一节我单独拿出来讲因为ubuntu ssh 无法连接是我见过排错方向最混乱的一个问题很多人一上来就怀疑防火墙实际上十有八九是网络模式或者服务没装。8.1 NAT、桥接、仅主机到底差在哪用类比来说会好理解一些。NAT 模式相当于虚拟机住在宿主机的家里它想上网要通过宿主机这个家长转发外部网络看不到它宿主机之外的机器也访问不到它。桥接模式相当于虚拟机直接在小区里有了自己的门牌号局域网里的其他设备可以直接访问它。仅主机模式相当于虚拟机住在宿主机家里但是家里断网了只能和宿主机通信。从 SSH 连接的角度看网络模式宿主机能否 SSH 到虚拟机局域网其他机器能否 SSH虚拟机能否上网NAT可以通过 NAT 网段 IP不可以需要额外配端口转发可以桥接可以可以可以需局域网有 DHCP 或手动配 IP仅主机可以不可以不可以如果你的用途是在宿主机的 Windows 上开个终端连虚拟机NAT 模式配端口转发或者直接桥接都可以。我个人的偏好是桥接因为在同一个局域网里从手机、平板或者其他电脑连过去都方便。在虚拟机里查看 IP 用ip addr show注意不是ifconfig那个命令在新版 Ubuntu 上默认没装需要额外安装 net-tools。这个细节经常让人误以为网卡没起来。8.2 SSH 无法连接的排查顺序我总结了一个从下到上的排查顺序按这个走能覆盖绝大多数情况。第一步确认虚拟机自己有网。在 Ubuntu 里执行ping -c 3 8.8.8.8通说明网络层没问题。不通的话检查虚拟机设置里的网络适配器是不是勾了已连接和启动时连接然后再看 Ubuntu 里的网卡有没有拿到 IP。第二步确认 SSH 服务装没装。桌面版 Ubuntu 默认是不装 openssh-server 的只有客户端。所以从别的机器连过来当然连不上。先装sudo apt install openssh-server -y装完检查服务状态sudo systemctl status ssh如果是 inactive 或者 failed用sudo systemctl start ssh启动sudo systemctl enable ssh设置开机自启。第三步确认端口在监听。执行ss -tlnp | grep 22没有输出说明服务真的没起来回到第二步看日志。有输出但显示的是127.0.0.1:22而不是0.0.0.0:22说明配置里ListenAddress被限制成了本地回环需要改/etc/ssh/sshd_config。第四步看防火墙。Ubuntu 桌面版默认没开 ufw但如果你装过并且开启了需要放行sudo ufw status sudo ufw allow ssh第五步回到宿主机的角度测试。在 Windows 上用ping 虚拟机的IP看通不通通的话用telnet 虚拟机IP 22测试端口。Windows 默认可能没开 telnet 客户端可以用 PowerShell 的Test-NetConnectionTest-NetConnection 192.168.1.100 -Port 22还有一个很隐蔽的情况桥接模式下你所在的局域网可能是192.168.1.x网段但虚拟机拿到的是另一个网段的地址这就说明桥接绑定到了错误的物理网卡。比如笔记本同时有有线和无线网卡VMware 可能默认桥接到了有线网卡而你实际用的是 WiFi。解决办法是在虚拟网络编辑器里把 VMnet0 的桥接目标指定成你正在使用的那块网卡。这个问题我调过整整一个下午最后发现就是桥接目标选错了。8.3 文件互传的几种方式和性能对比宿主机和虚拟机之间传文件除了前面说的共享文件夹还有几条路。SCP 是最直接的配合前面配好的 SSH 用scp -r ./project user192.168.1.100:/home/user/在 Windows 上新版系统自带的 OpenSSH 客户端已经包含 scp 命令直接在 PowerShell 里就能用。图形化工具方面Xshell 搭配 Xftp、或者 MobaXterm、WinSCP 都可以看个人习惯。传输速度上我的实测感受是小文件多的时候打包成 tar 再传比一个个传快很多大文件直接用 scp 就能跑满网络带宽。共享文件夹在传大文件时速度一般传大量小文件时会更慢因为它中间多了一层文件系统转换。9. 快照、克隆与重装把虚拟机当耗材用这可能是虚拟机方案最被低估的价值。学会管理快照你的试错成本会降到几乎为零。9.1 快照怎么打才有意义快照要打在有意义的里程碑上而不是随手打。我自己固定的几个点是第一个点系统刚装完什么东西都没配的时候。这个快照是干净基线后面不管怎么折腾都能退回来重新开始。第二个点基础工具装完换源、装 build-essential、配好 ssh 之后。这个快照是可用的起点新项目可以直接从这里克隆。第三个点某个具体项目的环境配完之后。比如你要测一个特定版本的框架环境配好先打一个万一后面把依赖搞乱了退回来比重配快得多。有几件事我不建议做。一是不要打太多快照每个快照都会占用磁盘空间而且快照链太长之后磁盘性能会明显下降。我一般一个虚拟机上不超过三个快照用完就删除或合并。二是不要在快照状态下长期运行快照是冻结的状态点长时间在快照上跑会让磁盘文件越来越碎片化。三是不要依赖快照当备份虚拟磁盘文件本身损坏的时候快照链可能一起坏掉。重要的东西还是要往宿主机的目录里拷一份。9.2 克隆和模板化当你需要在多台虚拟机上搭同样的环境时克隆比重新装一遍高效太多。VMware 提供完整克隆和链接克隆两种。完整克隆是一份独立的完整副本占空间但性能独立链接克隆共享父虚拟机的磁盘占空间小但父虚拟机不能删。我的实际做法是先把一台机器配成模板——系统装好、源换好、常用工具装好、SSH 配好然后关机用完整克隆生成新机器。每开一个新项目就克隆一台改个名字和 IP 就能用。这套流程走顺了从零到能写代码的时间从两小时压缩到十分钟。克隆之后有几件事要改不然会冲突主机名hostnamectl set-hostname、如果有静态 IP 要改成新的、SSH 的 host key 建议重新生成sudo ssh-keygen -A。9.3 系统重装和彻底清理虚拟机用久了想重装有两种做法。温和的做法是保留虚拟机配置只把虚拟磁盘重新创建或者让安装程序重新分区这样 VMware 侧的网络、共享文件夹配置都不用重配。彻底的做法是直接删掉整个虚拟机目录重新建适合配置已经乱掉的情况。如果你决定不用虚拟机了要卸载 VMware记得用前面提到的官方清理工具跑一遍把虚拟网卡和服务都清干净。否则网络适配器列表里会残留一堆VMnet1VMnet8的虚拟设备有些还会影响宿主机本身的网络功能。还有一个常见需求是磁盘越用越大。虚拟磁盘有个特性里边的文件删了物理文件不会自动变小。这时候需要在 VMware 里做一次压缩操作前提是虚拟机里已经装好了 tools。步骤是先在 Ubuntu 里把空闲空间标记为零sudo dd if/dev/zero of/zero.fill bs1M || true sudo rm -f /zero.fill然后在 VMware 菜单里执行磁盘压缩。这个过程可能要十几分钟压缩完能收回不少空间。10. 常见问题速查表把前面散落的问题集中整理一下遇到的时候可以直接对照。现象可能原因排查动作开机提示 VT-x 被禁用BIOS 里虚拟化没开进 BIOS 找 Intel VT-x / SVM 打开装到一半黑屏只有鼠标3D 加速与显卡驱动冲突关机后在显示设置里关闭 3D 加速分辨率不能自适应窗口open-vm-tools-desktop 未装sudo apt install open-vm-tools-desktop后重启提示继续运行脚本未能在虚拟机中成功运行内核头文件缺失或光驱未连接装linux-headers-$(uname -r)检查 CD/DVD 已连接中文字打不出来输入法框架环境变量没配检查GTK_IM_MODULE、QT_IM_MODULE、XMODIFIERSSSH 连不上openssh-server 未安装或防火墙拦截装 serversystemctl status sshufw allow ssh桥接后拿不到局域网 IP桥接绑定到了错误的物理网卡虚拟网络编辑器里改 VMnet0 桥接目标gcc / build-essential 安装失败磁盘满、源不可达、dpkg 锁占用df -h看空间确认源ps aux | grep aptcmake 版本太旧官方源版本落后用官方二进制脚本装到/usr/localdocker 提示权限拒绝用户不在 docker 组sudo usermod -aG docker $USER后重新登录改完 .bashrc 不生效没 source或程序读的是 .profilesource ~/.bashrc检查图形程序的环境来源系统时间漂移导致证书错误挂起后 NTP 未同步sudo timedatectl set-ntp true虚拟磁盘占满宿主机删除的文件未释放物理空间虚拟机内 dd 填零后执行磁盘压缩克隆后网络冲突主机名、IP、SSH host key 重复逐个改掉sudo ssh-keygen -A重生成这张表里的每一条我都至少遇到过一次其中内核头文件缺失导致 tools 装不上和桥接绑错网卡导致拿不到 IP这两条是最容易把人带偏方向的。前者会让人以为是脚本坏了后者会让人以为是防火墙或者 Linux 网络配置有问题。11. 我自己的使用习惯和一些零碎建议虚拟机装好只是开始真正决定体验的是后面这些日常习惯。我把这几年的一些做法列一下你可以按需取用。关于宿主机和虚拟机的时间分配。我倾向于把重活留在宿主机把脏活放进虚拟机。所谓脏活是指那些会往系统里装一堆依赖、改一堆全局配置的事情比如试某个版本的工具链、跑某个来路不明的安装脚本、验证一个有风险的升级。做完之后打个快照或者干脆删掉重建宿主机始终干干净净。关于虚拟机的命名和目录管理。我见过太多人攒了二十个虚拟机名字全是Ubuntu 64 位、Ubuntu 64 位 副本根本分不清哪个是哪个。我的习惯是按用途命名比如ubuntu-dev-py311、ubuntu-test-cmake虚拟磁盘文件放在统一的目录下并且给每个虚拟机留一个readme.txt记录它装了什么、用来干什么。这个习惯在半年之后回头看会感谢自己。关于资源分配的一个反直觉经验。很多人觉得给虚拟机分配的 CPU 核心越多越好实际上不一定。如果你的任务主要是单线程编译给 8 核和给 4 核的差别很小反而因为调度开销导致宿主机的响应变慢。真正吃多核的是并行编译make -j、容器编排、数据库这类场景。先给 4 核不够再加这是更稳妥的策略。关于快照和备份的边界。快照不是备份这句话再说一遍。重要的代码和数据我的做法是在宿主机上建一个目录通过 SSH 或者共享文件夹定期同步出来。虚拟机里的.bashrc、.gitconfig这类配置文件我会单独整理到一个 dotfiles 目录里每次新建虚拟机的时候直接拉下来覆盖。这样即使虚拟机整个删掉我的个人环境也能在几分钟内恢复。最后提一个小的性能调优点。如果你发现虚拟机里的 apt 安装特别慢先确认不是网络问题然后看一下磁盘类型。VMware 支持 SCSI、SATA、NVMe 几种虚拟磁盘控制器NVMe 的性能最好但对老系统支持一般。新建虚拟机的时候如果选了自定义配置可以把磁盘类型设成 NVMe 试试apt 安装大量小文件时的体感差别挺明显的。这个改动必须在装系统之前做装完之后再改会导致系统起不来。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

Unity资源依赖检测小工具:轻量级诊断与优化方案 2026/9/30 5:01:55

Unity资源依赖检测小工具:轻量级诊断与优化方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
AUTOSAR存储栈实战:NvM、MemIf、Fee配置与掉电保护 2026/9/30 5:01:54

AUTOSAR存储栈实战:NvM、MemIf、Fee配置与掉电保护

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
Unity游戏AI感知系统设计:空间建模替代视觉模拟 2026/9/30 5:01:54

Unity游戏AI感知系统设计:空间建模替代视觉模拟

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
百度前端实习一面全记录:原理、手写题与项目追问实战 2026/9/30 5:01:47

百度前端实习一面全记录:原理、手写题与项目追问实战

1. 面试前夜:百度前端实习的一面到底在考什么2026年3月11日,我参加了百度前端实习的一面。说实话,面完出来最大的感受是:百度的面试风格和网上流传的那些“背题就能过”的经验帖真的不太一样。先交代一下背景,我是某双…

阅读更多 →
Unity iOS Deep Link 完整接入:从链接配置到 C# 参数透传避坑指南 2026/9/30 5:01:47

Unity iOS Deep Link 完整接入:从链接配置到 C# 参数透传避坑指南

做手游的都知道,拉新靠买量,回流靠唤醒。而 iOS 端的 Deep Link,就是那条把用户从 Safari、广告页、活动 H5 重新拽回游戏 App 的绳子。很多人以为这不就是配个 URL Scheme 的事,但真做到 Unity 工程里就会发现,从链接…

阅读更多 →
Wireshark看不到虚拟机网卡?一文搞懂VMware抓包接口选择与操作 2026/9/30 5:01:47

Wireshark看不到虚拟机网卡?一文搞懂VMware抓包接口选择与操作

最近有个朋友在群里吐槽:虚拟机里装好系统、配好网络,想在物理机的 Wireshark 上抓虚拟机的流量,结果打开 Wireshark 的捕获接口列表,翻来覆去只看到物理无线网卡、以太网卡和一堆“Adapter for loopback”,愣是找不到…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉