[i=s] 本帖最后由 xzjt 于 2026-1-29 20:17 编辑 [/i]
关于 iMaster NCE-Campus 镜像网卡名称偏移的修复公告
各位用户:
由于在制作 iMaster NCE-Campus 镜像过程中的疏忽,镜像内残留了原有的 udev 网卡规则。这会导致镜像在 EVE-NG 环境中启动时出现以下问题:
- 网卡名称偏移:原本的
eth0 可能会被识别为 eth1,导致预置脚本失效。
考虑到镜像体积巨大,重新上传分发耗时较长,现提供以下两种修复方案。
修复方案
方案一:系统启动后手动修复(临时方案)
适用场景:仅需单次实验,且不打算执行 Wipe(清除)操作的用户。
- 优点:操作门槛低,无需进入宿主机后台。
- 缺点:修复非持久化。一旦执行 Wipe 或删除节点重新拖取,必须再次手动修复。
操作命令: 使用 root 账户登录系统命令行后执行:
Bash
rm -f /etc/udev/rules.d/50-persistent-net.rules
reboot
方案二:底层母盘静默修复(永久方案 - 强烈推荐)
适用场景:希望“一劳永逸”,确保后续任何时候部署、重置节点均能正常运行。
- 优点:直接修改
.qcow2 母盘,修改永久生效,不惧 Wipe。
- 缺点:需在 EVE-NG 宿主机命令行操作,逻辑较为复杂。
操作步骤: 请严格按照以下命令序列在 EVE-NG 宿主机执行:
Bash
# 1. 进入镜像所在目录
cd /opt/unetlab/addons/qemu/iMaster-NCE-Campus-V300R024C00
# 2. 准备挂载点与驱动
mkdir -p /mnt/nce
modprobe nbd
# 3. 连接镜像
qemu-nbd --connect=/dev/nbd0 virtioa.qcow2
# 等待 2 秒确保内核识别分区表
sleep 2
# 4. 临时重命名卷组 (使用 UUID 锁定,绝对防止与宿主机 VG 冲突)
vgrename 12f7WD-8tjl-fOWr-j6Wo-ubY0-MBEr-uB8A0Z nce_fix_root
# 5. 激活卷组并挂载根分区
vgchange -ay nce_fix_root
mount /dev/mapper/nce_fix_root-root /mnt/nce
# 6. 执行核心清理
echo "Cleaning udev rules..."
rm -f /mnt/nce/etc/udev/rules.d/50-persistent-net.rules
# 7. 标准化卸载与还原 (!!! 必须执行还原,否则无法开机 !!!)
umount /mnt/nce
vgchange -an nce_fix_root vg_vda
vgrename nce_fix_root vg_root
# 8. 断开 NBD 设备并清理环境
qemu-nbd -d /dev/nbd0
rmmod nbd
rm -rf /mnt/nce
⚠️ 重要提示
- 必须还原名称:在方案二的最后,务必执行
vgrename ... vg_root。若忘记还原,虚拟机启动时将因找不到引导路径而卡在紧急模式(Emergency Mode)。
- 环境确认:执行方案二前,请确保 EVE-NG 中没有正在运行该镜像的节点,以防磁盘状态锁定导致挂载失败。
对此疏忽带来的额外操作成本,深表歉意!
iMaster NCE-Campus 镜像一键修复脚本
针对母盘残留的网卡规则问题,提供自动化解决方案。
使用方法
- 在 EVE-NG 宿主机进入镜像目录。
- 创建脚本文件:
nano fix_image.sh(粘贴下方内容)。
- 赋予执行权限:
chmod +x fix_image.sh。
- 执行修复:
./fix_image.sh。
#!/bin/bash
# iMaster NCE-Campus Image Fixer for EVE-NG
# Target: virtioa.qcow2
IMAGE="/opt/unetlab/addons/qemu/iMaster-NCE-Campus-V300R024C00/virtioa.qcow2"
MOUNT_DIR="/mnt/nce_fix_tmp"
VG_UUID="12f7WD-8tjl-fOWr-j6Wo-ubY0-MBEr-uB8A0Z"
TMP_VG="nce_fix_root"
# 检查权限
if [ "$EUID" -ne 0 ]; then
echo "❌ 请使用 root 权限运行此脚本。"
exit 1
fi
# 检查镜像是否存在
if [ ! -f "$IMAGE" ]; then
echo "❌ 未找到 $IMAGE,请确保已正确上传并解压 iMaster-NCE-Campus-V300R024C00.tgz。"
exit 1
fi
echo "开始执行静默修复流程..."
# 1. 挂载 NBD
modprobe nbd
qemu-nbd --connect=/dev/nbd0 "$IMAGE"
sleep 2
# 2. 扫描并重命名 (基于唯一 UUID)
echo "正在锁定 LVM 卷组并进行安全重命名..."
vgrename "$VG_UUID" "$TMP_VG" > /dev/null 2>&1
if [ $? -ne 0 ]; then
echo "❌ 无法重命名卷组,可能 UUID 不匹配或设备已占用。"
qemu-nbd -d /dev/nbd0
exit 1
fi
# 3. 激活并挂载
vgchange -ay "$TMP_VG" > /dev/null
mkdir -p "$MOUNT_DIR"
mount "/dev/mapper/${TMP_VG}-root" "$MOUNT_DIR"
if [ $? -eq 0 ]; then
echo "✅ 成功挂载文件系统。"
# 4. 执行核心修复
echo "正在清理网卡规则..."
rm -f "${MOUNT_DIR}/etc/udev/rules.d/50-persistent-net.rules"
# 5. 卸载与收尾
echo "正在卸载并还原卷组名称..."
umount "$MOUNT_DIR"
vgchange -an "$TMP_VG" vg_vda
vgrename "$TMP_VG" "vg_root" > /dev/null
echo "✅ 修复已永久注入母盘。"
else
echo "❌ 挂载根分区失败,请检查镜像文件完整性。"
vgrename "$TMP_VG" "vg_root"
fi
# 6. 断开连接
qemu-nbd -d /dev/nbd0
sleep 2
rmmod nbd
rm -rf "$MOUNT_DIR"
echo "✅ 流程结束!您可以现在启动 EVE-NG 节点了。"