Linux

配置文件的內容在不同的 Linux 發行版上是如何解析的?

  • September 3, 2014

不同的 Linux 發行版將相同的配置參數儲存在不同的文件中。例如,Debian Wheezy中的 IPv4 地址儲存在/etc/network/interfaces文件中,而在Fedora 20中,它儲存在/etc/sysconfig/network-scripts/ifcfg-eth0文件中。此外,這些配置文件的語法不同。發行版如何解析這些文件?此外,配置文件的內容是否以使用者空間實用程序喜歡ip並被ifconfig呼叫的方式解析,或者是否存在一些實際配置核心的低級系統呼叫?

核心不讀取任何配置文件。通常,核心會避免訪問文件系統。有一些例外和變化,但主要是核心在啟動/sbin/init時在該位置啟動程序,並且唯一代表使用者態程序訪問文件系統。

網路配置文件(與其他類型的配置文件一樣)由應用程序讀取。對於網路配置文件,這些應用程序是一組腳本和隨附的二進製文件,它們讀取文件並通過系統呼叫應用配置。對於 Linux 上的網路配置,系統呼叫主要是ioctl套接字的呼叫(您不需要了解這一點)。

在 Linux(以及之前的 Unix)的歷史中,一些配置已經成為標準,因為每個人都同意如何去做。/etc/passwd對於使用者( ,NSSwitch)和文件系統( )來說,這在很大程度上是這種情況(儘管不是普遍的fstab)。另一方面,網路配置仍然非常多樣化。從 Red Hat 派生的發行版將其保留在/etc/sysconfig/network; 從 Debian 派生的發行版將其保存在/etc/network/interfaces.

以 Debian 為例,/etc/network/interfacesifup程序解析,該程序由 呼叫/etc/init.d/networking,負責建立網路的 init 腳本本身由 呼叫init

引用自:https://unix.stackexchange.com/questions/153559