X11

啟動 x 和啟動顯示管理器有什麼區別?

  • January 11, 2016

startx執行和啟動顯示管理器有什麼區別sudo service (display_manager) start?發生了兩個不同的事件,所以我很想知道幕後的區別。

傳統 Unix 系統以及除 Mac OS X 之外的大多數現代 Unix 系統上的圖形使用者界面都是基於X Window System建構的。一個組件,X 伺服器,與硬體(顯示和輸入外圍設備)通信,並提供顯示視窗和路由使用者輸入的基本原語。其他程序,稱為 X 客戶端,顯示視窗並通過與 X 伺服器通信來監聽使用者輸入。

為了與硬體通信,X 伺服器可能需要特殊權限;例如,在某些系統上,X 伺服器是 setuid root。最近的系統試圖避免讓 X 伺服器以 root 身份執行以提高安全性。根據系統的不同,在系統控制台上執行 X 伺服器可能僅限於某些使用者,或者僅限於對控制台具有物理訪問權限的使用者。

單獨的 X 伺服器只顯示一個硬編碼的背景圖案和一個滑鼠游標。為了做任何有用的事情,需要啟動一些客戶端,通常包括一個視窗管理器

執行 GUI 會話的正常方法是執行會話管理器程序,該程序負責啟動所有需要的客戶端(視窗管理器、桌面小元件、剪貼板管理器、從使用者先前會話中恢復的程序等)。會話管理器需要在 X 伺服器之後啟動,因為它將與它互動。每個桌面環境都有自己的會話管理器;幾乎任何視窗管理器也可以用作會話管理器,並且在緊要關頭,執行 shell 的終端可以被視為簡約的會話管理器——重要的是使用者可以通過某種方式啟動他們想要執行的程序。

啟動 GUI 會話有兩種傳統方式:

  • 如果使用者已經登錄,但他們還沒有 GUI,他們可以執行該xinit命令。該命令啟動一個 X 伺服器,然後啟動一個會話管理器,並等待會話管理器退出;然後它會殺死 X 伺服器。這樣,會話的客戶端和 X 伺服器具有相同的生命週期。該startx程序是一個小包裝器xinit
  • 也可以在任何使用者登錄之前啟動 GUI。在這種情況下,唯一的客戶端是顯示管理器,它提供登錄提示。一旦使用者登錄,顯示管理器就會呼叫他們的會話管理器。當會話管理器退出時,顯示管理器確保該會話中沒有更多程序正在執行,並顯示新的登錄提示。

另一種看待這一點的方式是,為了有一個圖形登錄會話,需要有一個圖形界面並且使用者需要登錄。這兩個步驟可以按任意順序執行:登錄然後啟動 GUI(startx方法),或啟動 GUI 然後登錄(顯示管理器方法)。

其他設置不常見但可能。例如,在資訊亭設置中,系統啟動腳本會啟動 X 伺服器和單個全屏客戶端。在自動登錄設置中,顯示管理器在引導時為預設使用者執行會話管理器。

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