不同的Linux发行版将相同的配置参数存储在不同的文件中。例如 IPv4 地址Debian 威兹存储在/etc/network/interfaces
文件中软呢帽20它存储在/etc/sysconfig/network-scripts/ifcfg-eth0
文件中。此外,这些配置文件的语法也不同。发行版如何解析这些文件?此外,配置文件的内容是否以用户空间实用程序类似的方式进行解析ip
,ifconfig
或者是否有一些实际配置内核的较低级别的系统调用?
答案1
内核不读取任何配置文件。通常,内核会避免访问文件系统;有一些例外和变化,但主要是内核在该位置启动一个程序/sbin/init
当它启动时,仅代表用户进程访问文件系统。
网络配置文件(与其他类型的配置文件一样)由应用程序读取。对于网络配置文件,这些应用程序是脚本套件和随附的二进制文件,它们读取文件并通过以下方式应用配置:系统调用。 Linux上的网络配置,系统调用主要是ioctl
呼吁插座(你不需要理解这一点)。
在 Linux(以及之前的 Unix)的历史中,一些配置已经成为标准,因为每个人都同意如何做到这一点。对于用户来说,这在很大程度上是这种情况(尽管并不普遍)(/etc/passwd
,NS交换机)和文件系统(fstab
)。另一方面,网络配置仍然相当多样化。来自 Red Hat 的发行版将其保留在以下位置/etc/sysconfig/network
:从 Debian 派生的发行版将其保留在/etc/network/interfaces
.
以 Debian 为例,/etc/network/interfaces
解析为ifup
程序,它是从/etc/init.d/networking
负责设置网络的初始化脚本调用的,它本身是由 调用的init
。