DIY HD9901(RK3399) Hinas刷机-usb外置网卡
侧边栏壁纸
  • 累计撰写 19 篇文章
  • 累计收到 2 条评论

DIY HD9901(RK3399) Hinas刷机-usb外置网卡

admin
2025-09-03 / 0 评论 / 4 阅读 / 正在检测是否收录...

以下是实现该需求的完整方案,分为脚本编写和udev规则配置两部分:

补一个手动创建的命令:

sudo sh -c 'echo "auto '$(ip a | grep enx | awk -F'[ :]+' '{print $2}')'\niface '$(ip a | grep enx | awk -F'[ :]+' '{print $2}')' inet dhcp" > /etc/network/interfaces.d/'$(ip a | grep enx | awk -F'[ :]+' '{print $2}')''

一、创建自动化脚本

sudo nano /usr/local/bin/create_usb_interface.sh

内容如下(网卡名是enx开头,如果有其它开头的得继续优化):

#!/bin/bash
sudo sh -c 'echo "auto '$(ip a | grep enx | awk -F'[ :]+' '{print $2}')'\niface '$(ip a | grep enx | awk -F'[ :]+' '{print $2}')' inet dhcp" > /etc/network/interfaces.d/'$(ip a | grep enx | awk -F'[ :]+' '{print $2}')''

另外有ipv6版本:

#!/bin/sh
INTERFACE=$(ip a | grep enx | awk -F'[ :]+' '{print $2}' | head -n 1)
echo "auto $INTERFACE\niface $INTERFACE inet dhcp\niface $INTERFACE inet6 dhcp" > /etc/network/interfaces.d/"$INTERFACE"

赋予执行权限:

sudo chmod +x /usr/local/bin/create_usb_interface.sh

二、配置udev规则

sudo nano /etc/udev/rules.d/99-usb-network.rules
# 当检测到USB网卡插入时触发脚本
ACTION=="add", SUBSYSTEM=="net", DRIVERS=="?*", ENV{ID_BUS}=="usb", RUN+="/usr/local/bin/create_usb_interface.sh %k"

三、验证与调试

  1. 重新加载udev规则

    sudo udevadm control --reload-rules
  2. 手动触发测试

    sudo udevadm trigger --action=add --subsystem-match=net
  3. 检查日志

    tail -f /var/log/usb_net_config.log

四、关键改进说明

  1. 直接使用udev传递的接口名

    • 通过 %k 参数直接获取内核分配的接口名称(如 enx5c53107312f1
    • 避免使用 ip a 命令可能产生的竞态条件
  2. 精确匹配USB网卡

    • ENV{ID_BUS}=="usb" 确保只响应USB设备
    • DRIVERS=="?*" 排除虚拟设备
  3. 日志记录

    • 所有操作记录到 /var/log/usb_net_config.log
    • 方便后续排查问题

五、高级配置(可选)

  1. 防止重复配置

    # 在脚本开头添加检查
    if [ -f "/etc/network/interfaces.d/$INTERFACE" ]; then
     echo "$(date): $INTERFACE 配置已存在,跳过创建" >> /var/log/usb_net_config.log
     exit 0
    fi
  2. 网络服务自动重载

    # 在脚本末尾添加(根据发行版选择)
    if systemctl is-active --quiet networking; then
     systemctl reload networking
    elif systemctl is-active --quiet NetworkManager; then
     nmcli connection reload
    fi

六、注意事项

  1. 接口命名规则

    • 现代Linux系统使用 Predictable Network Interface Names
    • 确保系统未启用 net.ifnames=0 内核参数
  2. 权限问题

    • 脚本和配置文件目录需确保root权限

      sudo chown root:root /usr/local/bin/create_usb_interface.sh
      sudo chmod 755 /etc/network/interfaces.d/
  3. 冲突解决

    • 如果存在NetworkManager,建议通过 nmcli 配置
    • 或创建 /etc/network/interfaces 的符号链接

通过以上配置,当插入USB网卡时,系统将自动完成以下操作:

  1. 检测到新的网络接口
  2. 创建DHCP配置文件
  3. 记录操作日志
  4. (可选)自动重载网络配置

实际效果可通过以下命令验证:

ip a show enx5c53107312f1
cat /etc/network/interfaces.d/enx5c53107312f1
0

评论 (0)

取消