查看: 161|回复: 2

关于 iMaster NCE-Campus 镜像网卡名称偏移的修复公告

11

主题

105

回帖

26万

积分

超级版主

⎝⎛•‿•⎞⎠

Rank: 8Rank: 8

积分
267953

推广达人突出贡献优秀版主

QQ
[i=s] 本帖最后由 xzjt 于 2026-1-29 20:17 编辑 [/i]

关于 iMaster NCE-Campus 镜像网卡名称偏移的修复公告

各位用户:

由于在制作 iMaster NCE-Campus 镜像过程中的疏忽,镜像内残留了原有的 udev 网卡规则。这会导致镜像在 EVE-NG 环境中启动时出现以下问题:

  1. 网卡名称偏移:原本的 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 镜像一键修复脚本

针对母盘残留的网卡规则问题,提供自动化解决方案。

使用方法

  1. 在 EVE-NG 宿主机进入镜像目录。
  2. 创建脚本文件:nano fix_image.sh(粘贴下方内容)。
  3. 赋予执行权限:chmod +x fix_image.sh
  4. 执行修复:./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 节点了。"
参与人数 1                 威望 +65535                 理由
hbugs001                  + 65535                       我也不知道要签名做啥
回复

使用道具 举报

发表于 2026-2-3 14:21:43 | 显示全部楼层
果然是大佬。什么都会
回复

使用道具 举报

1

主题

25

回帖

1036

积分

高级会员

Rank: 4

积分
1036
发表于 2026-2-5 16:07:23 | 显示全部楼层

太牛了!厉害厉害

回复

使用道具 举报

本版积分规则

Copyright   ©2015-2026  EmulatedLab  Powered by Discuz!©   ( 浙ICP备2021010423号-1 )
快速回复 返回列表 返回顶部