温馨提示×

VirtualBox中Ubuntu虚拟机如何克隆

小樊
46
2025-12-31 21:04:45
栏目: 云计算

在 VirtualBox 中克隆 Ubuntu 虚拟机的完整步骤

一 准备工作

  • 将源虚拟机完全关机(不是挂起/保存状态),避免磁盘状态不一致。
  • 规划好新虚拟机的名称存储位置,避免与源机冲突。
  • 若需要在另一台电脑使用,先确认目标主机已安装相同版本的 VirtualBox(建议一致),以便直接拷贝使用。

二 图形界面克隆步骤

  • 在 VirtualBox 管理器中选择源虚拟机,点击工具栏的克隆
  • 输入新虚拟机的名称保存位置
  • 选择克隆类型:
    • 完整克隆 Full Clone:完全独立的副本,推荐用于迁移或长期保留。
    • 链接克隆 Linked Clone:基于源磁盘的快照,节省空间,但依赖源磁盘。
  • 在向导中为网卡重新生成 MAC 地址(避免与源机冲突)。
  • 点击完成开始克隆,等待进度结束即可在列表中看到新虚拟机。

三 命令行克隆步骤(可选)

  • 关闭源虚拟机后,执行以下任一方式:
    • 直接克隆整台虚拟机(推荐):
      VBoxManage clonevm "源虚拟机名称" --name "新虚拟机名称" --register
      
    • 仅克隆虚拟磁盘(便于自定义新机配置):
      VBoxManage clonevdi "/path/to/source.vdi" "/path/to/new.vdi"
      
      然后在 VirtualBox 中新建虚拟机,在“选择虚拟硬盘”时使用已有硬盘并指向刚克隆的 VDI。
  • 提示:如需指定新机存放目录,可使用 VBoxManage 的**–basefolder**等参数。

四 克隆后 Ubuntu 的必要配置

  • 修改主机名(避免与源机冲突):
    sudo hostnamectl set-hostname 新主机名
    sudo sed -i "s/127\.0\.1\.1.*/127.0.1.1\t新主机名/g" /etc/hosts
    sudo reboot
    
  • 修改网络(Ubuntu 18.04+ 通常使用 netplan):
    • 编辑配置文件(文件名可能不同,如:/etc/netplan/00-installer-config.yaml/etc/netplan/50-cloud-init.yaml):
      sudo nano /etc/netplan/00-installer-config.yaml
      
    • addresses 改为同网段不冲突的 IP,例如从 192.168.3.101 改为 192.168.3.102
    • 应用配置:
      sudo netplan apply
      
  • 如仍有网卡未起来或名称变化,检查 /etc/netplan/ 下是否包含 renderer: NetworkManagerrenderer: networkd 并与实际环境匹配。
  • 旧版 Ubuntu(使用 ifupdown)可编辑 /etc/network/interfaces 后执行:
    sudo systemctl restart networking
    
  • 若克隆后网络接口缺失或异常,检查 /etc/udev/rules.d/70-persistent-net.rules 等遗留规则,删除与旧 MAC 相关的行并重启,以让系统使用新的网卡命名与规则。

五 跨电脑迁移与常见问题

  • 迁移方式:
    • 方式 A:在源机完成完整克隆后,将整个虚拟机文件夹(含 .vbox.vdi 等)拷贝到目标电脑,在目标电脑直接打开 .vbox 文件即可使用。
    • 方式 B:仅拷贝 .vdi 到目标电脑,新建虚拟机并在“选择虚拟硬盘”时注册/使用已有 VDI
  • 网络与冲突避免:
    • 迁移或克隆后务必重新生成网卡 MAC,并修改 IP 与主机名,避免与源机冲突。
    • 若采用 桥接 模式,请确保目标网络允许新的 MAC 接入。
  • 常见问题排查:
    • 无法获取 IP:检查 netplan 配置与 renderer 设置,执行 sudo netplan apply
    • 启动报错(如磁盘 UUID 冲突):在目标机为克隆盘重新生成 UUID
      VBoxManage internalcommands sethduuid "/path/to/cloned.vdi"
      
    • 克隆后网卡名变化(如从 eth0 变为 enp0s3):以 /etc/netplan/ 配置为准,避免依赖旧的接口名。

0