/etc/network/interface 中设置的静态 IP 地址在 rmmod 和 insmod 后未更新

Static IP address set in /etc/network/interface not getting updated after rmmod and insmod

我在 /etc/network/interfaces 文件中配置了如下静态 IP 地址

# The loopback interface
 auto lo
 iface lo inet loopback

# Wired or wireless interfaces
 auto eth0
 iface eth0 inet static
    address 192.168.1.2
    netmask 255.255.255.0
    broadcast 192.168.1.255
    hwaddress ether 01:06:92:85:00:12

但是,当我尝试对驱动程序 e1000 执行 rmmod 然后 insmod 再次。 eth0 网络接口将被加载,但是直到我明确地 ifconfig eth0ifup eth0.

才分配 IP 地址

我尝试在 /etc/network/if-up.d/loadeth.sh 中添加脚本 其中有

#!/bin/sh

 if [ "$IFACE" = eth0 ]; then
        echo "eth0 up" >> /var/log/oak_pci.log
 fi

但是,IP 地址分配失败。

我的目标是,每当我 insmod 以太网设备驱动程序时,我都希望获得分配有静态 IP 地址的网络接口(eth0),我已在 interfaces 文件中分配

谁能告诉我我在这里遗漏了什么

what am i missing here

/etc/network/中的文件在执行ifupifdown命令时解析。 (我也认为当 ifplugd 捡起它们时)。

insmod 将模块加载到 运行ning 内核中。

您缺少知识,insmod-ing 内核驱动程序与从 /etc/network 目录读取任何文件之间没有任何联系。

My aim is that whenever i insmod the ethernet device driver i want to get the network interface(eth0) assigned with static IP address i have assigned in the interfaces file

您可以将 udev 规则设置为 运行 自定义脚本 insmod-ing 内核驱动程序或界面出现时。

在浏览了 udev 的手册页后,我了解了如何创建 udev 规则并使用此 link https://www.tecmint.com/udev-for-device-detection-management-in-linux/ 中指定的虚拟测试,我能够在 insmod 时调用 udev 规则]-ing 和 rmmod-ing 一个驱动程序。

所以,这就是我在加载驱动程序或 insmoded

后自动设置以太网接口 IP 地址的方法

我在以太网 pcie 驱动程序配方中创建了一个名为 80-net_auto_up.rules 的 udev 规则文件(它是一个树内核模块。因此,自定义配方)

我添加了SUBSYSTEM=="net", ACTION=="add", RUN+="/sbin/ifup eth0"

并编辑了以太网 pcie 驱动程序配方 .bb 文件并添加了以下行

...

SRC_URI = "all source files of ethernet pcie driver
           file://80-net_auto_up.rules \
          "

FILES_${PN} += "${sysconfdir}/udev/rules.d/*"

do_install_append() {

    ...
    
    install -d ${D}${sysconfdir}/udev/rules.d
    install -m 0644 ${WORKDIR}/80-net_auto_up.rules ${D}${sysconfdir}/udev/rules.d/
}

现在可以了。当我手动重置以太网设备时。 正在检测设备并设置 /etc/network/interfaces 中配置的静态 IP 地址