我一直在寻找一段时间,在Linux文件系统上查看源代码和各种脚本,但仍然无法弄清楚什么最终启动了/ etc / sysconfig / network中networking接口(或其他接口)的脚本读取-scripts /parsing并获取IPADDR等基本参数并将其分配给接口。
例如, 来自Redhat的文档不是很具体:
接口configuration文件控制单个networking设备的软件接口。 系统引导时, 它使用这些文件来确定启动的接口以及如何configuration它们。 这些文件通常命名为ifcfg-,其中指的是configuration文件控制的设备的名称。
一般来说,“系统”被认为是读取文件。
我认为我已经find了parsing这些文件及其参数的调用链中的最后一个程序: / etc / sysconfig / network-scripts / ifup (然后调用其他ifup- *脚本并执行各种操作命令与/ sbin / ip二进制文件并在/ sys / class / net /下设置值)。 但是什么叫ifup脚本(这是一个到/ sbin / ifup的符号链接)? 我开始看着udev,但在那里却陷入死胡同。 我使用https://livegrep.com/search/linuxsearch内核代码,以查找这些文件的引用,并没有发现任何内容。
我基本上希望看到一个清楚的解释,导致/ etc / sysconfig / network-scripts / ifcfg- *脚本的调用链从启动时开始被parsing。
编辑:感谢LinuxNinja提供下面的答案。 在这个答案之后,我也在Unix SE站点上发现了这个类似的post 。
服务“networking”是您想要启动的位置( /etc/init.d/network )
它设置interfaces=$(ls ifcfg*)
这也是pipe道sed做一些其他的魔术,但这是ifcfg*文件被识别的地方。
有一个for语句使用$ interfacesvariables查找每个find的ifcfg文件,并对每个文件进行求值,例如调用ifup eth0 boot 。