E-NetDev 模拟器:QEMU 镜像导入指南


前言

E-NetDev 模拟器支持 QEMU 虚拟化技术,可导入各类网络设备镜像(如华为、华三、思科、锐捷等厂商设备),扩展实验环境的设备类型覆盖。本文详细介绍 QEMU 镜像的完整导入流程。


第一章:QEMU 镜像基础

1.1 支持的镜像格式

E-NetDev 仅支持 QCOW2 格式 的 QEMU 镜像文件 。导入前请确保镜像已转换为该格式。

1.2 镜像文件命名规范

文件类型命名要求说明
磁盘镜像virtioa.qcow2主系统磁盘,必须以此命名
附加磁盘virtiob.qcow2第二块磁盘(如有)
数据磁盘hda.qcow2 / hdb.qcow2部分旧版本兼容命名

关键规则:镜像文件必须放置在特定命名的文件夹内,且文件夹名称需符合官方模板命名规范 。


第二章:导入前准备

2.1 所需文件清单

导入 QEMU 镜像需要准备以下四类文件 :

文件类型存放路径作用
镜像文件夹(含 .qcow2/opt/unetlab/addons/qemu/设备运行的磁盘文件
模板文件.yml/opt/unetlab/html/templates/定义设备参数(CPU、内存、网卡等)
图标文件.png/opt/unetlab/html/images/icons/设备在拓扑中的显示图标
配置脚本.py,可选)/opt/unetlab/scripts/设备配置导出/导入脚本

2.2 目录命名规范

镜像文件夹可遵循 厂商名-设备型号-版本号 格式 :

正确示例:
Huawei-USG6000v-5.1.7
H3C-S5560-7.1.045
Cisco-ASAv-9.12.1

错误示例:
huawei_usg          # 缺少版本号,使用下划线
USG6000             # 缺少厂商前缀

第三章:镜像导入步骤

步骤一:创建镜像目录

通过 SSH 登录 E-NetDev 服务器,创建镜像存放目录:

mkdir -p /opt/unetlab/addons/qemu/Huawei-CE6800-8.0.0

目录名中的版本号可自定义,但需与后续模板文件中的名称保持一致 。


步骤二:上传镜像文件

使用 SFTP 工具(如 WinSCP、FileZilla)将镜像文件上传至目标目录:

上传方式操作说明
图形化工具拖拽 virtioa.qcow2/opt/unetlab/addons/qemu/Huawei-CE6800-8.0.0/
命令行下载wget https://example.com/huawei-ce6800.qcow2

上传后目录结构示例:

/opt/unetlab/addons/qemu/
└── Huawei-CE6800-8.0.0/
    └── virtioa.qcow2

步骤三:上传模板文件

模板文件(.yml)定义设备的运行参数 。根据服务器 CPU 类型选择对应目录:

CPU 类型模板存放路径
Intel/opt/unetlab/html/templates/intel/
AMD/opt/unetlab/html/templates/amd/

模板文件示例(huawei-ce6800.yml):

---
type: qemu
description: Huawei CE6800 Switch
name: CE6800
cpulimit: 1
icon: Router.png
cpu: 2
ram: 4096
ethernet: 8
console: telnet
qemu_arch: x86_64
qemu_version: 4.1.0
qemu_nic: virtio-net-pci
qemu_options: -machine type=pc,accel=kvm -vga std -usbdevice tablet -boot order=c
...

步骤四:上传图标文件

将设备图标(.png 格式)上传至图标目录:

/opt/unetlab/html/images/icons/

图标名称需与模板文件中 icon: 字段保持一致。


步骤五:修复权限

关键步骤:每次导入镜像后必须修复权限,否则系统无法识别和管理虚拟机 。

方式一:命令行修复

/opt/unetlab/wrappers/unl_wrapper -a fixpermissions

方式二:Web 界面修复

System(系统) → System Settings(系统设置) → 点击"Fix Permissions"(修复权限)按钮

步骤六:验证导入结果

  1. 刷新 E-NetDev Web 界面
  2. 进入实验室编辑页面
  3. 右键添加节点,查看设备列表中是否出现新导入的镜像
  4. 启动设备测试运行状态

第四章:批量导入与高级技巧

4.1 压缩包导入方式

若获取的镜像为压缩包格式(.tgz / .tar.gz),按以下流程处理 :

# 1. 下载压缩包
cd /opt/unetlab/addons/qemu/
wget https://example.com/huawei-usg6kv-5.1.7-2018.tgz

# 2. 解压
tar -zxvf huawei-usg6kv-5.1.7-2018.tgz

# 3. 重命名目录(符合命名规范)
mv huaweiusg6kv-5.1.7-2018 Huawei-USG6000v-5.1.7

# 4. 检查内部文件
ls Huawei-USG6000v-5.1.7/
# 应包含:virtioa.qcow2

# 5. 修复权限
/opt/unetlab/wrappers/unl_wrapper -a fixpermissions

4.2 使用 ishare 工具在线导入

E-NetDev 即将内置 ishare 命令,支持从在线仓库直接拉取镜像 :

# 搜索镜像
ishare search Huawei

# 拉取指定镜像
ishare pull huaweiar1k-5.170

# 拉取完成后自动修复权限

4.3 自定义 Linux 镜像导入

对于非预置的自定义系统(如 Debian、Ubuntu),需手动创建 QCOW2 磁盘 :

# 1. 创建空白磁盘
qemu-img create -f qcow2 hda.qcow2 30G

# 2. 启动安装介质
qemu-system-x86_64 -accel kvm -m 1024 -smp 2 \
  -cdrom debian-12.5.0-amd64-netinst.iso -boot d \
  -hda hda.qcow2

# 3. 安装完成后,将 hda.qcow2 放入 E-NetDev 镜像目录
mkdir -p /opt/unetlab/addons/qemu/Custom-Debian-12
mv hda.qcow2 /opt/unetlab/addons/qemu/Custom-Debian-12/

# 4. 创建对应模板文件并修复权限

第五章:常见问题排查

问题现象可能原因解决方案
Web 界面不显示新镜像权限未修复执行 unl_wrapper -a fixpermissions
设备启动失败镜像文件名错误确认主磁盘命名为 virtioa.qcow2
目录名不规范系统无法识别改为 厂商-型号-版本 格式
模板不匹配CPU 类型错误Intel/AMD 模板分目录存放
节点添加后报错缺少图标文件上传 .png 图标至 images/icons/
沙箱导入镜像不存在镜像文件夹名与模板名不一致修改 .unl 文件或重命名文件夹

第六章:文件路径速查表

用途绝对路径
QEMU 镜像存放/opt/unetlab/addons/qemu/设备名-版本/
Intel CPU 模板/opt/unetlab/html/templates/intel/
AMD CPU 模板/opt/unetlab/html/templates/amd/
设备图标/opt/unetlab/html/images/icons/
配置脚本/opt/unetlab/scripts/
权限修复命令/opt/unetlab/wrappers/unl_wrapper -a fixpermissions

E-NetDev 模拟器的 QEMU 镜像导入遵循”文件到位 → 权限修复 → 界面刷新”的标准流程。严格遵循命名规范和目录结构,是确保镜像被正确识别和运行的关键。


© 版权声明
THE END
喜欢就支持一下吧
点赞12 分享