/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 eth0
或 ifup 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/
中的文件在执行ifup
或ifdown
命令时解析。 (我也认为当 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 一个驱动程序。
所以,这就是我在加载驱动程序或 insmod
ed
后自动设置以太网接口 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 地址
我在 /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 eth0
或 ifup eth0
.
我尝试在 /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/
中的文件在执行ifup
或ifdown
命令时解析。 (我也认为当 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 一个驱动程序。
所以,这就是我在加载驱动程序或 insmod
ed
我在以太网 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 地址