拓十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

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

Windows下用VirtualBox搭建Linux虚拟机:安装配置与排错指南

Windows下用VirtualBox搭建Linux虚拟机:安装配置与排错指南

1. 为什么我最终选了 VirtualBox 来跑 Linux:一次真实的选型复盘

先说一下背景。我手头有一台主力机,Windows 系统,平时搞开发、写文档、跑办公软件都靠它。但最近接手的一个项目需要在 Linux 环境里做部署验证,加上我想认真学一下 Linux 运维相关的命令和脚本,总不能每次要测一个命令就把物理机重装一遍系统吧?那也太折腾了。所以我的需求很明确:在一台 Windows 机器上,跑一个可以随时开、随时关、坏了能秒级重建的 Linux 环境。

市面上主流的方案无非是 VMware Workstation、Oracle VirtualBox 和 WSL 这三种。WSL 我试过,虽然启动快、集成度高,但它的网络行为和真实 Linux 服务器还是有差异,尤其是涉及 systemd 服务、网络抓包、内核模块这些场景时,WSL 会给我一种"隔靴搔痒"的感觉。VMware Workstation 功能确实强,快照、克隆、网络模式都很完善,但它是商业软件,授权费用不低,而且资源占用比 VirtualBox 要重一些。

Oracle VirtualBox 最打动我的点是三个:第一,开源免费,个人用和中小团队用没有授权成本;第二,跨平台,Windows、macOS、Linux 宿主机都能装,我笔记本上偶尔切到 Linux 桌面环境也能复用同一套虚拟机文件;第三,它支持导入 OVA/OVF 格式的镜像,社区里很多预装好的 Linux 模板可以直接拿来做测试,省去手动安装的等待时间。虽然它的性能相比 VMware 会有一点点折扣,但对跑 Linux 虚拟机做开发验证来说,这个差距完全可以接受。

另外我再补充一个真实使用场景。我经常需要同时开 2 到 3 台 Linux 虚拟机做集群联调,VirtualBox 的"仅主机网络(Host-Only)"模式配合 NAT 模式,可以非常方便地构建一个隔离的虚拟网络环境。每台虚拟机的 IP 我可以手动固定,宿主机也能通过 Host-Only 网卡直接 SSH 进去。这个用法在 VMware 里当然也能实现,但 VirtualBox 的配置路径更短,对于我这种需要频繁创建和销毁测试机的人来说,效率就是优势。

如果你和我一样,不想为了跑个 Linux 就重装物理机系统,也不想给 VMware 交授权费,那 VirtualBox 就是当前最务实的答案。这篇博文我会把从下载安装、创建虚拟机、启动 Linux、到配置增强功能、解决常见启动问题的完整链路都过一遍,把我自己踩过的坑和排查思路一并分享出来。

2. 从宿主机到虚拟机的第一公里:VirtualBox 安装与虚拟化前置检查

2.1 安装前的两个硬性前提:CPU 虚拟化与 Windows 功能开关

很多人装上 VirtualBox 之后发现"不能为虚拟机电脑打开一个新任务",或者新建的 Linux 虚拟机一启动就卡死、黑屏,第一个要排查的往往不是 VirtualBox 本身,而是宿主机的 CPU 虚拟化功能没有开启。

以 Intel 平台为例,这个功能叫 Intel VT-x,AMD 平台对应叫 AMD-V。大部分台式机主板默认是开启的,但笔记本尤其是办公机型,BIOS 里默认是关闭的。你可以在任务管理器 -> 性能 -> CPU 页面里看右下角有没有"虚拟化:已启用"的字样。如果显示"已禁用",就需要重启电脑进 BIOS(开机时按 F2、Del 或 F10,不同品牌不一样)找 Intel Virtualization Technology 或 SVM Mode 之类的选项,手动打开。

这一步不做,后面启动 Ubuntu 或者 CentOS 虚拟机大概率会报错,或者即便能进系统,性能也慢得让人抓狂。我用过一台老办公笔记本跑 Debian 虚拟机,没开 VT-x 之前启动要五分钟,开了之后一分钟内就能进桌面。虚拟化开关对性能的差距就是这么直观。

2.2 安装路径与组件勾选:少踩一个坑

VirtualBox 的安装包直接从官网下载对应 Windows 版本就行,但有两个细节我想提醒一下。第一,安装路径不要带中文或空格,有些第三方工具链在解析 VirtualBox 路径时会出问题,虽然现在新版好了很多,但没必要冒这个险。第二,安装过程中会提示安装 Oracle VirtualBox USB 驱动、网络驱动之类的组件,建议全部勾选。尤其是网络驱动,如果不装,虚拟机里没法用桥接网络,后面配置联网会非常别扭。

安装完成后,如果你之前的 Windows 系统里装过 Hyper-V 或者 Windows 沙盒,可能会遇到和 VirtualBox 的兼容性冲突。原因是 Hyper-V 会占用 CPU 虚拟化层,导致 VirtualBox 无法直接调用 VT-x。解决办法有两个方向:一是在"控制面板 -> 程序 -> 启用或关闭 Windows 功能"里把 Hyper-V 和 Windows 虚拟机监控程序平台关掉;二是保留 Hyper-V,但这样 VirtualBox 就只能退回到软件虚拟化模式,性能会大幅下降。我个人建议是,既然主要用 VirtualBox,就干脆把 Hyper-V 关掉,两者共存带来的问题远比想象的更多。

3. Linux 虚拟机的创建过程:看似简单的向导里藏着决定成败的细节

3.1 内存、CPU、显存与磁盘:这些参数到底怎么给才合理

新建虚拟机的向导看起来傻瓜化,但很多人在参数这里随便填,结果装出来的 Linux 系统要么卡顿要么磁盘不够用。我基于自己的使用经验,把不同用途的 Linux 虚拟机参数整理成了一张表,方便你对照参考:

用途场景内存CPU 核心显存磁盘大小磁盘类型
最小化命令行环境(跑脚本、学命令)2 GB2 核16 MB20 GBVDI 动态分配
带桌面环境的日常使用(Ubuntu 桌面)4 GB4 核128 MB50 GBVDI 动态分配
开发编译环境(装 IDE、跑容器)8 GB4 核256 MB100 GBVDI 动态分配
集群联调节点(多开虚拟机的场景)1~2 GB1~2 核16 MB20 GBVDI 动态分配

关于内存,我特别想提醒一句:给虚拟机分配的内存不应该超过宿主机总内存的一半,否则宿主机自己会变得非常卡,反过来影响虚拟机运行。比如你宿主机只有 8 GB 内存,却给 Ubuntu 分了 6 GB,打开几个浏览器标签页之后,整个机器基本就动弹不得了。我自己一般遵循"4 GB 分配、宿主机留 4 GB"的原则,这在小尺寸笔记本上跑得非常顺。

磁盘这块建议选"VDI 动态分配"。它和"固定大小"的区别在于,动态分配的虚拟磁盘文件一开始只有几 MB 或几十 MB,随着虚拟机里数据越来越多逐步膨胀。好处是不浪费宿主机磁盘空间,坏处是性能比固定大小的稍微差一点点。但对日常跑 Linux 来说,动态分配的损耗根本感知不到。我见过有人贪图性能用固定大小,结果一下子把宿主机磁盘吃掉了 50 GB,后面想压缩都不好弄。除非你是跑数据库之类的重磁盘负载场景,否则一律推荐动态分配。

3.2 存储控制器选 IDE 还是 SATA,这里有一个容易踩的坑

VirtualBox 创建虚拟机时默认会给一个虚拟 SATA 控制器和一个 IDE 控制器。这在我第一次装 Linux 时差点被坑到:我把虚拟光驱(就是放 ISO 镜像文件的那个设备)挂到了 SATA 控制器下,结果启动时 Linux 安装程序死活找不到安装介质。后来查资料才知道,某些旧版 Linux 发行版的安装内核里没有完整的 SATA 驱动,只认 IDE 接口的光驱。

遇到这个问题时,最简单的处理办法是在虚拟机设置 -> 存储 -> 控制器 IDE 下,把 IDE 光驱指向你的 Linux ISO 文件,然后把 SATA 控制器下的光驱移除。换句话说,虚拟光驱挂在 IDE 控制器下,虚拟硬盘挂在 SATA 控制器下,这样兼容性最高,尤其是用 CentOS 7、老版本的 Ubuntu Server 这种发行版时,几乎不会出现找不到安装介质的情况。截图里那些"无效设置"的报错,十有八九都和存储控制器的挂载位置有关。

3.3 启动顺序:别把硬盘放在光驱前面

新建虚拟机后默认的启动顺序一般是光驱优先、硬盘其次,但这只适用于第一次安装系统时。装完之后,如果你没有把 ISO 从光驱里退出来,虚拟机每次重启都会重新进入安装界面,而不是直接启动硬盘上的系统。处理方式有两种:一是装完后在设置 -> 存储 里把光驱的 ISO 文件清空;二是在 设置 -> 系统 -> 启动顺序 里把硬盘拖到最上面。

我建议两种都做,双保险。因为我已经见到过不止一次,同事在硬盘启动顺序正确的情况下,虚拟机还是进了安装引导,最后发现是光驱里还残留着 ISO 镜像。记住一句话:安装系统时用光驱引导,装完系统后一定要把光驱"空置"。

4. Linux 启动过程中的经典报错排查:从黑屏到 command not found

4.1 "不能为虚拟机电脑打开一个新任务"的完整排查链路

这项报错在 VirtualBox 社区里非常高频,它的英文原文一般是这样的:

Failed to open a session for the virtual machine XXX.
VT-x is not available (VERR_VMX_NO_VMX).

如果你在启动虚拟机时看到类似的提示,意味着 VirtualBox 无法使用硬件虚拟化。排查链路我按顺序梳理一遍,你照着走基本就能定位:

  1. 第一步:确认 CPU 虚拟化开关。按我之前说的,去任务管理器看"虚拟化:已启用"还是"已禁用"。如果显示已禁用,进 BIOS 打开 VT-x 或 AMD-V,保存退出重启。
  2. 第二步:排查 Hyper-V 冲突。按 Win + R 输入 optionalfeatures,打开 Windows 功能窗口,看 Hyper-V、Windows 虚拟机监控程序平台、Windows 沙盒这三个有没有被勾选。有的话全部取消勾选,重启电脑。
  3. 第三步:检查是否安装了其他虚拟化软件。比如 Docker Desktop 如果用的 WSL2 后端,会在底层启用虚拟化平台,也可能和 VirtualBox 冲突。如果你不依赖 Docker Desktop,可以先退出它再测试虚拟机。
  4. 第四步:更新 VirtualBox 版本。老版本的 VirtualBox 对较新的 CPU 支持不完善,建议直接升到 7.x 最新版。我之前就是在 6.1 版本上被这个报错卡了很久,升级到 7.0 之后问题迎刃而解。

顺便提一句,处理这类问题时要有点耐心。有一次我全部排查完之后报错依旧,最后发现是 BIOS 里明明改了设置但忘了保存,重启之后设置被还原了。这个细节虽然很蠢,但在急躁的时候确实容易漏掉。

4.2 虚拟机 Ubuntu 黑屏进不去桌面:三种最常见的诱因

"虚拟机 Ubuntu 黑屏进不去桌面"这个问题同样非常高频,我把它分成三种诱因来排查:

诱因一:显存分配不足或显卡模式不对。这是最常见的一种。默认的显存可能只有 16 MB,带不动 Ubuntu 的高分辨率桌面。解决方法是:关闭虚拟机,在设置 -> 显示 里把显存调到 128 MB 或 256 MB,同时把"显卡控制器"改为 VBoxSVGA(Windows 宿主机推荐)或 VMSVGA(Linux 宿主机推荐)。改完之后再启动,桌面大概率能正常显示。

诱因二:虚拟机内部的图形驱动被内核更新搞坏了。这个情况往往出现在你给 Ubuntu 执行过 apt upgrade 之后,内核版本一变,VirtualBox Guest Additions(增强功能)的模块和内核版本不匹配,导致 X 服务起不来。解决方案是在装完新内核后重新运行一次增强功能的安装脚本,或者干脆把虚拟机的 GRUB 引导回退到旧的可用内核。这一条我放到后面增强功能的部分再展开细说。

诱因三:等待时间不够。听起来有点搞笑,但实测中确实有大量"黑屏"案例是虚惊一场。尤其是在没有开启硬件加速的老机器上,Ubuntu 桌面启动可能要一到两分钟,期间屏幕一直停留在一个黑洞洞的画面,很多人以为死机了就强制关机。实际上只要 CPU 占用率一直有波动、磁盘有 IO 活动,说明系统还在启动过程中,耐心等一会就好。判断方法是看 VirtualBox 窗口右下角的磁盘灯有没有在闪。

4.3 Linux 系统内部的启动诊断:journalctl 与 dmesg 的正确打开方式

如果虚拟机能正常开机,但进入系统后某些服务启动失败或者网络不可用,这时候就要进系统内部做诊断了。我通常按这个顺序来:

先看系统日志,命令是:

journalctl -b -p 3

这个命令会显示本次开机级别为 error 及以上(级别 3 对应 error)的日志,能快速定位启动过程中有哪些硬件或服务报错。如果日志输出为空,说明系统本身启动没有问题。

再看内核环形缓冲区信息:

dmesg -l err

这个命令会过滤出内核的 error 级别信息。我在排查虚拟机网卡不工作的问题时,经常通过 dmesg 看到类似e1000: probe of eth0 failed的报错,然后就能判断是网卡的虚拟化驱动没有加载成功,直接重装增强功能就能解决。

如果你是刚接触 Linux 运维的读者,我想多说一句:别太依赖图形界面的错误弹窗,那些弹窗给的信息往往不完整。学会看日志,学会用这几个命令,排查问题的效率会翻好几倍。

5. 增强功能(Guest Additions)是一切的润滑剂:安装、验证与常见坑

5.1 为什么装完 Linux 之后必须马上装增强功能

所谓增强功能,是 VirtualBox 提供的一套虚拟机的"驱动包+辅助工具"。装之前,虚拟机里的 Linux 体验非常粗糙:分辨率只有可怜的 800x600、鼠标在宿主机和虚拟机之间切换需要用"热键"释放、剪贴板不共享、文件拖拽也别想。装完增强功能之后,这些痛点全部消失:

  • 分辨率可以自适应虚拟机窗口大小,随意拉伸;
  • 鼠标指针可以在宿主机和虚拟机之间无缝移动;
  • 共享剪贴板,支持双向复制粘贴;
  • 可以通过共享文件夹在宿主机和虚拟机之间传文件;
  • 网卡性能和其他硬件兼容性大幅提升。

对跑 Linux 的虚拟机来说,增强功能几乎是必需品。我见过有人硬顶着 800x600 分辨率在虚拟机里敲了好几天命令,那个体验有多痛苦,谁试谁知道。

5.2 安装过程:从挂载 ISO 到重新启动

安装增强功能的步骤并不复杂:

  1. 在虚拟机窗口菜单栏点:设备 -> 安装增强功能(Insert Guest Additions CD image)。这一步会把一个虚拟光驱挂载到 Linux 系统里。
  2. 进入 Linux 系统,打开终端,先安装编译必需的工具链。以 Ubuntu 系为例:
sudo apt update sudo apt install -y build-essential dkms linux-headers-$(uname -r)
  1. 挂载光驱并执行安装脚本:
sudo mount /dev/cdrom /mnt cd /mnt sudo ./VBoxLinuxAdditions.run
  1. 安装完成后重启虚拟机:
sudo reboot

重启之后,增强功能就生效了。验证方法很简单:试试能不能随意拉伸窗口、鼠标能不能自由跨越宿主机和虚拟机的边界。如果都正常,说明安装成功。

5.3 增强功能失效后我总结的三条修复经验

安装增强功能的报错是高发区,尤其以这三个坑频率最高:

坑一:缺少 linux-headers 包。编译增强功能驱动需要内核头文件,如果没装,安装脚本会报错Please install the build and header files。解决办法就是先执行sudo apt install -y linux-headers-$(uname -r),其中$(uname -r)会自动带上你当前的内核版本号,不用手动查。这一点对新手特别友好,我第一遍手动找版本号找了半天,后来发现用命令替换最省事。

坑二:内核版本升级后增强功能失效。Ubuntu 每次执行系统更新,都有可能升级内核。新内核一换,旧增强功能编译的模块就失效了,最常见的表现是分辨率突然变回 800x600、共享剪贴板失灵。解决办法就是重新执行一遍sudo ./VBoxLinuxAdditions.run,让它针对新内核重新编译。如果安装脚本提示需要先卸载旧版本,可以加上--uninstall参数先清理一遍再重新装。

坑三:安全启动(Secure Boot)拦截驱动模块。如果你的虚拟机 BIOS 里开启了 Secure Boot,Linux 内核会拒绝加载未签名的 VirtualBox 内核模块,增强功能装了等于没装。解决办法有两个方向:一是去 设置 -> 系统 -> 固件 里关闭 Secure Boot;二是在系统提示时使用 MOK 工具手动注册 VirtualBox 的公钥。为了简单起见,我一般直接关闭 Secure Boot,毕竟虚拟机上跑的大多是测试环境,安全启动的价值不大。

6. Linux 虚拟机的外部网络联通:NAT、桥接到 Host-Only 的选择与切换

6.1 三种网络模式的行为差异,我用大白话给你讲明白

VirtualBox 为每个虚拟机网卡提供了若干网络模式,日常使用中最常见的是 NAT、桥接网卡(Bridged)和 Host-Only 这三种。我用一个类比来说:

  • NAT(网络地址转换):相当于虚拟机躲在一堵墙后面,通过宿主机这个"代理"去访问外网。宿主机知道虚拟机,虚拟机能上网,但外面的设备访问不到虚拟机。
  • 桥接网卡(Bridged):相当于虚拟机直接插到了宿主机同一个交换机上,它和宿主机是"平级"关系,会获得一个局域网 IP,外部设备可以直接访问它。
  • Host-Only(仅主机):相当于宿主机和虚拟机单独拉了一根网线组成一个小局域网,和外界完全隔离,只有宿主机能访问虚拟机。

我个人的使用习惯是:日常上网装软件用 NAT,模拟局域网部署用桥接或 Host-Only。这里要注意一下,如果你的宿主机是通过 Wi-Fi 上网,桥接模式有时候会因为无线网卡驱动问题导致虚拟机拿不到 IP。这时候可以切到 NAT 或者 Host-Only,避免在无线环境里较劲。

6.2 静态 IP 配置:避免每次开机都要重新确认 IP

虚拟机默认用 DHCP 动态获取 IP,但频繁重启之后 IP 可能会变,这对 SSH 连接非常不友好。我更推荐给虚拟机配置静态 IP。以 Ubuntu Server 22.04 为例,它使用 netplan 来管理网络配置,设置静态 IP 的步骤如下:

先查看当前网卡名称:

ip addr

一般 VirtualBox 虚拟机里第一块网卡叫enp0s3或eth0,记下这个名字。然后编辑 netplan 配置文件:

sudo vim /etc/netplan/00-installer-config.yaml

把内容改成类似这样(假设用 NAT 模式,网关指向默认的 10.0.2.2,DNS 用公共的):

network: ethernets: enp0s3: dhcp4: no addresses: - 10.0.2.15/24 routes: - to: default via: 10.0.2.2 nameservers: addresses: [8.8.8.8, 114.114.114.114] version: 2

然后应用配置:

sudo netplan apply

这里我想补充一个细节:VirtualBox 的 NAT 模式固定默认网关是10.0.2.2,虚拟机自己的 IP 通常是10.0.2.15。所以就算你不动 netplan,直接用这个 IP 和网关,也能配出可用的静态地址。但如果你用的是桥接模式,网关就应该是你局域网路由器的地址(比如 192.168.1.1),千万别把 NAT 的网关地址照搬过去。

6.3 SSH 连接的几个小优化

如果你和我一样习惯用宿主机上的终端(比如 MobaXterm 或 Windows Terminal)去 SSH 连接虚拟机,有几个小优化值得做:

第一,在虚拟机里安装 openssh-server:

sudo apt install -y openssh-server sudo systemctl enable ssh --now

第二,如果用的是 NAT 模式且宿主机无法直接 SSH 到虚拟机,可以在 VirtualBox 的 设置 -> 网络 -> 高级 -> 端口转发 里加一条规则:宿主机端口 2222 转发到虚拟机的 22 端口。这样宿主机上执行ssh -p 2222 user@127.0.0.1就能连上虚拟机。这个方法看似绕了一圈,但在 Wi-Fi 桥接不稳定的场景下非常实用。

第三,关闭虚拟机里的 SSH 密码询问或者设置免密钥登录,这些属于通用 Linux 技巧,就不展开说了,但强烈建议做一下,能省下每次输密码的烦琐。

7. USB 设备无法挂载与共享文件夹:虚拟机联动的两个小门道

7.1 USB 设备挂载的正确姿势

"VirtualBox 无法挂载 USB 设备"是另一座高频踩坑点。这个问题在 Windows 宿主机上通常有这几层原因:

第一层:没有安装增强功能。USB 2.0 和 USB 3.0 的设备支持依赖扩展包(Extension Pack),而不仅仅依赖基础安装。如果只装了 VirtualBox 本体,USB 设备只能走 USB 1.1 的古老协议,不仅很多设备识别不了,就算识别了速度也惨不忍睹。解决办法是到官网下载对应版本的 Extension Pack,然后双击安装。

第二层:没有把 USB 控制器设置为 USB 3.0。进入虚拟机设置 -> USB,把 USB 控制器选成 USB 3.0(xHCI)或更高版本。如果你插的是 USB 3.0 的 U 盘,用默认的 USB 1.1 控制器,VirtualBox 会一直报"设备连接失败"。

第三层:Windows 宿主机上运行 VirtualBox 需要用管理员权限启动一次。这一步很多人会忽略。某些 USB 设备的驱动注册需要管理员权限,如果 VirtualBox 不是以管理员身份启动的,它无法正常枚举宿主机上的 USB 控制器。实测下来用管理员身份运行 VirtualBox 后,之前怎么插都识别不出的 U 盘,一下就正常了。

7.2 共享文件夹:最稳妥的宿主机与虚拟机文件互传方案

相比 USB 设备,我更推荐用 VirtualBox 的共享文件夹功能来传文件,因为它的机制更简单、更稳定。操作步骤:

  1. 在虚拟机窗口菜单栏:设备 -> 共享文件夹 -> 共享文件夹设置。
  2. 添加一个共享路径,比如 Windows 下的D:\share,给它起个名字如share,勾选"自动挂载"和"固定分配"。
  3. 进入 Linux 虚拟机,执行挂载命令:
sudo mkdir -p /mnt/share sudo mount -t vboxsf share /mnt/share

这里有个细节要注意:共享文件夹的名字和挂载命令里的share必须完全一致,大小写也要匹配。如果你在 VirtualBox 里起名Share,命令里写成share,就会报挂载失败。

还有一点,如果你希望重启虚拟机后共享文件夹自动挂载,光靠上面的 mount 命令不够。最简单的方式是在/etc/fstab里加一行:

share /mnt/share vboxsf defaults 0 0

加完之后,每次开机自动挂载,就不用再手动敲命令了。我之前在这上面跌过跟头,因为偷懒没加 fstab,重启一次就要手动 mount 一次,次数多了真的会烦。

8. 虚拟机的备份、克隆与回收:大规模折腾 Linux 的终极底气

8.1 快照按钮,是 Linux 实验环境里最值得依赖的功能

我敢在虚拟机里随便折腾 Linux 系统,一个重要底气就是 VirtualBox 的快照功能。它的原理是记录虚拟机在一个时间点的完整状态,之后无论你怎么改坏了系统,只要恢复到那个快照,立刻回到当时的干净状态。

操作方式非常简单:虚拟机运行时或关机状态下,点菜单栏:控制 -> 拍照(或快捷键 Ctrl+T)。给快照起一个容易辨认的名字,比如"装完增强功能-基础环境"、"已配置静态IP"。之后想恢复时,在 控制 -> 快照 里选中对应快照点"恢复"即可。

这里我分享一个个人经验:在给系统做大动作之前(比如内核升级、安装大型软件包),一定要先拍一个快照。哪怕你对自己的操作很有信心,也要拍。内核升级这种操作,一旦翻车,轻则驱动失效,重则系统起不来,有了快照,两分钟就能回血。我本人在踩过几次内核升级的坑之后,已经养成了"升级前必快照"的习惯,这个习惯值得所有玩虚拟机的人借鉴。

8.2 克隆与导出:规模化使用时的效率工具

如果你需要同时开多台配置相同的 Linux 虚拟机做联调,最笨的办法是每台重新装系统,效率极低。VirtualBox 的克隆功能可以在几分钟内复制出一台完全相同配置的虚拟机。操作方式:选中虚拟机 -> 右键 -> 克隆。这里有一个选项建议选"完全克隆",虽然会多占一些磁盘空间,但复制出来的虚拟机完全独立,不会像"链接克隆"那样要依赖母机存在。

导出则是把虚拟机打包成一个.ova文件,方便移植到别的电脑上,或者留档。在 VirtualBox 主界面:文件 -> 导出虚拟电脑,选择 OVF/OVA 格式即可。导入时是逆操作:文件 -> 导入虚拟电脑。

有一点要提醒:导出时记得先把虚拟机里的系统关机,不要在运行状态下导出。运行状态下导出的镜像,文件本身可用,但恢复时会处于未正常关闭的状态,部分服务可能会出问题。这是我在一次演示前临时导虚拟机的惨痛教训。

8.3 虚拟机的"垃圾回收":临时磁盘文件占空间的解决办法

虚拟机用得久了,宿主机的磁盘会被虚拟磁盘文件(VDI)逐步蚕食。明明虚拟机里只放了 5 GB 数据,VDI 文件却膨胀到 20 GB,这是因为动态分配磁盘删除数据后,不会自动把空间还给宿主机。解决办法有两条:

一是用 VBoxManage 命令进行压缩。步骤如下:先在虚拟机里执行清零:

sudo dd if=/dev/zero of=/tmp/zero bs=1M sync rm /tmp/zero

这一步的作用是把未使用的磁盘空间全部填充成 0,方便 VirtualBox 识别哪些块是"空"的。然后关机,在宿主机命令行执行:

VBoxManage modifyhd 你的虚拟磁盘.vdi --compact

执行完之后 VDI 文件会显著缩小。第二种办法是直接重建虚拟机磁盘,操作复杂一些,但对有特殊需求的场景更彻底。这里不展开讲了,压缩命令已经能解决九成以上的空间回收需求。

9. 我长期使用 VirtualBox 跑 Linux 的一点心得体会

写到最后,我想把这些年实打实用 VirtualBox 跑 Linux 的几点心得做个沉淀,不一定有多高深,但都是我踩过坑之后总结出来的。

第一,VirtualBox 对 Linux 的支持,其实比很多人想象中要成熟。配合增强功能,Ubuntu、CentOS、Debian 这些主流发行版都能流畅运行,日常开发、编译、跑服务完全够用。它和 VMware 的差距主要体现在大型图形应用或高频 IO 场景,但对绝大多数学习、实验和开发验证来说,这个差距不会构成瓶颈。

第二,遇到问题时,用日志说话,别靠猜。虚拟机层面的报错,先看 VirtualBox 的日志(在菜单栏"帮助 -> 查看日志"里能调出 VBoxHardening.log 之类的文件);系统内部的错误,用journalctl和dmesg去定位。把问题精确到某一行报错,再去搜解决方案,比盲目试各种操作高效得多。

第三,多利用快照和克隆来让自己"敢折腾"。Linux 学习很大程度上是在试错中完成的,哪个命令不敢跑、哪个配置怕改坏,就先把快照拍了再动手。有个可靠的回滚机制,你的尝试就会更放得开,学习效率也会明显更高。

第四,关于 Linux 发行版的选择,如果你是完全的新手,从 Ubuntu 桌面版入手会很友好;如果你已经有一些基础、想往运维方向走,那 CentOS Stream 或 Debian Server 都是不错的模拟环境。VirtualBox 没有"最佳发行版"的说法,只有最贴合你目标的发行版。

最后还有一个小技巧,算是赠送给看到这里的读者。如果你在 VirtualBox 里装的是命令行版的 Linux(不带桌面),把显存调到最小,关掉 3D 加速,然后在 设置 -> 显示 -> 显卡控制器 里选择 VBoxVGA,启动速度会有肉眼可见的提升。省下来的资源拿去跑服务,体验会好很多。

返回列表