天天看點

linux設定多使用者連接配接界面,Linux中終端界面與圖形界面之間的切換關系

其實單純的從

界面與圖形界面之間的切換是很容易的,就那麼幾個

,但是要徹底弄懂這背後的設計架構需要涉及到很多的概念,本文為你講解Ubuntu 18.10作業系統中的X Window,内容是了解自己機器上的 X Window、了解 display 和虛拟控制台、遠端連接配接 X Server、了解 DisplayManager 和 X Window 桌面環境的啟動過程和運作嵌套的 X Server等這些基本概念。

linux設定多使用者連接配接界面,Linux中終端界面與圖形界面之間的切換關系

一、 什麼是X Window

X Window不是某一個具體的窗體界面,X Window 本質是一個分層的架構,它分為 Server 和 Client。X Server 負責圖形界面的顯示和使用者的輸入,而Client 程式需要連接配接到 X Server,然後請求 X Server 繪制圖形界面,同時從 X Server 接受使用者的輸入。在桌面系統上,X Server 和 Client 程式往往安裝在同一台機器上,日常使用基本感覺不到它是分層的。就像我們的一台電腦,X Server和Client是在同一台電腦的。

既然X Window是分層的架構,很顯然,X Server 和 Client 也可以分别運作在不同的機器上,在一台機器上運作程式,而在另外一台機器上顯示圖形界面。

很多人考到這裡就有點蒙了,我們在編寫網站的時候也有Server-Client分層架構啊,那這有差別嗎?當然有了。

X Window 中的 Server 和 Client 的概念和我們平時接觸到的“Server/Client”概念剛好相反。很多熟悉 Internet 原理的人,第一次接觸 X Window 的這兩個概念都會搞錯。在Internet裡面的Server/Client,是Server負責處理相關的業務,然後将結果傳回到Client用戶端,但是X Window恰好是相反的,它是Client負責處理,Server負責顯示。

比如,我有兩台電腦,一台本地機器上運作 Ubuntu 18.10 桌面版,而在另外一台遠端機器上運作

7(純字元界面),如果是Internet裡面的Server/Client架構,Ubuntu 是 Client,而 CentOS 是 Server。

但是在 X Window 中,Server 偏偏是我面前的這台 Ubuntu,X Server 運作在 Ubuntu 上。我可以在 CentOS 中運作 GVim,但是視窗顯示在 Ubuntu 中,這時,GVim 是一個 Client 程式,它在遠端機器上運作,而它的視窗顯示在本地。

二、了解 display 和虛拟控制台

網上很多介紹 X Window 的文章都是先讓系統進入字元界面,然後手動啟動一個 X Server。其實這完全沒有必要,因為在同一台機器上完全可以運作多個 X Server,隻需要讓每個 X Server 的 display 不同即可。那麼 display 究竟是什麼?

實際上,display 就是計算機配備的一套輸入輸出裝置,一個電腦可以有多個輸入輸出裝置,當然也可以隻有一個。

在 X Window 中,可以通過 hostname:display_number.screen_number 來指定一個螢幕。可以這樣了解:一台計算機可以有多個 display,一個 display 可以有多個螢幕。是以,display 相當于是計算機配備的一套輸入輸出裝置,一般情況下,一台電腦隻配一套鍵盤滑鼠和一個顯示器,特殊情況下,可以配多個顯示器。

現在問題出來了,我的電腦隻有一套鍵盤滑鼠和一個顯示器,也就是隻有一個 display,那又怎麼能運作多個 X Server 呢?那是因為在

中,還有虛拟控制台這樣的進階特性。隻需要同時按下 Ctrl+Alt+F1、Ctrl+Alt+F2、...、Ctrl+Alt+F7,就可以在不同的虛拟控制台中進行切換。就相當于是給這個電腦配備了7個不同的顯示器。

注意:預設情況下,Linux會提供6個Terminal 來讓使用者登入,切換的方式為Ctrl+Alt+F1到F6.而且,系統會為這6個終端界面以 tty1、tty2、tty3、tty4、tty5、tty6 的命名方式命名,除此之外,Linux還有一個預設的X視窗桌面,使用Ctrl+Alt+F7,姐可以切換到圖形桌面進行登入了。為什麼用tty來命名呢?

tty:終端裝置的統稱。

tty一詞源于Teletypes,或者teletypewriters,原來指的是電傳打字機,是通過串行線用列印機鍵盤通過閱讀和發送資訊的東西,後來這東西被鍵盤與顯示器取代,是以現在叫終端比較合适。終端是一種字元型裝置,它有多種類型,通常使用tty來簡稱各種類型的終端裝置。Linux預設情況下

tty1~6是文本型控制台,tty7是X Window圖形顯示管理器。

但是Linux不同的發行版本上面的圖形桌面和使用者終端可能會有所不同。

比如在 Ubuntu 18.10 中,虛拟控制台 3 到 6 運作的是 tty,也就是字元界面,即Ctrl+Alt+F3到F6分别顯示tty3、tty4、tty5、tty6,虛拟控制台 2 運作的是 Xorg,虛拟控制台 1 運作的是圖形界面。

三、Terminal與X Window的互相轉化

前面的使用Ctrl+Alt+Fn的形式來回切換隻是形式上的轉換,每一個都在運作,隻不過顯示的那一個不同,但是實際上,Terminal與X Window在Linux中的運作等級是不一樣的,Linux一共有7中運作等級(run level),在不同的運作級下,系統有着不同的狀态,它們分别是:

0:停機(記住不要把initdefault 設定為0,因為這樣會使Linux無法啟動 )

1:單使用者模式,就像Win9X下的安全模式。

2:多使用者,但是沒有 NFS 。

3:完全多使用者模式,标準的運作級。

4:一般不用,在一些特殊情況下可以用它來做一些事情。

5:X11,即進到 X-Window 系統。

6:重新啟動 (記住不要把initdefault 設定為6,因為這樣會使Linux不斷地重新啟動)。

Terminal預設的run level是3,而X Window預設的run level是5,現在如果我在中斷輸入如下指令:

init 3

那麼會殺死X Window,這樣就沒有X Window了,隻存在Terminal,此時如果我想要重新進入到X Window,我需要在Terminal進行登入,然後執行

startx

重新打開X Window。