Linux中終端介面與圖形介面之間的切換關係

安全劍客發表於2020-11-16
其實單純的從 介面與圖形介面之間的切換是很容易的,就那麼幾個 ,但是要徹底弄懂這背後的設計架構需要涉及到很多的概念,本文為你講解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。

原文地址:

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31559985/viewspace-2734562/,如需轉載,請註明出處,否則將追究法律責任。

相關文章