问题描述
我在 /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
以太网设备驱动程序时,我都希望获得分配有我在 eth0
文件中分配的静态 IP 地址的网络接口(interfaces
)>
谁能告诉我我在这里遗漏了什么
解决方法
我错过了什么
当执行 /etc/network/
或 ifup
命令时,会解析 ifdown
中的文件。 (我也想当 ifplugd
拿起它们时)。
insmod
将模块加载到正在运行的内核中。
您忽略了这一点,即 insmod
内核驱动程序与从 /etc/network
目录读取任何文件之间没有任何联系。
我的目标是,每当我插入以太网设备驱动程序时,我都希望获得分配有我在接口文件中分配的静态 IP 地址的网络接口(eth0)
您可以设置 udev
规则以在 insmod
内核驱动程序或接口出现时运行自定义脚本。
在阅读了 udev 的手册页后,我了解了如何创建 udev 规则并使用此链接中指定的虚拟测试 https://www.tecmint.com/udev-for-device-detection-management-in-linux/ 我能够在 insmod
-ing 和 {{ 1}} - 驱动程序。
所以,这是我在加载或rmmod
ed 驱动程序后自动设置以太网网络接口的 IP 地址的操作
我在以太网 pcie 驱动程序配方中创建了一个名为 insmod
的 udev 规则文件(它是一个树外内核模块。因此,自定义配方)
我添加了 80-net_auto_up.rules
并编辑了以太网 pcie 驱动程序配方 .bb 文件并添加到以下行
SUBSYSTEM=="net",ACTION=="add",RUN+="/sbin/ifup eth0"
现在它可以工作了。当我手动重置以太网设备时。
正在检测到设备并设置了 ...
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/
}
中配置的静态 IP 地址