首页 / 资讯中心 / 文章详情

VirtualBox安装Ubuntu全流程:参数配置、增强功能与网络排错

VirtualBox安装Ubuntu全流程:参数配置、增强功能与网络排错 ★ FEATURED ARTICLE
虚拟机这个东西我前前后后在自己机器和别人的机器上装过的次数早就过百了从早期动不动就蓝屏的年代到现在一台轻薄本里同时跑两三个 Linux 环境互不干扰体验提升得非常明显。这次要聊的是用 VirtualBox 安装配置 Ubuntu 系统这件事——它不是那种点下一步下一步就完事的操作里面藏着不少参数估算、虚拟化冲突排查、增强功能编译、网络模式取舍的坑。这篇内容我会从为什么这么选讲到每一步具体怎么点、命令怎么敲把安装全流程、参数计算逻辑、踩坑记录全部摊开。适合三类人看完全没碰过虚拟机想入门的新手、装过一两次但总卡在增强功能或者网络配置的半熟手、以及需要在本地快速搭一套可随时重置的 Linux 开发环境的从业者。读完你应该能独立完成一套稳定的 VirtualBox Ubuntu 环境搭建并且知道出问题时往哪个方向排查。1. 动手之前先把账算清楚虚拟机适合谁、不适合谁1.1 这套方案真正解决的三个现实问题很多人第一次接触虚拟机的动机都挺朴素——想学 Linux但不想把主力电脑重装系统。这个诉求本身没错但 VirtualBox 加 Ubuntu 的组合能做的事情远比学命令要多。第一是环境隔离你在虚拟机里怎么折腾分区、怎么改系统配置、怎么装一堆互相冲突的运行库都不影响宿主系统玩坏了直接回滚快照几分钟回到干净状态。第二是可迁移和可复制一台配置好的 Ubuntu 虚拟机可以完整克隆成三份分给三个同事做统一开发环境省掉我这能跑你那你为啥跑不起来的扯皮。第三是跨平台一致性宿主是 Windows、macOS 还是 Linux 都无所谓虚拟机里的 Ubuntu 表现基本一致这对需要复现问题的调试场景非常关键。对应的它也有明确的短板。图形性能是弱项3D 渲染和视频解码要么卡要么花屏指望它在虚拟机里剪视频、跑游戏、做 GPU 加速训练基本是自找不痛快。磁盘 IO 也打了折扣虽然是虚拟磁盘文件但多了一层转换大型编译任务会比物理机慢一截。所以定位要清楚它是开发环境、学习环境、测试环境不是生产力图形工作站。提示如果你的主要工作依赖 GPU、依赖实时音视频、依赖大量磁盘随机读写优先考虑双系统而不是虚拟机别在这上面耗时间。1.2 三条硬边界越界就会很难受第一条边界是内存。虚拟机占用的内存是实打实从宿主系统里划走的不是共享也不是按需。你给虚拟机分了 4 GB宿主系统就永久少了 4 GB 可用内存在虚拟机运行期间甚至在它挂起期间这块内存都归它。宿主机只有 8 GB 内存的时候硬塞一个 4 GB 的 Ubuntu 桌面版结果是宿主和虚拟机一起卡两边都难受。第二条边界是 CPU 核数。分配给虚拟机的虚拟 CPU 核心数不能超过物理核心总数的一半这是经验值。原因在于虚拟机监控器的调度开销——虚拟 CPU 需要宿主系统真实核心去承载你分 4 个虚拟核心给一台 4 核 8 线程的机器宿主就只剩下 4 个逻辑处理器处理界面、后台服务、磁盘缓存一旦虚拟机满载宿主界面会卡到鼠标拖影。所以宁可让虚拟机跑得慢一点也要给宿主留出余量。第三条边界是磁盘空间。虚拟磁盘文件默认是动态增长的你设了 40 GB它不会一开始就占 40 GB而是随着写入慢慢变大。但注意它只增不减你在虚拟机里删了 20 GB 文件宿主上的虚拟磁盘文件并不会自动缩小。所以规划容量时要留够余量别搞到最后宿主磁盘爆红才发现问题。1.3 版本选择主程序、扩展包、镜像三者要配套VirtualBox 主程序建议直接用当前较新的稳定分支比如 7.0.x 或 7.1.x 系列新版本对高分辨率屏幕、UEFI 启动、USB 3.0 的支持更好也修掉了不少图形渲染的老问题。别用那种三年没更新的老版本Ubuntu 新内核一升级增强功能直接编译不过去你会白白浪费一个下午。扩展包Extension Pack是可选但强烈建议装的组件版本号必须和主程序完全一致差一个小版本号都可能装不上。它提供 USB 2.0/3.0 控制器支持、磁盘加密、远程桌面协议支持等功能。日常如果需要往虚拟机里插 U 盘、传文件装了省心很多。Ubuntu 镜像方面桌面使用者选 LTS 长期支持版最稳比如 22.04 或 24.04 这类带 LTS 标识的版本软件源长期维护、社区文档齐全、驱动兼容性好。追求新特性的可以上最新的 LTS 点版本。服务器场景直接用 Server 版没有图形界面内存占用低一台 2 GB 内存的虚拟机就能跑得很顺。镜像文件记得核对一下校验值官方发布页一般会给 SHA256下坏了装到一半报错很折腾人。2. 安装前的环境准备四件事不确认就等着报错2.1 硬件虚拟化开关90% 的启动失败都出在这里VirtualBox 需要 CPU 提供硬件虚拟化支持才能跑 64 位虚拟机这个开关在 BIOS/UEFI 里出厂默认经常是关闭的。开机时按住对应按键进固件设置找到类似 Virtualization Technology、SVM Mode、Virtualization Extensions 字样的选项改成 Enabled保存重启。不同平台叫法不一样找不到就翻主板说明书或者把固件设置里所有带 Virtualization、VT 字样的项都开一遍。判断有没有开成功Windows 宿主可以在任务管理器里看性能 → CPU页面右下角是否显示虚拟化已启用Linux 宿主用lscpu | grep Virtualization看输出里有没有对应标识或者egrep -c (vmx|svm) /proc/cpuinfo输出大于 0 就算通过。如果确认 BIOS 开了但 VirtualBox 仍然报错说硬件虚拟化不可用八成是被宿主系统里另一套虚拟化功能占用了。Windows 上的 Hyper-V、虚拟机平台、内核隔离里的内存完整性、WSL2这些都会独占硬件虚拟化能力。关掉的方式是打开启用或关闭 Windows 功能取消勾选 Hyper-V 和虚拟机平台重启再进Windows 安全中心 → 设备安全性 → 内核隔离详细信息关闭内存完整性重启。如果只想临时关闭管理员权限的命令行里执行bcdedit /set hypervisorlaunchtype off然后重启需要恢复时改回 auto。注意关掉 Hyper-V 会影响 WSL2 和基于 Hyper-V 的其他功能如果你同时依赖这些考虑换成支持嵌套虚拟化的方案或者干脆把开发环境迁到一台独立的机器上。Linux 宿主这边相对简单主要是内核模块和权限问题。装完 VirtualBox 后执行lsmod | grep vbox看模块是否加载然后把自己加进 vboxusers 组sudo usermod -aG vboxusers $USER重新登录生效。如果 USB 设备识别不到检查/dev/vboxdrv权限实在不行跑一遍sudo /sbin/vboxconfig重新编译内核模块。2.2 宿主系统资源盘点算出你能给多少动手建虚拟机之前先打开任务管理器或者free -h看一眼实际可用内存。注意是可用不是已安装Windows 待机状态下各种后台服务会吃掉一大块内存浏览器开十几个标签页又是几个 G。以可用内存减去 2 GB 安全余量作为上限来分配比较稳妥。磁盘空间同理虚拟磁盘放在哪个盘要看那个盘的剩余空间。不建议放在系统盘根目录一来占系统盘空间影响更新二来系统盘读写竞争激烈。有条件的话把虚拟磁盘文件放到固态硬盘的非系统分区读写速度差别非常明显虚拟机开机时间能差出一倍。另外别放在机械硬盘上跑开发环境apt install装几百个包的时候你会对着进度条发呆。2.3 Ubuntu 镜像版本怎么挑桌面版、服务器版、最小安装桌面版Desktop带图形界面默认 GNOME 桌面适合学习 Linux 桌面操作、跑图形化的开发工具、演示软件。代价是内存占用高起步建议 4 GB2 GB 会很吃力。安装过程里有最小安装和完整安装两个选项最小安装只装核心组件和浏览器省空间也省时间完整安装会带上办公套件、图片处理之类的软件虚拟机里其实用不上建议选最小安装。服务器版Server没有图形界面全程命令行内存占用很低1-2 GB 就能跑。适合做服务端开发、部署测试、学习命令行操作。安装器是文字界面的向导比桌面版简单但网络配置那一步会问得细一些。还有一个介于中间的选项是云镜像或者定制精简镜像本文不展开新手日常用不到。下载完之后核对校验值这一步别跳过尤其是网络不稳定的时候镜像损坏导致安装半路失败、装完进不了系统排查起来比重新下一次麻烦十倍。2.4 目录与文件规划养成存档的好习惯建议在非系统盘建一个统一目录比如D:\VMs\Windows或者/home/你的用户名/VMs/Linux、macOS所有虚拟机文件放这里集中管理。每个虚拟机在 VirtualBox 里创建时会自带一个同名子目录里面放虚拟磁盘文件.vdi、配置文件.vbox、日志和快照文件。这个目录不要随便手动移动或者改名真要搬迁用 VirtualBox 的导出/导入虚拟电脑功能或者在关闭状态下用移动操作直接剪切粘贴会把注册表里的路径搞乱。另外建议单独留一个目录放系统镜像装完之后不要删后面克隆、重装、做实验都用得上重下一次好几个 G 很费时间。3. 创建虚拟机每个参数背后的计算逻辑3.1 内存、CPU、显存的具体分配方案打开 VirtualBox 主界面点新建第一屏填名称、选择类型和版本。名称随便起但建议有意义一点比如ubuntu-24.04-dev后面克隆多个的时候一眼能分清。类型选 Linux版本选 Ubuntu (64-bit)这一步决定了 VirtualBox 用哪套默认硬件参数选错了后期也能改但一开始选对能省事。内存分配我整理了一张实际可用的对照表按宿主物理内存来查宿主物理内存分配给 Ubuntu 桌面版分配给 Ubuntu Server 版说明8 GB2 GB1.5 GB桌面版会卡建议改用 Server 版16 GB4 GB2 GB最常见的配置体验均衡32 GB8 GB4 GB可以做多虚拟机实验64 GB 及以上8-12 GB4-8 GB主要看宿主要保留多少CPU 核心数在系统 → 处理器里设置勾选启用 PAE/NX基本是默认开启的。核心数分配原则前面说过不超过物理核心数的一半2 核起步4 核足够绝大多数开发场景。如果你的 CPU 支持超线程虚拟 CPU 数量按逻辑处理器数量算8 逻辑处理器给 2-4 个虚拟核心比较合适。有一个选项叫启用嵌套虚拟化只有你需要在 Ubuntu 里面再跑一层虚拟机比如跑容器或者 KVM 实验时才勾选普通使用不要开开了有额外开销。显存视频内存在显示设置里默认只有 16 MB这个值必须拉高Ubuntu 桌面版 16 MB 显存会出现界面撕裂、分辨率上不去、安装界面直接花屏的情况。拉到 128 MB 是上限直接拉满占用的是宿主内存但影响很小。图形控制器选 VMSVGA这是目前兼容性最好的选项比旧的 VBoxSVGA 稳。3D 加速默认勾着如果安装过程或者进系统后出现黑屏、花屏、界面闪烁第一件事就是把它取消勾选这个开关是图形问题的头号嫌疑人。3.2 虚拟硬盘类型与容量怎么定虚拟硬盘这一步有三个选择不添加虚拟硬盘、现在创建虚拟硬盘、使用已有的虚拟硬盘文件。正常情况选第二个。点创建后进入硬盘向导文件类型选 VDIVirtualBox 自己的格式性能和兼容性都最好存储方式选动态分配。动态分配和固定大小的区别值得说清楚。动态分配是文件先用很小写多少涨多少上限是你设的容量固定大小是一次性把整个文件按容量创建出来。固定大小的读写性能略好因为不需要动态扩展元数据但创建时就要占满全部空间而且后续扩容麻烦。我的建议是开发环境用动态分配空间灵活性能差异在日常使用中几乎感觉不到如果是长期跑数据库、跑编译密集型任务用固定大小会稳一些。容量方面Ubuntu 桌面版最小安装大概占 8-10 GB加上日常的 apt 缓存、开发工具、代码仓库、Docker 镜像40 GB 是比较舒服的起点。Server 版 20-25 GB 够用。这里有个反直觉的点容量的上限一旦设定不能通过界面简单改大必须走命令行扩容流程后面我会详细讲。所以宁可一次性给足别抠抠搜搜给个 20 GB用两个月就爆红。现在硬盘都大40 GB 的动态文件实际占用可能才 12 GB不心疼。3.3 关键设置项逐条过一遍这些默认值建议改掉虚拟机建好之后先别急着启动进设置把几项改掉能省掉后面一堆麻烦。系统 → 主板里启动顺序把光驱调到硬盘前面这样挂载镜像后能直接进安装界面。启用 EFI这个选项Ubuntu 桌面版可以开启用 UEFI 方式启动更接近现代真机但如果你的 VirtualBox 版本较老或者后面要装增强功能时遇到奇怪问题关掉用传统 BIOS 方式更省心。Server 版建议保持不勾选。显示 → 屏幕里把启用 3D 加速先取消掉等系统装完、增强功能装好、确认一切正常之后再回来尝试打开一个一个变量地改出问题好定位。存储里点光驱图标选选择虚拟光盘文件挂上你下载的 Ubuntu ISO。这一步如果忘了启动后会提示找不到可启动介质。网络默认是 NAT 模式这个先保留安装阶段够用后面再讲怎么切。共享文件夹和剪贴板共享这两项可以在设置里先把剪贴板共享和拖放都设成双向但真正生效需要等增强功能装上所以现在设了没反应是正常的别以为坏了。实操心得把上述所有设置改完、确认无误后先做一个空虚拟机快照虽然还没装系统快照意义不大更实用的做法是在系统刚装完、还没开始折腾环境的时候立刻打一个快照命名成clean-install。这一步能救你无数次。3.4 命令行建虚拟机适合批量复现如果你需要重复创建多台一样的虚拟机界面点来点去太慢用命令行一条龙更高效。Windows 下在 VirtualBox 安装目录里打开命令行Linux/macOS 直接终端里操作# 创建并注册虚拟机类型 Ubuntu_64 VBoxManage createvm --name ubuntu-dev --ostype Ubuntu_64 --register # 设置内存 4096 MB、2 个 CPU、显存 128 MB VBoxManage modifyvm ubuntu-dev --memory 4096 --cpus 2 --vram 128 # 设置图形控制器为 VMSVGA关闭 3D 加速 VBoxManage modifyvm ubuntu-dev --graphicscontroller vmsvga --accelerate3d off # 创建 40 GB 动态分配的 VDI 磁盘 VBoxManage createmedium disk \ --filename $HOME/VirtualBox VMs/ubuntu-dev/ubuntu-dev.vdi \ --size 40960 --format VDI --variant Standard # 添加 SATA 控制器 VBoxManage storagectl ubuntu-dev --name SATA --add sata --controller IntelAhci --portcount 2 # 挂载硬盘到端口 0 VBoxManage storageattach ubuntu-dev --storagectl SATA --port 0 --device 0 \ --type hdd --medium $HOME/VirtualBox VMs/ubuntu-dev/ubuntu-dev.vdi # 挂载 ISO 到端口 1 的光驱 VBoxManage storageattach ubuntu-dev --storagectl SATA --port 1 --device 0 \ --type dvddrive --medium /path/to/ubuntu-24.04-desktop-amd64.iso # 启动 VBoxManage startvm ubuntu-dev注意--size的单位是 MB40960 就是 40 GB。不同大版本的参数名偶尔会有微调比如音频相关的选项在 7.1 里改过写法遇到报错就用VBoxManage modifyvm --help查一下当前版本的正确参数。4. 系统安装实操从挂载镜像到第一次登录4.1 安装向导逐屏说明与关键选择选中虚拟机点启动会弹出虚拟显示器窗口。第一次启动时鼠标会被虚拟机捕获点击窗口内部就锁进去了想释放回宿主系统按一下键盘右侧的 Ctrl 键这是默认的 Host 键窗口右下角会显示当前值。这个机制新手经常被吓到以为鼠标坏了。启动后进入 Ubuntu 启动菜单默认选中第一项直接回车。安装器加载需要十几秒到一分钟取决于宿主的磁盘速度和分配给虚拟机的内存。如果屏幕一直黑着不动先按键盘方向键看看是不是只是画面没刷新再检查 3D 加速是不是需要关掉最后确认镜像文件是否完整。进入图形安装界面后选择语言、键盘布局。语言选中文的话安装器界面也是中文方便新手但有个经验装完系统后建议把系统语言保持英文只装中文输入法和中文字体原因是很多开发工具的日志报错在中文环境下翻译得莫名其妙搜索错误信息时中文关键词命中率也低。这个取舍你自己决定。接下来是网络和软件源。安装器会检测网络NAT 模式下一般能正常获取地址。如果提示网络不可用检查宿主本身是否联网以及 VirtualBox 的网络设置有没有被改过。软件源默认用官方地址安装阶段不建议换等系统装完再换更稳妥。安装类型选择交互式安装然后是最关键的一屏安装方式。因为是全新的虚拟磁盘直接选擦除磁盘并安装 Ubuntu就行不会有数据丢失风险虚拟磁盘里本来就是空的。这一屏上还有个高级功能按钮里面可以选 LVM 和磁盘加密普通使用不建议开 LVM会让后面扩容的步骤变复杂磁盘加密在虚拟机里意义也不大除非你有明确的数据安全需求。4.2 分区方案、用户设置与安装等待分区这一步如果用默认的擦除磁盘模式安装器会自动分两个区一个 EFI 系统分区几百 MB和一个根分区占满剩余空间。这个方案对虚拟机完全够用。有没有必要单独分/home我的看法是不必虚拟机里数据都在这一个磁盘文件里分不分/home不影响备份粒度真要备份用快照导出更彻底。用户设置页填全名、主机名、用户名、密码。主机名建议有辨识度比如ubuntu-dev后面 SSH 连进来的时候能一眼看出是哪台。密码在虚拟机里可以设简单点因为默认不允许 root 直接登录、也不对外暴露端口用不着复杂密码但如果你后面会开端口转发把 SSH 暴露到宿主机之外的网络就老老实实设强密码。勾选登录时需要密码更安全自动登录在本地虚拟机里问题也不大看习惯。时区选对国内用户选上海。这会影响系统时间和日志时间戳选错了排查问题时看日志会对不上。接下来就是等桌面版完整安装大概 10-25 分钟取决于宿主磁盘速度和网络。安装过程中可能弹窗问是否更新安装器、是否下载额外驱动按需选。装完提示重启重启前记得在 VirtualBox 菜单里把光驱里的 ISO 弹出设备 → 光驱 → 移除磁盘否则可能又进安装界面。这一步新手经常忘然后以为装失败了。第一次进入系统时会走一遍初始化向导问是否连接在线账户、是否发送系统信息、是否开启定位服务全部跳过或关闭即可虚拟机里没必要开这些。然后设置一下桌面外观把分辨率调到和宿主窗口匹配。4.3 首次登录后的必做三件事第一件更新系统。打开终端先sudo apt update再sudo apt upgrade -y。第一次更新可能有几百个包耐心等中途别关窗口。更新完如果提示需要重启就重启一次。第二件换软件源。这一步能显著提升后续 apt 安装的速度尤其网络条件一般的时候。Ubuntu 22.04 和 24.04 的源文件格式不一样这是很多人踩坑的地方22.04 及更早版本用传统格式文件在/etc/apt/sources.list24.04 开始用 deb822 格式文件在/etc/apt/sources.list.d/ubuntu.sources动手前先备份# 24.04 及以后 sudo cp /etc/apt/sources.list.d/ubuntu.sources /etc/apt/sources.list.d/ubuntu.sources.bak # 22.04 及以前 sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak然后手动编辑把源地址替换成你所在网络环境下速度较好的镜像站地址。选择镜像站的判断标准很简单ping一下看延迟再用浏览器打开dists/目录看响应速度哪个快用哪个。换完执行sudo apt update如果出现 Release file is not valid yet 之类的报错通常是宿主和虚拟机时间不同步等几分钟或者手动同步时间再试。第三件装基础工具。sudo apt install -y build-essential dkms curl wget git vim htop net-tools。这一批是后面装增强功能和日常开发都要用的特别是build-essential和dkms没有它们增强功能编译会直接失败。linux-headers-$(uname -r)也要装内核头文件是编译内核模块的前提。注意先更新系统再装内核头文件顺序反了可能出现头文件版本和当前运行内核不匹配的情况白装一遍。5. 增强功能与共享文件夹让虚拟机从能用变成好用5.1 增强功能的编译安装与常见报错处理没有增强功能Guest Additions的 Ubuntu 虚拟机是很难用的分辨率固定在 800x600 或者 1024x768、鼠标移动有拖影、宿主和虚拟机之间不能复制粘贴、不能拖拽文件、共享文件夹挂不上、时间不同步。所以这一步必须做。操作路径是先确保虚拟机处于运行状态然后在 VirtualBox 窗口菜单里点设备 → 安装增强功能这会往虚拟机的光驱里挂载一个虚拟光盘。Ubuntu 一般会自动弹出提示如果没有打开文件管理器左侧会看到一个挂载的光盘设备。在终端里执行# 确认前置依赖都在 sudo apt install -y build-essential dkms linux-headers-$(uname -r) # 进入挂载目录路径里的版本号按实际情况改 cd /media/$USER/VBox_GAs_*/ # 执行安装脚本 sudo ./VBoxLinuxAdditions.run安装过程会编译内核模块输出一大堆信息最后如果看到 You must restart your guest system说明成功了重启虚拟机。报错处理的经验值出现 Kernel headers not found for target kernel 就是内核头文件没装或版本不匹配用uname -r确认当前内核版本装对应版本的 headers出现 gcc: command not found 是没装编译工具链出现 modprobe vboxguest failed 通常是 Secure Boot 拦住了未签名的内核模块解决办法是进固件设置关掉 Secure Boot或者按提示走 MOK 注册流程给模块签名。还有一种情况是内核升级之后增强功能突然失效表现为分辨率又掉回低分辨率、共享文件夹消失。这是因为内核模块需要跟着新内核重新编译正常情况下 DKMS 会自动处理如果没处理执行sudo /sbin/vboxconfig手动触发一次重编译然后重启。5.2 共享文件夹挂载与权限问题共享文件夹是宿主和虚拟机之间传文件最方便的方式比 U 盘、比网络共享都直接。设置方法是在虚拟机关机状态下运行中也能加但需要手动挂载打开设置 → 共享文件夹点右侧加号选宿主上的一个目录填一个挂载名称比如share勾选自动挂载和固定分配。启动虚拟机后挂载点一般在/media/sf_share这个路径下注意前缀是sf_加上你填的名称。第一次访问大概率会提示权限不足因为挂载出来的目录属主是 root普通用户不在vboxsf组里# 把当前用户加入 vboxsf 组 sudo usermod -aG vboxsf $USER # 让组变更立即生效或者直接重启虚拟机 newgrp vboxsf这里有个细节值得强调newgrp只对当前终端会话生效其他已经打开的终端还是旧权限。要么关掉所有终端重开要么干脆重启虚拟机一劳永逸。如果自动挂载不好使手动挂载的方式是sudo mkdir -p /mnt/share sudo mount -t vboxsf share /mnt/share如果要在虚拟机里以可执行权限运行共享目录下的脚本注意 vboxsf 文件系统默认不支持 Linux 的权限位脚本可能没有执行权限用bash script.sh显式调用而不是./script.sh。另外共享目录里不要放 Git 仓库跨文件系统的权限映射会导致一堆莫名其妙的改动正确的做法是在虚拟机内部的工作目录里开发共享目录只用来搬文件。5.3 剪贴板、分辨率、时间同步的收尾配置增强功能装好之后在 VirtualBox 窗口菜单的设备 → 共享剪贴板里选双向设备 → 拖放里也选双向。这两个开关配合增强功能才能生效缺一不可。设置完之后测一下在宿主里复制一段文字到虚拟机的编辑器里粘贴成功就说明通了。如果不行先确认增强功能确实装上了lsmod | grep vboxguest看模块在不在再重启一次虚拟机。分辨率的问题装了增强功能之后调整 VirtualBox 窗口大小虚拟机的分辨率会自动跟随。如果窗口拉大后虚拟机内部还是黑边或者拉伸变形去视图 → 自动调整显示尺寸确认勾选再检查视图 → 虚拟屏幕的设置。时间同步在增强功能里默认是开启的虚拟机会定期和宿主对时。如果你发现虚拟机时间总是偏检查/etc/systemd/timesyncd.conf或者看看有没有装别的对时服务在打架。虚拟机挂起再恢复之后时间跳变也是这个机制在起作用一般几秒内会自动纠正。6. 网络配置三种模式的取舍与端口转发实操6.1 NAT、桥接、仅主机三种模式该选哪个VirtualBox 的网络模式有好几种日常用得上的是这三类模式虚拟机能否上网宿主能否直连虚拟机局域网其他机器能否访问虚拟机典型场景NAT能需端口转发不能日常开发、装包、学习和实验桥接能能能需要在局域网内提供服务的场景仅主机Host-Only不能能不能纯内网实验、断网测试NAT 是默认模式虚拟机通过宿主访问外网就像接在家用路由器后面的设备外面看不到它。优点是安全、不需要额外配置装系统、apt install都能正常工作。缺点是你想从宿主 SSH 连虚拟机或者想从浏览器访问虚拟机里跑的服务需要手动配端口转发。桥接模式把虚拟机直接接到宿主所在的物理网络上虚拟机会从路由器拿到一个和宿主同网段的 IP局域网里其他设备可以直接访问它。适合的场景是你想让虚拟机扮演一台独立服务器比如在内网跑一个测试服务给同事访问。风险是它暴露在局域网里了安全设置要跟上。仅主机模式创建一条只存在于宿主和虚拟机之间的私有网络虚拟机能和宿主通信但出不了外网。做网络隔离实验、测试断网情况下的程序行为时很有用。切换方式是在虚拟机设置里改网络 → 连接方式或者挂两块网卡网卡 1 用 NAT 保证能上网网卡 2 用仅主机保证宿主能稳定连进去这是我最推荐的组合两边都不耽误。6.2 端口转发的具体配置与验证NAT 模式下想让宿主访问虚拟机的服务用端口转发。图形界面路径是设置 → 网络 → 高级 → 端口转发点加号添加规则填四个关键字段名称随便写比如ssh协议TCP主机端口宿主上要监听的端口比如2222子系统端口虚拟机内部的端口SSH 就是22配置完在宿主上执行ssh -p 2222 用户名127.0.0.1就能连进去了。命令行等价操作是VBoxManage controlvm ubuntu-dev natpf1 ssh,tcp,,2222,,22这条命令可以在虚拟机运行中执行立即生效。删除规则用VBoxManage controlvm ubuntu-dev natpf1 delete ssh。端口选择有几个讲究主机端口别和宿主上已经占用的端口冲突选 2000 以上的一般比较安全如果同时跑多个虚拟机每个用不同的主机端口Web 服务默认 80 端口在宿主上大概率被占用或者需要提权映射成 8080 之类的高位端口更省事。验证转发是否生效先在虚拟机里起一个最简单的服务# 虚拟机内执行起一个临时 HTTP 服务 python3 -m http.server 8000然后在宿主的浏览器里访问http://127.0.0.1:8000能看到目录列表就说明通了。打不开的话按这个顺序排查虚拟机的防火墙是否放行Ubuntu 默认 ufw 是关闭状态如果开过就要sudo ufw allow 8000、服务是不是只监听了 127.0.0.1改成0.0.0.0、端口转发规则有没有拼错、虚拟机 IP 是否正常。提示SSH 进去之前记得在虚拟机里装openssh-serverUbuntu 桌面版默认不装sudo apt install openssh-server之后sudo systemctl enable --now ssh。7. 备份、克隆与扩容后期维护的三大动作7.1 快照的正确用法与常见误区快照是虚拟机相比物理机最大的优势之一本质上记录的是某个时间点的磁盘状态和内存状态如果虚拟机在运行出问题一键回滚。正确用法是在做有风险的操作之前打一个装新版本开发工具链、改系统级配置、试装驱动、升级内核这些操作前打个快照搞砸了回滚五分钟恢复。命名要清晰别用快照1快照2这种用clean-installbefore-upgrade-kernelwith-docker-ready这类描述性名称再配一句备注说明当时的状态。有个误区要纠正快照不是备份。快照文件依附于基础虚拟磁盘一旦基础磁盘文件损坏或者被误删所有快照一起失效。真正的备份是把虚拟机关机后用导出虚拟电脑生成 OVA 文件拷贝到另一块硬盘或者别的地方。我的习惯是每周导出一次重要虚拟机本地快照随便打但导出文件只保留最近两三份避免占空间。还有一个性能提醒快照链不要拉太长。每多一层快照读写虚拟磁盘时就要多穿透一层差分文件磁盘性能会明显下降。超过五六个快照就应该考虑合并——用快照管理器里的删除功能删除中间快照会把状态合并到父快照里合并过程可能耗时较长别中途打断。7.2 磁盘扩容的完整流程前面说过虚拟磁盘容量设小了会很麻烦这里给出完整的扩容流程。假设原来 40 GB要扩到 80 GB。第一步虚拟机关机完全关闭不是挂起。第二步宿主的命令行里执行扩容命令注意单位是 MB# 先看虚拟磁盘文件的实际路径 VBoxManage list hdds # 执行扩容目标 80 GB VBoxManage modifymedium disk /path/to/ubuntu-dev.vdi --resize 81920老版本 VirtualBox 用的是modifyhd新版本改成了modifymedium报 unknown command 就换个命令试。第三步进虚拟机把分区和文件系统撑满新增的空间。先确认磁盘设备名lsblk通常是/dev/sda分区是/dev/sda2根分区前面有一个小的 EFI 分区/dev/sda1。如果装的时候选了 LVM结构会复杂一些。默认安装方式下执行# 装 growpart 工具 sudo apt install -y cloud-guest-utils # 扩展分区注意 sda 和 2 之间有个空格 sudo growpart /dev/sda 2 # 扩展文件系统 sudo resize2fs /dev/sda2如果根分区是 LVM步骤变成sudo growpart /dev/sda 3 sudo pvresize /dev/sda3 sudo lvextend -l 100%FREE /dev/ubuntu-vg/ubuntu-lv sudo resize2fs /dev/ubuntu-vg/ubuntu-lv最后用df -h确认根分区容量已经变大。整个过程不用重启在线扩容比较安全。顺手再提一个空间回收的话题动态分配的虚拟磁盘只会变大不会变小你在虚拟机里删了大量文件之后宿主上的.vdi文件体积不会缩。想压缩需要先在虚拟机里把空闲空间清零zerofree或者用dd写零文件关机后执行VBoxManage modifymedium disk xxx.vdi --compact。这套流程有点折腾一般只在磁盘文件实在太大时才做。7.3 克隆与导出快速复制一套环境需要给同事一套一模一样的环境时用克隆比重新装一遍快得多。VirtualBox 提供两种克隆方式完整克隆和链接克隆。完整克隆是复制一份完全独立的虚拟磁盘占用空间大但互不影响链接克隆共用母盘省空间但母盘不能删而且性能略差。日常分发环境用完整克隆。克隆的入口在虚拟机列表里右键 → 克隆向导里可以选重置所有网卡的 MAC 地址建议勾上避免两台虚拟机在网络里冲突还可以选择重新初始化所有网卡的 MAC 地址以及生成新的机器 ID。导出 OVA 的路径是文件 → 导出虚拟电脑选好虚拟机格式选 OVA导出过程可能很慢几十 GB 的话要一两个小时适合做长期归档。导入的时候文件 → 导入虚拟电脑选 OVA 文件导入前可以调整 CPU、内存等参数很方便。8. 常见问题速查与排查思路实录8.1 启动类问题报错信息其实很直白启动阶段的问题占了新手遇到问题的一大半而且 VirtualBox 的报错信息其实写得挺明白只是很多人不看。VT-x is not available或硬件虚拟化被禁用这是最高频的报错。按前面第 2 章说的进 BIOS 开虚拟化Windows 上关掉 Hyper-V 和内存完整性。还有一种少见情况是杀毒软件的防护功能会锁定虚拟化能力临时关闭试试。VERR_NEM_VM_CREATE_FAILEDWindows 上 Hyper-V 相关的报错处理方式同上。启动后黑屏、光标闪烁但进不去安装界面先等一分钟有些老机器加载慢还是不行就在设置里关掉 3D 加速图形控制器换 VMSVGA再不行检查 ISO 文件是否完整重新下载一次对照校验值。只显示 32 位版本选项没有 64 位说明硬件虚拟化没生效VirtualBox 检测不到 64 位虚拟化能力回退到只支持 32 位。同样是 BIOS 和 Hyper-V 的问题。GURU_MEDITATION崩溃这是 VirtualBox 内部的错误状态通常和图形驱动冲突有关。关掉 3D 加速、降低显存、更新 VirtualBox 到最新版本实在不行换图形控制器试试。8.2 运行期问题鼠标、分辨率、剪贴板三板斧装完系统之后的困扰基本集中在交互体验上而且原因高度集中在增强功能没装好。鼠标被锁定、移动卡顿、位置偏移增强功能没装或者没生效。装好之后鼠标是无缝的可以自由在两个系统之间移动不需要按 Host 键释放。分辨率上不去、窗口拉大后黑边、全屏后变形同样是增强功能的问题。装好之后调整窗口大小分辨率自动跟。如果装了还不行检查视图 → 自动调整显示尺寸是否勾选再重启一次。复制粘贴不生效、文件拖不进去三个条件都要满足——增强功能已装、共享剪贴板设为双向、共享拖放设为双向缺一个都不行。设置完最好重启虚拟机让设置彻底生效。共享文件夹看不到或者没权限先确认挂载名称和下划线前缀对不对再看用户是否在 vboxsf 组里最后检查宿主目录的访问权限。系统时间不对或者越走越偏机制上依赖增强功能的时间同步先确认增强功能装好如果宿主本身时间就不准虚拟机跟着一起偏同步宿主时间即可。apt 更新报证书或者时间类错误八成是时间不对导致证书校验失败先对时再更新。8.3 一张表把高频问题收掉现象最可能原因处理动作提示硬件虚拟化不可用BIOS 未开启或被其他虚拟化功能占用进 BIOS 开启关闭宿主 Hyper-V 与内存完整性安装界面花屏、黑屏3D 加速与图形控制器不兼容关闭 3D 加速图形控制器改 VMSVGA鼠标不自由、卡顿增强功能未安装安装增强功能并重启分辨率无法自适应窗口增强功能未安装或设置未开装增强功能勾选自动调整显示尺寸宿主无法 SSH 连虚拟机NAT 模式缺端口转发配置端口转发规则 2222 到 22共享文件夹提示权限不足用户不在 vboxsf 组加入组并重新登录或重启内核升级后增强功能失效内核模块需按新内核重编译执行 vboxconfig 后重启虚拟磁盘空间不够初始容量设置过小关机后 resize 并扩容分区与文件系统虚拟机时间与宿主不一致时间同步服务异常确认增强功能检查对时服务克隆后网络异常MAC 地址冲突克隆时选择重新初始化 MAC 地址挂起恢复后网络断开网络状态未正确恢复重启网络服务或重启虚拟机虚拟磁盘文件越来越大动态磁盘不自动收缩清零空闲空间后执行 compact8.4 几条不写在文档里的实操经验第一条改动要一次只改一个变量。虚拟机出问题时很多人习惯把 3D 加速、图形控制器、显存、内存一起调结果问题解决了也不知道是哪一项起的作用下次遇到还得重新试。正确的做法是每次只改一个设置改完启动验证确认有效再继续虽然慢一点但知识沉淀下来了。第二条善用日志。VirtualBox 的日志文件在虚拟机的Logs目录下VBox.log记录了完整的启动过程出问题时翻到末尾看 ERROR 或者 WARN 行比瞎猜高效得多。图形相关的问题看看VBox.log里有没有 VMSVGA 相关的报错。第三条别把虚拟机当成永远不会坏的物理机。宿主系统更新、VirtualBox 版本升级、Ubuntu 内核升级任何一个环节都可能打破现有的平衡。所以每次升级宿主或者 VirtualBox 之前先把所有虚拟机做一次完整导出出问题还能恢复。第四条关于性能最有效的一招往往不是调参数而是把虚拟磁盘文件从机械硬盘挪到固态硬盘。这一招带来的提升比调内存、调 CPU、调显存加起来都明显。其次是给足内存和核心数再其次是关掉不必要的图形加速。虚拟机的性能瓶颈通常不在 CPU 虚拟化上而在存储 IO 上。我自己现在的工作流是这样的宿主机上常驻两台虚拟机一台 Ubuntu 桌面版用来做图形化的演示和调试一台 Server 版用来跑服务端代码和容器。两台都配置了 NAT 加仅主机的双网卡SSH 随时能进。重要节点装完系统、装完开发工具链、跑通某个大项目各打一个快照每周导出一次 OVA 到移动硬盘。这套环境我用了好几年中间换过三次宿主电脑每次都是把 OVA 导入新机器就接着用几乎无缝。真正花时间的从来不是安装那半小时而是后面把这些细节一点点调顺手的过程希望上面这些内容能让你少走点弯路。
阅读完成 · 觉得有帮助?
咨询建站