前言
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"(修复权限)按钮
步骤六:验证导入结果
- 刷新 E-NetDev Web 界面
- 进入实验室编辑页面
- 右键添加节点,查看设备列表中是否出现新导入的镜像
- 启动设备测试运行状态
第四章:批量导入与高级技巧
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 镜像导入遵循”文件到位 → 权限修复 → 界面刷新”的标准流程。严格遵循命名规范和目录结构,是确保镜像被正确识别和运行的关键。

















私信站长