配置文件的內容在不同的 Linux 發行版上是如何解析的?
不同的 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/interfaces
由ifup
程序解析,該程序由 呼叫/etc/init.d/networking
,負責建立網路的 init 腳本本身由 呼叫init
。