我已经搜索了一段时间,查看了 Linux 文件系统上的源代码和各种脚本,但仍然无法弄清楚最终是什么启动了对网络接口(或其他接口)脚本的读取。/etc/sysconfig/网络脚本/解析并获取基本参数,例如接口地址并将其分配给接口。
这Redhat 的文档例如,不是很具体:
接口配置文件控制各个网络设备的软件接口。系统靴子,它使用这些文件来确定要启动哪些接口以及如何配置它们。这些文件通常命名为 ifcfg-,其中指的是配置文件控制的设备的名称。
一般情况下,“系统”被称为读取文件。
我确实认为我已经找到了调用链中的最后一个程序,它可以解析这些文件及其中的参数:/etc/sysconfig/网络脚本/ifup(然后调用其他 ifup-* 脚本并执行各种命令/sbin/ip二进制并设置以下值/系统/类/网络/)。但是,ifup 脚本(/sbin/ifup 的符号链接)是什么呢?我开始研究 udev,但在那里遇到了死胡同。我使用了https://livegrep.com/search/linux在内核代码中搜索对这些文件的引用,但也没有找到任何内容。
我基本上想看到从启动时开始导致 /etc/sysconfig/network-scripts/ifcfg-* 脚本被解析的调用链的清晰解释。
编辑:感谢 LinuxNinja 提供以下答案。根据该答案,我还发现这篇类似的帖子在 Unix SE 网站上。
答案1
服务“网络”是您要开始的地方(/etc/init.d/network
)
它设置interfaces=$(ls ifcfg*)
这也通过管道传输到 sed 来做一些其他的魔法,但这是ifcfg*
识别文件的地方。
ifup eth0 boot
例如,有一个 for 语句使用 $interfaces 变量遍历找到的每个 ifcfg 文件并评估每个文件,调用。