Debian

systemd:誰在沒有 ifupdown 的情況下設置了 lo 介面?

  • January 31, 2017

哪個組件/包負責lo在沒有包的情況下將 systemd 的網路介面設置為 PID1 ifupdown

在 Debian 中,我們有相當多的組件來管理網路,ifupdown, network-manager, systemd-networkd. 現在,我們可以並且我確實刪除了該ifupdown包,這意味著在啟動過程中/etc/network/interface不會引用該包。ifup

我還ifconfig從 NetworkManager 的配置文件中刪除了所有條目/etc/NetworkManager/NetworkManager.conf,並nmcli dev顯示該lo條目未被管理。

$ nmcli dev
 :
lo               loopback  unmanaged    --                 

networkctl還表明這lo是不受管理的:

$ networkctl
IDX LINK             TYPE               OPERATIONAL SETUP
 1 lo               loopback           carrier     unmanaged 
 :

但是,lo似乎仍然(LOWER_UP至少)

$ ip li
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1
   link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

並且 ssh 到 localhost 有效。

所以,我的問題是,誰在啟動lo界面?

請注意,我的意圖不是禁用lo界面,而是知道誰負責以及何時以及如何執行。

環回介面在早期啟動時設置(例如在任何網路伺服器執行之前)。似乎分佈之間沒有顯著差異。即使在 /etc/network/interfaces 中沒有配置,目前的 Debian ifupdown也會啟動。lo從技術上講,可以更改lo- 的配置,並且仍然可以重新配置,例如使用 ifupdown(甚至可能是 systemd-networkd?)。

systemd 的早期設置部分可能更難理解。它是單個程序的程式碼(用 C 編寫:),設置呼叫與更多特定於程序的初始化混合在一起,並且似乎沒有具體記錄。然而,systemd 二進製文件的手冊頁確實提到了環回介面作為內置設置任務的一個範例:

Systemd 包含需要作為引導過程的一部分執行的各種任務的本地實現。例如,它設置主機名或配置環回網路設備。它還設置和掛載各種 API 文件系統,例如 /sys 或 /proc。

關於 systemd 背後的概念和想法的更多資訊,請參閱原​​始設計文件

$$ 2 $$.

Google知道

https://www.google.com/search?q=systemd%20loopback

程式碼在哪裡 - 結果 1:https ://github.com/systemd/systemd/blob/master/src/core/loopback-setup.c

它還向您顯示提到這一點的開發人員部落格文章。這篇博文並沒有更具體地回答您的問題,而是確認 systemd 對此負責。例如,它還提到了 tmpfiles,而沒有提到 systemd-tmpfiles 是與 PID 1 不同的二進制和服務單元。為了明確,環回介面是由 PID 1 設置的,可以在程式碼中看到。

結果 3:

systemd for Administrators,第 VIII 部分

0pointer.de/blog/projects/the-new-configuration-files - 記憶體 - 類似

2011 年 4 月 20 日 … 我正在進行的 systemd 管理員系列的另一集: … 設置主機名;配置環回網路設備

我們的零殼小項目

$$ 1 $$取得了圓滿成功。我們目前涵蓋了大多數桌面和嵌入式發行版應該需要的幾乎所有內容,以及伺服器需求的很大一部分:

  • 檢查和掛載所有文件系統
  • 在所有文件系統上更新和啟用配額
  • 設置主機名
  • 配置環回網路設備
  • 載入 SELinux 策略並在啟動時根據需要重新標記 /run 和 /dev
  • 在核心中註冊其他二進制格式,例如 Java、Mono 和 WINE 二進製文件
  • 設置系統區域設置
  • 設置控制台字型和鍵盤映射
  • 創建、刪除和清理臨時和易失文件和目錄
  • 將 /etc/fstab 中的掛載選項應用到預掛載的 API VFS
  • 應用 sysctl 核心設置
  • 收集和重放預讀資訊
  • 更新 utmp 啟動和關閉記錄
  • 載入和保存隨機種子
  • 靜態載入特定核心模組
  • 設置加密硬碟和分區
  • 在串列核心控制台上生成自動 getty
  • 普利茅斯的維護
  • 機器ID維護
  • 設置系統時鐘的 UTC 距離

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