linux学习文档-1
生活随笔
收集整理的這篇文章主要介紹了
linux学习文档-1
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?
linux圖形界面基本知識(完全搞通X xfree86 xwindow等之間的關系) LINUX初學者經常分不清楚linux和X之間,X和Xfree86之間,X和KDE,GNOME等之間是什么關系。常常混淆或者不清楚這些概念,本文以比較容易理解的方式來解釋 X,X11,XFREE86,WM,KDE,GNOME等之間的關系。 一、linux本身沒有圖形界面。 linux只是一個基于命令行的操作系統。linux現有的圖形界面只是linux下應用程序的實現。所以linux圖形界面并不是linux的一部分。 linux和Xfree的關系就相當于當年的DOS和 WINDOWS3.0一樣,windows3.0不是獨立的操作系統,它只是DOS 的擴充,是DOS下的應用程序級別的系統,不是獨立的操作系統,同樣 XFree只是linux下的一個應用程序而已。不是系統的一部分,但是Xfree 的存在可以方便用戶使用電腦。WINDOWS95及以后的版本就不一樣了,他們的圖形界面是操作系統的一部分,圖形界面是在系統內核中就實現的,沒有了圖形界面windows就不成為windows了,但linux卻不一樣,沒有圖形界面linux還是linux,很多裝有linux的WEB服務器根本就不裝X。.這也WINDOWS和linux的重要區別之一。 二、X是協議,不是具體的某個軟件。 X 是協議,就像HTTP協議,IP協議一樣.這個概念很多初學者甚至學習LINUX有一定時間的人都不怎么清楚的,一個基于X的應用程序需要運行并顯示內容時他就聯接到X服務器,開始用X協議和X服務器交談。比如一個X應用程序要在屏幕上輸出一個圓,那么他就用X協議對X服務器說:“喂!我需要在屏幕上畫一個圓。”X應用程序只負責告訴X服務器在屏幕的什么地方用什么顏色畫一個多大的圓,而具體的“畫”的動作,比如這個圓是如何生成的,用什么顯卡的驅動程序去指揮顯卡完成工作等等都是由X服務器來完成的。X服務器還負責捕捉鍵盤和鼠標的動作,假設X服務器捕捉到鼠標的左鍵被按下了,他就告訴X應用程序:“親愛的應用程序先生,我發現鼠標被按下了,您有什么指示嗎?”如果X應用程序被設計成當按下鼠標左鍵后,再在屏幕上畫一個正方形的話,X應用程序就對X服務器說:“請再畫 一個正方形”,當然他會告訴服務器在什么地方用什么顏色畫多大的正方形,但不關心具體怎么畫,因為那是服務器的事情。 那么X協議是需要具體的軟件來實現的,這就是下面我要講的: 三、X和XFree86的關系. 有了協議就需要具體的軟件來實現這個協議。就好比我們有了交通法規就需要交警去根據法規維護交通秩序一樣。Xfree86就是這樣一個根據法規實現協議的 “交警”。他按照X協議的規定來完成X應用程序提交的在屏幕上顯示的任務。當然不僅僅是某個特定的交警才可以去維護和實現這個法規,比如還可以由交通協管員來實現交通法規,必要的時候警察 也可以介入,當然前提是他們都要懂得交通法規,也就是要懂得協議.所以實現X協議的軟 件也并不只有XFree86。 XFree86只是實現X協議的一個免費X服務器軟件.商業上常用MOTIF,現在還有XORG,還有很多很小的由愛好者寫的小的X服務 器軟件.甚至可以在WINDOWS上有X服務器運行,這樣你可以在linux系統上運行一個X應用程序然后,在另一臺windows系統上顯示,就是這么神奇. 你可以用google找到這樣的X服務器軟件.只不過在LINUX上最常用的是 XFree86.(現在的linux發行版都用Xorg了) 順便說一句,蘋果電腦的圖形界面用的也是X協議,而且被認為是做的最好的X協議圖形界面,并且他對X協議的實施是做在系統內核里的,(那么照以前的定義這個系統就是屬于windows的范疇了)所以性能明顯好很多,這就是為什么很多大型三維圖形設計軟件都是在蘋果平臺上的原因. 為了便于理解拿HTTP協議來比較: 協議是HTTP (hyper text transmission protocol) 實 現這個協議的常用服務器有:Apache,IIS 等。 請求這些服務器傳輸文件的客戶有:IE ,MOZILLA ,NETSCAPE等. 協議是X 實現這個協議的常用服務器有Xfree86 ,Xorg ,Xnest等.對應Apache, IIS. 請求這些服務器來完成顯示任務的客戶:所有的X應用程序.對應IE MOZILIA.例如:fcitx 只不過HTTP協議的服務器和客戶端通常都在兩臺不同的電腦(服務器和客戶機)之間來實現,所以一般人對這個 比較容易理解.而X協議的服務器和客戶端程序通常在同一臺電腦上,因此很多用戶都感到對此很難理解.既然是協議,那么肯定和平臺無關的,因此可以讓X應用程序顯示在任何裝有X服務器的遠程計算機上.甚至顯示在裝有Xnest服務器的windows系統上.只不過在大多數情況下,X應用程序都用本機的X服務器,然后X服務器將顯示結果輸出到本機的顯示器上.這也是很多人不理解X是一種協議的原因. 四、X和X11R6又是什么關系? 不知道初學者有沒有注意到/usr/X11R6這個目錄,這是XFree的默認安裝目錄。 X11R6 實際上是X Protocol version 11 Release 6(X協議第11版第六次發行)的意思,就是說目前用的X協議是第11版的,然后經過了6次小的修正.不同版本的X協議是不能通信的.就像我們現在IPV4和IPV6不能通信一樣,不過不用擔心,現在的 X服務器軟件和X應用程序都遵循X11R6.另外XFree86 3.3.6,XFree86 4.3.6 等這些版本是實現X協議的軟件XFree86的版本號.這是初學者經常搞混淆的概念. 協議版本和實現協議的軟件的版本,需要我們區分這兩個概念。 五、X服務器和WM(window manager 窗口管理器)之間是什么關系. 圖形界面是怎么啟動的呢? 如果你是一開機就進入圖形界面那就太遺憾了。因為你錯過了了解X服務器起動過程的好時 機.不過沒關系.你打開 一個XTERM輸入: init 3 就可以安全的回到字符界面. 等做完以下實驗你就完全明白X和 WM(window manager 窗口管理器)之間是什么關系了. 先輸入以下命令: #startx 啟動圖形界面,你看到的是一個和平時使用完全一樣的完整的圖形界面操作環境。 你可以最大化,最小化,移動,關閉窗口等. 按 ctrl+alt+backspace反回字符界面. 輸入: #xinit 再次啟動圖形界面,你看到了什么,你看到一個XTERM.而且不能移動.但是你可以在這個 XTERM中輸入命令打開X應用程序,如果我輸入: #mozilla 打開瀏覽 器,你看到的瀏覽器和平時有什么不同嗎?他在屏幕中間,不能移動,不能最小 化,不能最大化,沒有邊框. 為什么同樣一個X應用程序會有這樣的不同呢?因為我們用startx起動圖形界面的時候同時也啟動了一個WM(即窗口管理器),如果你用KDE就起動了KDE,如果你用 GNOME就起動了GNOME.但是你用xinit起動圖形界面的時候卻沒有起動WM. 現在你明白窗口管理器的作用了嗎?他的作 用:就是最大化,最小化,移動,關閉窗口等.而這些不是X服務器來負責完成的. X系統只負責顯示圖形,并不限制顯示和操作的風格,因此不同的X Window的風格并不相同。 如果你用xinit起動圖形界面并在xterm中輸入twm,看看會有什么? xterm被加上了一個邊框,你可以通過這個邊框移動,最大化,最小化這個xterm,twm就 是XFree86中自帶的窗口管理器,是一個比較簡陋的最簡單的窗口管理器,但是他具有窗 口管理器的全部特征. 如果你不輸入twm 而輸入gnome-session就可以起動GNOME或者輸入startkde起動KDE. 通過以上的實驗你就可以清楚的明白 他們之間的關系. 六、關于KDE和GNOME KDE 和GNOME是LINUX里最常用的圖形界面操作環境,他們不僅僅是一個窗口管理器那么簡單。KDE是K Desktop Environment 的縮寫.他不僅是一個窗口管理器,還有很多配套的應用軟件和方便使用的桌面環境,比如任務欄,開始菜單,桌面圖標等等.GNOME 是GNU Network Object Model Environment 的縮寫.和KDE一樣,也是一個功能強大的操作環境. 另外在其它UNIX系統中,常常使用CDE作為這樣一個操作環境. 其它的小型窗口管理器有: window maker,after step,blackbox,fvwm,fvwm2,等等都是常用的優秀窗口管理器 .REDHAT9中有window maker 但是默認不安裝,大家可以裝來試試.只要xinit再wmaker& 就可以用windowmaker了. KDE項目是在1997年由德國自由程序員發起的,他們采用了挪威TrollTech軟件公司的Qt圖形界面庫作為基礎開發平臺,C++為主要開發語言。1999年KDE1.1.2發行以后,它就成為Linux界“事實”上的桌面標準。然而,因為KDE使用的Qt庫所遵循的軟件版權協議QPL并不是真正的自由軟件協議,這在自由軟件界引起了很大的非議,例如以純自由軟件構成的Linux發行版Debian就拒絕使用KDE。當然,最終用戶并不太關心軟件許可問題,對他們來說KDE易用性和強大的功能是最重要的。因此,KDE還是得到了廣泛的應用。??? 為了與KDE相抗衡,世界最大的自由軟件組織GNU(即自由軟件基金會)發起了GNOME桌面環境項目。GNOME采取了完全松散的自由軟件開發模式,整個項目由一系列獨立的軟件組成,每個軟件都由各自獨立的開發組負責。這種松散的開發模式使得GNOME的進展非常緩慢。1999年推出的GNOME1.0與KDE 1.1.2相比在各個方面都差很多,直到2000年推出GNOME 1.2后才有了很大的進步。然而與即將推出的KDE2.0相比,GNOME在許多方面還非常不完善,例如沒有一個統一的辦公套件,沒有集文件管理器和網絡瀏覽器等功能于一身的綜合文件管理軟件,另外GNOME還缺乏成熟的電子郵件、個人信息助理等實用工具軟件。而且與KDE相比GNOME的各個組件的集成度還遠遠不夠,不同組件之間的風格也有很大差別。不管從哪個方面來看,一切似乎都對KDE有利而對GNOME不利。曾經有一段時間,人們都在擔心GNOME會半路夭折。與KDE不同,GNOME采用了符合GPL自由軟件協議的GDK、GTK作為其底層開發平臺,也就是說GNOME是真正意義上的GPL自由軟件,商業公司無需支付任何費用就可以自由使用它。可以說這是商業公司選擇GNOME而不選KDE的首要因素。當然,光有這個理由還不足以服人,要想成為名副其實的桌面環境標準,在技術上也必須有過硬表現才行。GNOME在GTK的基礎上擴充了許多額外的功能,開發了一系列GNOME程序通用的函數庫和程序,因此具有統一的界面風格和使用習慣。
??? KDE適應用戶使用, GNOME適合開發。 七、Xwindow QT概念 X-Window提供了創建圖形界面的基礎。但是它只管在屏幕畫點、畫線、畫框和著色,至于在哪里畫點、畫什么樣的線、畫什么樣的框,以及著什么色,這些要求都是由客戶端程序提交的。一套桌面環境一般會包括窗口管理器、面板、菜單、桌面背景設置和一些常用的小程序,負責為使用者創建一個友好的圖形化操作界面。大多數Linux發行版附帶的X-Window都是XFree86。KDE和gnone則是基于Xwindow運行的操作環境,并且添加了很多其他方便使用的東西。 Qt是諾基亞開發的一個跨平臺的C++圖形用戶界面應用程序框架。它提供給應用程序開發者建立藝術級的圖形用戶界面所需的所用功能。Qt是完全面向對象的,很容易擴展,并且允許真正地組件編程。自從1996年早些時候,Qt進入商業領域,它已經成為全世界范圍內數千種成功的應用程序的基礎。Qt也是流行的Linux桌面環境KDE 的基礎。 基本上,Qt 同 XWindow 上的 Motif,Openwin,GTK 等圖形界面庫和 Windows平臺上的 MFC,OWL,VCL,ATL是同類型的東西,但Qt具有優良的跨平臺特性、面向對象、豐富的API、大量的開發文檔等優點。QT是一個跨平臺的 C++ 圖形用戶界面庫,由挪威 TrollTech 公司于1995年底出品。 八、linux 圖形界面層次關系總結 linux本身-->X服務器<-[通過X協議交談]->窗口管理器(綜合桌面操作環 境)-->X應用程序. Xfree86服務器的實現包括兩個部分,一部分是和顯卡直接打交道的低層,一部分是和X應用程序打交道的上層。上層負責接收應用程序的請求和鼠標鍵盤的動作。而和顯卡直接 打交道的底層負責指揮顯卡生成圖形,其實就是顯卡驅動。上層接收到應用程序的請求后 ,將請求內容做適當處理,然后交給顯卡驅動來 指揮 顯卡完成畫圖的動作.另外上層的捕捉鍵盤和鼠標動作的部分會向應用程序提供鼠標和鍵盤的狀態信息,應用程序接收到這些信息后決定是否再有相應的動作. 九、Xfree86服務的具體介紹 平時說的VESA,VGA ,fbdev等其實就是針對不同模式顯卡的驅動程序. VESA(Video Electronics Standards Association) VGA (Video Graphics Array) fbdev (FrameBuffer Device) 等都是不同的顯卡標準,不過這些標準都已經很老了.現在的顯卡都兼容這幾種模式. framebuffer模式的顯卡本身不具有任何運算數據的能力,他好比是一個暫時存放水的水池.CPU將運算后的結果放到這個水池,水池再將結果流到顯示器.中間不會對數據做處理 .在這中情況 下,所有顯示任務都有CPU完成,CPU負擔很重.從frambuffer這個名字我們就能猜測到他的功能 了(數據偵緩沖). 在linux內核中有有framebuffer機制模仿顯卡的這種功能.他的好處是把顯卡的硬件結構抽象掉,把所有的顯卡都當做一個"水池"來用.應用程序也可以直接讀取這個水池的內容.framebuffer的設備名是 /dev/fb 可以用命令: #dd if=/dev/zero of=/dev/fb 清空屏幕.如果你的X用的是framebuffer的驅動,屏幕將全變黑.通過移動鼠標,切換窗口 等動作可以讓原先的內容重新顯示. 如果你不用framebuffer驅動,可以在字符模式下做這個試驗.屏幕將全部被清空. 以 下的命令: #dd if=/dev/fb of=fbfile 可以將fb中的內容保存下來,以后可以重新寫回屏幕: #dd if=fbfile of=/dev/fb 作用類似于屏幕截圖,但是截下的圖不能用普通圖片瀏覽器看. 現在知道linux中framebuffer設備的神奇了吧. linux字符界面在高分辨率下,啟動時會有一個小企鵝logo,這個logo就是用framebuffer 功能寫上屏幕的. VESA和VGA比FB要好很多,但是他的顯示能力也很有限.CPU仍舊要處理大部分的 顯示任務.現在的顯卡就不一樣了,CPU幾乎不參數顯示任務,而專注于運算工作.我們平時在linux 下裝顯卡驅動,其實就是替 換掉XFree86中底層的那 一部分. 使他有更強的顯示能力.比 如你的顯卡是nvidia的,XFree默認的驅動是"nv",他是一個 nvidia顯卡的通用驅動,但 是他不能發揮nvidia顯卡的性能.這個"nv"驅動模塊可以在: /usr/X11R6/lib/modules/drivers 目錄下找到,文件名是:nv_drv.o 這個目錄下還有很多顯卡驅動模塊. apm_drv.o dummy_drv.o nsc_drv.o sis_drv.o ark_drv.o fbdev_drv.o nv_drv.o tdfx_drv.o ati_drv.o glint_drv.o r128_drv.o tga_drv.o atimisc_drv.o i128_drv.o radeon_drv.o trident_drv.o chips_drv.o i740_drv.o rendition_drv.o tseng_drv.o cirrus_alpine.o i810_drv.o s3_drv.o vesa_drv.o cirrus_drv.o linux s3virge_drv.o vga_drv.o cirrus_laguna.o mga_drv.o savage_drv.o cyrix_drv.o neomagic_drv.o siliconmotion_drv.o fbdev vga evsa 等都在其中. 只要在XF86Conf文件中的Section module段中指定了什么驅動,X就用哪個驅動. 代碼: Section "Module" Load "dbe" Load "extmod" Load "fbdevhw" #這里用的是fbdev Load "glx" Load "record" Load "freetype" Load "type1" Load "dri" EndSection 這是XFree86 4.0以上版本的方法.即X主程序和驅動模塊是分開的. 主程序是/usr/X11R6/bin/XFree86 (即上層部分) 然后主程序啟動的時候根據配置文件決定用哪一個驅動. 但是,在XFree86以前的版本(3.3.6)中, X主程序和驅動模塊是合在一起的,因此,以前 的Xfree86 3.3.6 有很多針對不同顯卡的版本. 另外其他的X服務器如 KDrive 也是驅動也主程序整合的,因此同樣是KDrive X服務器會有VESA ,SVGA ,和 fbdev的版本之分.因為這些都是輕量級的X服務器,為了簡化結構他 做成這樣. Xfree86 4.0 做成驅動和主程序分離的好處是用戶可以自己添加升級驅動。 十、ubuntu下這些概念的具體情況 Ubuntu本身默認安裝gnome,可以自己安裝KDE. Ubuntu并沒有采用init的方法,并沒有 /etc/inittab這個文件。init使用的是串行的方式,引導很耗時。RedHat9啟動時串行執行大量的腳本以啟動各種需要的服務(啟動時可以看到)。Ubuntu采用了upstart,是一個基于事件的 init 的替代程序,用于 Ubuntu 發行版。所以上步驟5我并沒有自己實際看到運行的。 安裝Linux系統中的軟件概述 在windows下安裝軟件大家都覺得很容易,只要雙擊setup或是install的圖標,然后跟著向導一步一步的按提示做就可以了,但是在linux 下安裝軟件就不像windows下那樣容易了,有時你找到的是沒有編譯過的軟件源碼,那就更加的麻煩了,這里就介紹一下如何安裝linux的軟件。
linux下的軟件一般都是經過壓縮的,主要的格式有這幾種:rpm、tar、tar.gz、tgz等。所以首先拿到軟件后第一件事就是解壓縮。
一、在xwindow下以rpm格式的軟件安裝比較容易,只要在把鼠標移到文件上單擊右鍵,在彈出的菜單里會有專門的三項(只有在右鍵單擊rpm文件才會出現)show info,upgrade和install,這三項的意思大家都很清楚了,我就不多說了。rpm格式說了,接著就是tar,tar.gz,tgz等,在 xwindow下雙擊這些格式的文件就會自動解壓縮的,是解壓縮而不是像rpm那樣有install選項的,install文件會在你解壓縮后才出現,不過這里我要先說一下,在你雙擊install前建議先好好看一下readme,因為你所要安裝這些軟件可能是沒有編譯的,所以看一下會比較好。
二、說完了xwindow下的安裝和解壓縮,接著說在文本模式下如何解壓縮和安裝,還有編譯源碼了。首先說rpm的,以root身份登陸后(用其他的身份登陸也可以但有些軟件就不能被安裝)鍵入rpm -i你所要解壓縮的文件+擴展名(當然是rpm)也不是很難吧,這里我要說的是“-i”意思是install,如果你想要卸載或是要執行其他的指令就打 rpm --help,看電腦給你的提示吧,為了照顧那些E文不太好的人我這里就寫幾個常用的參數:-e:卸載相關的應用程序,-U(注意是大寫):升級軟件包,-pql:列出rpm軟件包的相關信息,-qf:查找指定文件屬于哪個軟件包。至于那些其他格式的軟件則可以用gunzip,gzip,tar和 unzip等指令來解壓縮,然后再運行install。通過解包后會得到一些文件,然后進入剛才解壓縮后文件目錄用“ls -F -color”指令看一下所得到的文件,一般有兩種情況:第一種是文件為已經編譯好的程序(無須再編譯了)用上面的察看文件命令會以帶“*”標記的亮綠色顯示。對比一下下面2個圖,我們可以看到很多東西,比如*.pl表示的是perl script腳本等等。 第二種則是需要由你自己編譯的源代碼。得到的是源代碼的話,就需要我們自己編譯來得到可運行的程序。編譯源代碼聽到編譯是不是就嚇到你了呢,其實說穿了也就加上幾句話而已,對初學者是有些困難想用好的操作系統就需要學習嘛,等你學會了在MM前露一手的時候想想吧……,在編譯之前先要認真的閱讀一下 readme文檔,老鳥們就不需要了吧,等你閱讀完了以后就執行 ./autogen.sh可能有的有,有的沒有,這樣很好的幫助你查找一些缺少的package
./configure他的默認安裝目錄你知道嗎?
make
make install(只有Root身份才能執行此命令),編譯完成之后便會在當前目錄或src子目錄下得到軟件的可執行程序。 介紹完了,大家是不是覺的RPM的軟件安裝比較容易一點呢,但我個人意見初學者還是多選擇RPM格式以外的軟件,因為通過編譯軟件的源碼可以為你以后編譯內核打下一定的基礎。 根下的文件夾的含義 /vmlinuz 該目錄中存放的是系統內核
/bin 該目錄中存放Linux的常用命令,在有的版本中是一些和根目錄下相同的目錄。
/boot 該目錄下存放的都是系統啟動時要用到的程序,當用lilo引導Linux時,會用到這里的一些信息
/dev 該目錄包含了Linux系統中使用的所有外部設備,它實際上是訪問這些外部設備的端口,你可以訪問這些外部設備,與訪問一個文件或一個目錄沒有區別。例如在系統中鍵入“cd /dev/cdrom”,就可以看到光驅中的文件;鍵入“cd /dev/mouse”即可看鼠標的相關文件。
/cdrom 該目錄在剛安裝系統時是空的,你可以將光驅文件系統掛在這個目錄下, 例如“mount /dev/cdrom /cdrom”
/etc 該目錄存放了系統管理時要用到的各種配置文件和子目錄,例如網絡配置文件、文件系統、X系統配置文件、設備配置信息、設置用戶信息等。
/sbin 該目錄用來存放系統管理員的系統管理程序。
/home 如果建立一個名為“xx”的用戶,那么在/home目錄下就有一個對應的“/home/xx”路徑,用來存放該用戶的主目錄。
/lib 該目錄用來存放系統動態連接共享庫,幾乎所有的應用程序都會用到該目錄下的共享庫
/lost+found 該目錄在大多數情況下都是空的。但當突然停電、或者非正常關機后,有些文件就臨時存放在這里。
/mnt 該目錄在一般情況下也是空的,你可以臨時將別的文件系統掛在該目錄下。
/proc 可以在該目錄下獲取系統信息,這些信息是在內存中由系統自己產生的
/root 如果你是以超級用戶的身份登錄的,這個就是超級用戶的主目錄
/tmp 用來存放不同程序執行時產生的臨時文件,有些安裝文件重啟后被刪除了,但是有些文件還是被添加進來了。重啟后不刪除
/usr 用戶的很多應用程序和文件都存放在該目錄下 上圖是ubuntu的目錄結構,還是有些不同的。 /opt 目錄是存放第三方軟件的目錄。 /srv /sys /initrd.img /selinux
轉載于:https://blog.51cto.com/tracera/550730
總結
以上是生活随笔為你收集整理的linux学习文档-1的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: AHCI
- 下一篇: [RCNN]-[YOLO]-[SSD]目