在电脑世界里,有时候我们需要“再来一台电脑”, 但买硬件既费钱又占地方,这时虚拟机就成了最佳选择。
VirtualBox 作为一款免费、开源、跨平台的虚拟机软件,可以让你在一台电脑里同时运行多个操作系统:
- 想在 Windows 上体验 Linux?它可以。
- 想用 Windows 11 家庭版跑一台 Windows XP?它也可以。
- 想测试新系统、试验软件、做安全隔离?它更是小菜一碟。
很多人觉得虚拟机很复杂,其实并不难——只要掌握核心步骤,你就能轻松装好系统、调好网络、共享文件夹,让虚拟机像“另一台真实电脑”一样工作。
本篇文章会带你从 安装 VirtualBox → 创建虚拟机 → 系统优化 全流程走一遍,并附上常见问题解决方案,让你少踩坑、多省心。 看完这一篇,你就能放心说:
“VirtualBox?我会了!”
一、快速开始
1. 下载与安装 VirtualBox
(1)打开官网:https://www.virtualbox.org
(2)点击 Downloads → 选择你的主机系统版本(Windows hosts / macOS hosts / Linux distributions)
(3)下载后运行安装包,一路 Next 即可(建议保持默认选项)
(4)安装完成后启动 VirtualBox
2、创建Ubuntu虚拟机
需要下载Ubuntu的IO镜像,下载地址:Index of /ubuntu-releases/
自定义账户密码、修改内存等操作,无需配置,如果电脑能够访问外网,则虚拟机无需配置,直接访问外网:
二、网络配置
1、默认网络
VirtualBox默认网络是什么模式呢?首先,虚拟机可以直接访问外网(如果物理机能连外网),且物理机的网卡看不到VirtualBox虚拟网卡(与vmware不同,vmware默认可看到两个网卡)。
那么,如果物理机有多个网卡,虚拟机使用的是哪个呢?
从上面的现象来看,能访问外网,貌似采用桥接的方式,看起来是连接外网的网卡。
那他能不能跟其他网卡交互呢?
为了弄清楚这个问题,我们打开Terminal继续看看。
(1)打不开Terminal
(2)更新软件试试也不行
(3)重启电脑也不行
(4)卸载系统自带的Terminal,装其他terminal可成功
(5)安装ifconfig指令报错
(6)切换root
(7)更新apt
(8)安装ifconfig
apt install net-tools
(9)查看网卡信息
2、Ping测试
情况是这样的,虚拟机(10.0.2.15)能够访问外网,我在物理机(有多个网卡,访问外网的IP是10.80.158.48)外面不能ping通虚拟机。这是为什么呢?
(1)虚拟机可以ping通物理机
看起来像是网卡设置有问题,我们继续。
3、查看网络设置并设置桥接模式
修改后虚拟IP自动修改,外部也能ping通了。
三、修改虚拟机交互
1、物理机与虚拟机来回拖放文件
(1)设置
(2)拖放错误
(3)重启没有解决问题
(4)安装增强功能
(5)提示当前光盘只能读
(6)整体移动一下文件到能够执行的目录
(7)安装未成功,暂不处理
(8)更新增强功能看看
更新失败。
(9)查看日志
DnD: Error: Drag and drop to guest not possible -- either the guest OS does not support this, or the Guest Additions are not installed
发现增强功能未正确安装。
先不解决吧。。。
2、物理机与虚拟机共享粘贴板
如下设置,重启后生效。这样就将物理机复制的东西粘贴到虚拟机,反之亦然。
3、设置共享文件夹
(1)初步设置
(2)验证
需要使用root进入共享文件夹,然后创建文件,可以在物理机上看到已生成文件,如果不生效,重启Ubuntu试试。
四、存储扩容
1、查看磁盘使用情况
如下所示,我的磁盘分配50G,现在快用完了,得想办法扩容!
smore@Ubuntu22:~$ df -mFilesystem 1M-blocks Used Available Use% Mounted ontmpfs 392 2 391 1% /run/dev/sda3 49581 47031 0 100% /tmpfs 1959 0 1959 0% /dev/shmtmpfs 5 1 5 1% /run/lock/dev/sda2 512 7 506 2% /boot/efitmpfs 392 1 392 1% /run/user/1000/dev/sr0 52 52 0 100% /media/smore/VBox_GAs_7.0.10smore@Ubuntu22:~$
2、在VirtualBox中扩展虚拟磁盘(.vdi文件)的大小
这个步骤是告诉VirtualBox:“这个虚拟硬盘现在可以更大一些了”。
(1)完全关闭虚拟机:
确保您的 Ubuntu 22 虚拟机处于完全关闭状态(不仅是休眠),在管理器列表中应显示为“已关机”。
(2)打开虚拟介质管理器:
在VirtualBox主管理器中,选中您的“Ubuntu 22”虚拟机。点击顶部菜单的 “管理” (Ctrl + G),然后选择 “虚拟介质管理器” (Ctrl + D)。
(3)扩展磁盘:
在“虚拟介质管理器”窗口中,您会看到所有已注册的虚拟硬盘文件。找到并选中名为 Ubuntu 22.vdi 的磁盘。点击右侧的 “属性” 选项卡(或右键点击磁盘选择“属性”)。在属性窗口中,您会看到一个 “大小” 的滑块和输入框。将其从当前的 50 GB 调整到您想要的新大小,例如 80 GB 或 100 GB。点击 “应用” 或 “确定” 保存更改。
3、在Ubuntu系统内部分配新空间
进入虚拟机,安装插件:
sudo apt updatesudo apt install gpartedsudo apt install cloud-guest-utils # 安装 growpart 工具sudo fdisk -l /dev/sda # 查看分区表,确认有未分配空间
出现以下打印:
smore@Ubuntu22:~$ sudo fdisk -l /dev/sda
GPT PMBR size mismatch (104857599 != 209715199) will be corrected by write. The backup GPT table is not on the end of the device. Disk /dev/sda: 100 GiB, 107374182400 bytes, 209715200 sectors Disk model: VBOX HARDDISK Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: gpt Disk identifier: D4950486-06FF-4E0C-AC1F-A70CCDCC9A89 Device Start End Sectors Size Type /dev/sda1 2048 4095 2048 1M BIOS boot /dev/sda2 4096 1054719 1050624 513M EFI System /dev/sda3 1054720 104855551 103800832 49.5G Linux filesystem smore@Ubuntu22:~$
这个表明:磁盘确实已经成功扩展到了 100GB,但存在 GPT 分区表问题。
4、修复分区
# 1. 修复 GPT 分区表sudo sgdisk -e /dev/sda# 2. 扩展分区sudo growpart /dev/sda 3# 3. 扩展文件系统sudo resize2fs /dev/sda3# 4. 验证结果echo "=== 分区表信息 ==="sudo fdisk -l /dev/sdaecho "=== 磁盘使用情况 ==="df -h
五、迁移虚拟机到其他盘符
1、复制虚拟机文件
通过以下方式找到虚拟机目录,直接将整个目录复制到其他磁盘即可。
2、注册
点击注册,选择虚拟机文件加载即可,期间可能会遇到一些问题。
(1)处理uuid问题
我们已经将虚拟文件复制到其他地方,如果直接注册加载复制的文件,将会报如下错误:
未能打开位于 E:/虚拟机/virtualbox/Ubuntu 22/Ubuntu 22.vbox 的虚拟电脑。Trying to open a VM config 'E:/虚拟机/virtualbox/Ubuntu 22/Ubuntu 22.vbox' which has the same UUID as an existing virtual machine.返回 代码:E_FAIL (0X80004005)组件:MachineWrap界面:IMachine {300763af-5d6b-46e6-aa96-273eac15538a}被召者:IVirtualBox {7682d5eb-f00e-44f1-8ca2-99d08b1cd607}
解决办法:删除原虚拟机,未防万一,这里仅移出,而不是删除
(2)处理虚拟机打开失败问题
当我们继续注册时,会报路径错误:
未能打开位于 E:/虚拟机/virtualbox/Ubuntu 22/Ubuntu 22.vbox 的虚拟电脑。被召者 RC:E_INVALIDARG (0X80070057)
解决办法:修改两个文件中的路径,填入文件的绝对路径
1654