Linux 环境正在覆盖网络配置。如何停止这种情况?

Linux 环境正在覆盖网络配置。如何停止这种情况?

我有一个 ARM 系统,已预装了某些版本的 Linux。我不知道发行版;我只能在 dmesg 中看到内核编号。

在 /etc/network/interfaces 中,我将 eth0 设置为

auto eth0
iface eth0 inet dhcp

保存并重新启动(或运行 ifdown eth0 然后运行 ​​ifup eth0)后,我可以看到网络系统正在搜索 DHCP 服务器并且实际上获得了有效 IP 地址的租约,但是当我运行 ifconfig 时,该接口尚未被分配从 DHCP 中获取的地址。它被分配了一个 192.168。地址。

这可能是从哪里来的?

我在 dmesg 中注意到,变量“ip”在启动时传递给内核,其地址与覆盖我的 DHCP 地址的地址相同。我该如何禁用这种覆盖行为?我注意到 u-boot 中有一个名为 ip 的动态环境变量。我将其设置为 dhcp 并将其保存到 nv 存储中,但问题仍然存在。我尝试将 u-boot 环境变量 ipaddr 设置为 dhcp,但被告知这不是该变量的有效值。

如何通过 DHCP 配置接口?

答案1

ip 参数描述如下:

http://www.mjmwired.net/kernel/Documentation/filesystems/nfs/nfsroot.txt#81

传递给内核的参数存储在bootargsu-boot 中名为的变量中。

执行 aprintenv来检查 bootargs 的值。如果您看到参数“ip=”被传递给内核,那么您可以从 bootargs 中删除它。

还有另一种可能性,可以通过它传递内核参数。

这是CONFIG_CMDLINE内核配置中的选项。

如果您的内核已经构建了CONFIG_IKCONFIG支持,那么应该有一个/proc/config.gz文件。

将其复制到/tmpgunzip检查该CONFIG_CMDLINE选项是否存在,如果存在,则检查 ip 参数是否被传递。

如果是,那么您就无能为力了,只有重新编译内核才能改变这种情况。我不确定是否可以在 /etc/rc.local 中再次使用 dhcp 获取 ip,并让其覆盖从内核参数获取的 ip。

相关内容