第11章Linux操作系統(tǒng)基礎(chǔ)_第1頁
第11章Linux操作系統(tǒng)基礎(chǔ)_第2頁
第11章Linux操作系統(tǒng)基礎(chǔ)_第3頁
第11章Linux操作系統(tǒng)基礎(chǔ)_第4頁
第11章Linux操作系統(tǒng)基礎(chǔ)_第5頁
已閱讀5頁,還剩63頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、第第11章章Linux操作系統(tǒng)基礎(chǔ)操作系統(tǒng)基礎(chǔ)11.1嵌入式嵌入式Linux的開發(fā)環(huán)境的開發(fā)環(huán)境11.1.1交叉開發(fā)概述交叉開發(fā)概述 用于開發(fā)和調(diào)試目標(biāo)板上所用到的操作系統(tǒng)、應(yīng)用程序等所有軟件。這種在宿主機(jī)上開發(fā)程序、在目標(biāo)板上運(yùn)行程序的方式,通常就叫做交叉開發(fā) n目標(biāo)板(Target)可以是嵌入式應(yīng)用軟件的實(shí)際運(yùn)行環(huán)境,當(dāng)然也可以是替代實(shí)際環(huán)境的仿真系統(tǒng)(如軟件模擬器)。n宿主機(jī)(Host)通過串口、網(wǎng)絡(luò)連接或調(diào)試接口(如JTAG仿真器)與目標(biāo)機(jī)通信。宿主機(jī)的軟硬件資源比較豐富,其操作系統(tǒng)主要有Windows和Linux兩種,其上用于開發(fā)程序的那套軟件工具,通常叫做開發(fā)工具鏈。 11.1.2

2、桌面桌面Linux的開發(fā)工具的開發(fā)工具鏈鏈nGNU 開發(fā)工具鏈( toolchain )主要包括GNU Compiler Collection 、 GNU libc 以及用來編譯、測(cè)試和分析軟件的GNU binutils 三個(gè)大的模塊。 11.1.3嵌入式嵌入式Linux的交叉開的交叉開發(fā)工具鏈發(fā)工具鏈n基于基于ARM平臺(tái)的交叉工具鏈,這里將其目標(biāo)平臺(tái)的交叉工具鏈,這里將其目標(biāo)平臺(tái)名為平臺(tái)名為arm-linux-gnu,比如,比如arm-linux-gcc、arm-linux-gdb等。等。 n分步構(gòu)建交交叉開發(fā)工具鏈的整個(gè)過程:n1.下載源代碼下載源代碼 n 到相關(guān)的網(wǎng)站下載包括binuti

3、ls、gcc、glibc(如)及l(fā)inux(如)內(nèi)核的源代碼.注意:glibc和內(nèi)核源代碼的版本必須與目標(biāo)機(jī)上實(shí)際使用的版本保持一致. 11.1.3嵌入式嵌入式Linux的交叉開的交叉開發(fā)工具鏈發(fā)工具鏈n2.建立環(huán)境變量建立環(huán)境變量n 聲明以下環(huán)境變量的目的是在之后編譯工具聲明以下環(huán)境變量的目的是在之后編譯工具庫(kù)的時(shí)候用到,很方便輸入,尤其是可以降低輸錯(cuò)庫(kù)的時(shí)候用到,很方便輸入,尤其是可以降低輸錯(cuò)路徑的風(fēng)險(xiǎn)。路徑的風(fēng)險(xiǎn)。n3.配置、安裝配置、安裝binutilsn inutils是是GNU工具之一,它包括連接器、工具之一,它包括連接器、匯編器和

4、其他用于目標(biāo)文件和檔案的工具,它是二匯編器和其他用于目標(biāo)文件和檔案的工具,它是二進(jìn)制代碼的維護(hù)工具。安裝進(jìn)制代碼的維護(hù)工具。安裝Binutils工具包含的程序工具包含的程序有有addr2line、ar、as、c+filt、gprof、ld、mm、 objcopy、ranlib、 readelf、size、strings、strip、libiberty、libbfd和和libopcodes。11.1.3嵌入式嵌入式Linux的交叉開的交叉開發(fā)工具鏈發(fā)工具鏈n4. 配置配置linux內(nèi)核頭文件內(nèi)核頭文件 n編譯器需要通過系統(tǒng)內(nèi)核的頭文件來獲得目標(biāo)平臺(tái)所支持的系統(tǒng)函數(shù)調(diào)用所需要的信息。對(duì)于LINUX

5、內(nèi)核,最好的方法是下載一個(gè)合適的內(nèi)核,然后復(fù)制獲得頭文件。n首先執(zhí)行make mrproper進(jìn)行清理工作。n接下來執(zhí)行make config ARCH=arm(或make menuconfig/xconfig ARCH=arm)進(jìn)行配置.11.1.3嵌入式嵌入式Linux的交叉開的交叉開發(fā)工具鏈發(fā)工具鏈5. 第一次編譯gcc n完成此過程需要執(zhí)行三個(gè)步驟,分別如下: (1)修改t-linux下的內(nèi)容 (2)配置gcc (3)編譯、安裝gcc11.1.3嵌入式嵌入式Linux的交叉開的交叉開發(fā)工具鏈發(fā)工具鏈n6. 交叉編譯交叉編譯glibc n這一步驟生成的代碼是針對(duì)目標(biāo)機(jī)cpu的,因此它屬于

6、一個(gè)交叉編譯過程。該過程要用到linux內(nèi)核頭文件,默認(rèn)路徑為$PREFIX/arm- linux/sys-linux,因而需要在$PREFIX/arm-linux中建立一個(gè)名為sys-linux的軟連接,使其內(nèi)核頭文件所在的 include目錄. 或者也可以在接下來要執(zhí)行的configure命令中使用-with-headers參數(shù)指定linux內(nèi)核頭文件的實(shí)際路徑。 11.1.3嵌入式嵌入式Linux的交叉開的交叉開發(fā)工具鏈發(fā)工具鏈n7. 第二次編譯第二次編譯gcc n由于第一次安裝的gcc沒有交叉glibc支持,現(xiàn)在已經(jīng)安裝了glibc,所以需要重新編譯來支持glibc。 n到此為止整個(gè)交

7、叉開發(fā)工具鏈就完全生成了。 11.2 桌面桌面Linux的安裝的安裝11.2.1雙操作系統(tǒng)環(huán)境雙操作系統(tǒng)環(huán)境一般會(huì)用到兩個(gè)桌面操作系統(tǒng),即linux和windows操作系統(tǒng),其中Linux主要有Redhat/Fedora、Suse、Mandrake等發(fā)行版本 uWindows 與與Linux 的雙重啟動(dòng)的雙重啟動(dòng)u為L(zhǎng)inux操作系統(tǒng)準(zhǔn)備硬盤空間11.2.2 Cygwin模擬環(huán)境模擬環(huán)境nCygwin是GNU的開發(fā)人員為了能將Linux系統(tǒng)下一些應(yīng)用移植到Windows環(huán)境下而開發(fā)的一套中間移植工具即模擬環(huán)境。安裝完成后,就是Windows下的一個(gè)目錄,而里面又提供了Linux操作系統(tǒng)環(huán)境。1

8、1.2.3 VMware虛擬機(jī)環(huán)境虛擬機(jī)環(huán)境nVMware workstation是VMware公司設(shè)計(jì)的專業(yè)虛擬機(jī),可以在Windows平臺(tái)上為幾乎任何的其他操作系統(tǒng)提供虛擬運(yùn)行環(huán)境。顧名思義,只要物理主機(jī)的內(nèi)存、CPU等配置足夠,就可以在Windows平臺(tái)上,再“虛擬”出一臺(tái)或多臺(tái)“PC機(jī)”,而且使用簡(jiǎn)單,容易上手,是目前用得非常廣泛的工具軟件。 11.3 Linux的使用的使用11.3.1 Linux基本命令基本命令naddusern示例:創(chuàng)建pdr帳戶nadduser pdr2. catn示例:ncat text 在屏幕上顯示文件text的內(nèi)容;ncat -n textfile1 te

9、xtfile2 把 textfile1 的文件內(nèi)容加上行號(hào)后輸入 textfile2 這個(gè)文件里;3.Cdn示例:假設(shè)用戶當(dāng)前目錄是示例:假設(shè)用戶當(dāng)前目錄是 /home/xu 現(xiàn)現(xiàn)需要更換到需要更換到/home/xu/pro 目錄中目錄中n$ cd pro4. cpn示例:示例:n$ cp - r /usr/xu/ /usr/liu/ 表示將表示將/usr/xu 目錄中的所有文件及其子目錄拷貝目錄中的所有文件及其子目錄拷貝到目錄到目錄/usr/liu中。中。5. df示例:列出各文件系統(tǒng)的磁盤空間使用情況。 n#df 6.dfn示例:顯示包含在每個(gè)文件以及目錄/home/fran的子目錄中的磁

10、盤塊數(shù)。ndu -a /home/fran7.Exportn示例:顯示當(dāng)前所有環(huán)境變量的設(shè)置情況n#export8. fdiskn示例:查看當(dāng)前系統(tǒng)中磁盤的分區(qū)狀況示例:查看當(dāng)前系統(tǒng)中磁盤的分區(qū)狀況,包括硬盤、包括硬盤、U盤等盤等nfdisk -l9.lnn示例:要為當(dāng)前目錄下的file文件建立一個(gè)硬鏈接,名為/home/lbt/doc/file/,可用如下命令: nln file /home/lbt/doc/file 10.locate n示例:nlocate filename: 尋找系統(tǒng)中所有叫filename的文件 11.Lsn示例:將 /bin 目錄以下所有目錄及文件詳細(xì)資料列出 :

11、nls -lR /bin12. minicomn示例:開啟minicom得配置界面nminicom s13. Mkdirn示例:在當(dāng)前目錄中創(chuàng)建嵌套的目錄層次示例:在當(dāng)前目錄中創(chuàng)建嵌套的目錄層次inin 和和inin下的下的mail目錄,權(quán)限設(shè)置為只有文件擁有者有目錄,權(quán)限設(shè)置為只有文件擁有者有讀、寫和執(zhí)行權(quán)限。讀、寫和執(zhí)行權(quán)限。nmkdir -p -m 700 ./inin/mail/14.Mountn示例:示例:n掛載掛載ntfs格式的格式的hda7分區(qū)到分區(qū)到/mnt/cdrom文件夾文件夾nmount -o iocharset=cp936 /dev/hda7 /mnt/cdrom15.

12、mvn示例:$ mv /usr/xu/ * . 表示將/usr/xu 中的所有文件移到當(dāng)前目錄 用 . 表示16.Passwdn示例:npasswd pengdrn17. pingn示例:nping 18.pwdn示例:查看當(dāng)前工作:npwd19. rebootn示例:做個(gè)重開機(jī)的模擬(只有紀(jì)錄并不會(huì)真的重開機(jī))。nreboot w20. rmdirn示例:在工作目錄下的 BBB 目錄中,刪除名為 Test 的子目錄。若 Test 刪除后,BBB 目錄成為空目錄,則 BBB 亦予刪除。 nrmdir -p BBB/Testn21. setupn功能說明:設(shè)置程序。n語法:setupn22. s

13、un功能說明:變更用戶身份。n示例:變更賬號(hào)為超級(jí)用戶,并在執(zhí)行df命令后還原使用者。nsu -c df rootn22. tarn功能說明:備份或解壓文件。n示例:壓縮目錄/etc為tar.gz后綴。 n# tar cvf backup.tar /etcn解壓#tar zxvf file.tar.gzn #tar jxvf file.tar.bz2n24. umountn功能:卸除文件系統(tǒng)。n示例:卸載 /mnt區(qū):numount /mnt/cdromn25 whereisn功能:查詢某個(gè)二進(jìn)制命令文件、幫助文件等所在目錄.n比如:查找“l(fā)s”這個(gè)二進(jìn)制命令文件所在的目錄nwhereis l

14、s11.3.2 vi編輯器的使用編輯器的使用nvi是visual interface 的簡(jiǎn)稱,它在 Linux 上的地位就同Edit 程序在 DOS 上一樣,可以執(zhí)行輸出、刪除、查找、替換、塊操作等眾多文本操作,而且用戶可以根據(jù)自己的需要對(duì)其進(jìn)行定制,這是其他編輯程序所沒有的。它不是一個(gè)排版程序,不象 Word 或 WPS 那樣可以對(duì)字體、格式、段落等其他屬性進(jìn)行編排,它只是一個(gè)文本編輯程序。 n1. vi的基本模式及模式間轉(zhuǎn)換的基本模式及模式間轉(zhuǎn)換nvi編輯器的使用按不同的使用方式可以分為3種狀態(tài),分別是命令模式(Command Mode)、輸入模式(Insert Mode)和末行模式(La

15、st Line Mode),各模式區(qū)分如下:n(1)命令模式n(2)輸入模式n(3)末行模式n2. vi的基本操作的基本操作n(1)進(jìn)入與離開)進(jìn)入與離開vin要進(jìn)入 vi 可以直接在系統(tǒng)提示字元下鍵入 vi 檔案名稱,vi 可以自動(dòng)幫你載入所要編輯的檔案或是開啟一個(gè)新檔。進(jìn)入 vi 後螢?zāi)蛔蠓綍?huì)出現(xiàn)波浪符號(hào),凡是列首有 該符號(hào)就代表此列目前是空的。n要離開 vi 可以在指令模式下鍵入 “:q”(不保存離開), “:wq ”(保存離開)指令則是 存檔后再離開(注意冒號(hào))。n(2)vi的刪除、修改與復(fù)制n(3)vi的光標(biāo)移動(dòng)n由于許多編輯工作都是由游標(biāo)來定位的,所以 vi 提供許多移動(dòng)游標(biāo)的方式

16、。 n例如:n0: 移動(dòng)到游標(biāo)所在行的最前面n$: 移動(dòng)到游標(biāo)所在行的最後面 n(4)vi的查找與替換n在vi中的查找與替換也非常簡(jiǎn)單,其操作有些類似在Telnet中的使用。其中,查找的命令在命令行模式下,而替換的命令則在底行模式下(以“:”開頭).n例如:n查找 /pattern :從光標(biāo)開始處向文件尾搜索patternn?pattern從光標(biāo)開始處向文件首搜索pattern n(5)vi的文件操作11.3.3 gcc編譯器編譯器n編譯器的作用是將用高級(jí)語言或者匯編語言編寫的源代碼,翻譯成處理器上等效的一系列操作命令。針對(duì)嵌入式系統(tǒng)來說,其編譯器數(shù)不勝數(shù),其中g(shù)cc 和匯編器 as 是非常優(yōu)

17、秀的編譯工具,而且免費(fèi)。n編譯器的輸出被稱為目標(biāo)文件。對(duì)于任何嵌入式系統(tǒng)而言,有一個(gè)高效的編譯器、鏈接器和調(diào)試器是非常重要的,gcc 不僅在桌面領(lǐng)域中表現(xiàn)出色,還可以為嵌入式系統(tǒng)編譯出高質(zhì)量的代碼。n使用語法:gcc option filename. 11.3.4 make工具和工具和Makefile文件文件n無論是在Linux還是在Unix環(huán)境中,make都是一個(gè)非常重要的編譯命令。不管是自己進(jìn)行項(xiàng)目開發(fā)還是安裝應(yīng)用軟件,都經(jīng)常要用到make或make install。利用make工具,可以將大型的開發(fā)項(xiàng)目分解成為多個(gè)更易于管理的模塊,對(duì)于一個(gè)包括幾百個(gè)源文件的應(yīng)用程序,使用make和mak

18、efile工具就可以簡(jiǎn)潔明快地理順各個(gè)源文件之間紛繁復(fù)雜的相互關(guān)系。 nMake工具最主要也是最基本的功能就是通過makefile文件來描述源程序之間的相互關(guān)系并自動(dòng)維護(hù)編譯工作。而makefile 文件需要按照某種語法進(jìn)行編寫,文件中需要說明如何編譯各個(gè)源文件并連接生成可執(zhí)行文件,并要求定義源文件之間的依賴關(guān)系。makefile 文件是許多編譯器(包括 Windows NT 下的編譯器)維護(hù)編譯信息的常用方法。n以下將以一個(gè)示例的方式來說明Makefile文件的編寫規(guī)則。在這個(gè)示例中有2個(gè)C文件和1個(gè)頭文件,要寫一個(gè)Makefile來告訴make命令如何編譯和鏈接這幾個(gè)文件。實(shí)現(xiàn)的規(guī)則是:n

19、 如果這個(gè)工程沒有編譯過,那么所有C文件都要編譯并被鏈接;n 如果這個(gè)工程的某幾個(gè)C文件被修改,那么只編譯被修改的C文件,并鏈接目標(biāo)程序;n 如果這個(gè)工程的頭文件被改變了,那么需要編譯引用了這幾個(gè)頭文件的C文件,并鏈接目標(biāo)程序; 11.4 Linux內(nèi)核結(jié)構(gòu)內(nèi)核結(jié)構(gòu)n 從結(jié)構(gòu)上來講,操作系統(tǒng)有微內(nèi)核結(jié)構(gòu)和單一結(jié)構(gòu)之分,Windows NT 和 MINIX 是典型的微內(nèi)核操作系統(tǒng),而Linux 則是單一結(jié)構(gòu)的操作系統(tǒng)。微內(nèi)核結(jié)構(gòu)只提供內(nèi)存管理、中斷管理等最基本的服務(wù),服務(wù)之間通過進(jìn)程間通信來進(jìn)行交互,因此效率相對(duì)較低,但它可方便地在內(nèi)核中添加新的組件,結(jié)構(gòu)清晰;單一內(nèi)核的訪問是通過系統(tǒng)調(diào)用來實(shí)現(xiàn)

20、,其效率高,但結(jié)構(gòu)相對(duì)復(fù)雜,且不容易、不方便向內(nèi)核中添加新的組件。11.4.1核心子系統(tǒng)核心子系統(tǒng)1.內(nèi)存管理內(nèi)存管理n對(duì)任何一臺(tái)計(jì)算機(jī)而言,其內(nèi)存以及其它資源都是有限的。為了讓有限的物理內(nèi)存滿足應(yīng)用程序?qū)?nèi)存的大需求量,Linux 采用了稱為“虛擬內(nèi)存”的內(nèi)存管理方式。2.進(jìn)程調(diào)度進(jìn)程調(diào)度n進(jìn)程實(shí)際是某特定應(yīng)用程序的一個(gè)運(yùn)行實(shí)體。在 Linux 系統(tǒng)中,能夠同時(shí)運(yùn)行多個(gè)進(jìn)程,Linux 通過在短的時(shí)間間隔內(nèi)輪流運(yùn)行這些進(jìn)程而實(shí)現(xiàn)“多任務(wù)”。 3.進(jìn)程間通信進(jìn)程間通信n為了完成某特定任務(wù),有時(shí)需要綜合兩個(gè)程序的功能,例如一個(gè)程序輸出文本,而另一個(gè)程序?qū)ξ谋具M(jìn)行排序。4.虛擬文件系統(tǒng)虛擬文件系統(tǒng)

21、nLinux 操作系統(tǒng)中單獨(dú)的文件系統(tǒng)并不是由驅(qū)動(dòng)器號(hào)或驅(qū)動(dòng)器名稱(如 A: 或 C: 等)來標(biāo)識(shí)的,而是和 UNIX 操作系統(tǒng)一樣,將獨(dú)立的文件系統(tǒng)組合成了一個(gè)層次化的樹形結(jié)構(gòu),并且由一個(gè)單獨(dú)的實(shí)體代表這一文件系統(tǒng)。 5.網(wǎng)絡(luò)接口網(wǎng)絡(luò)接口nLinux 和網(wǎng)絡(luò)幾乎是同義詞。實(shí)際上 Linux是就是Internet 或 WWW 的產(chǎn)物。6.其它其它n除上述主要組成部分之外,內(nèi)核還包含設(shè)備驅(qū)動(dòng)程序和一些一般性的任務(wù)和機(jī)制,這些任務(wù)和機(jī)制可使 Linux 內(nèi)核的各個(gè)部分有效地組合在一起,它們是上述主要部分高效工作的必要保證。 11.4.2設(shè)備驅(qū)動(dòng)程序設(shè)備驅(qū)動(dòng)程序n設(shè)備驅(qū)動(dòng)程序也是內(nèi)核的一部分,它由一

22、組數(shù)據(jù)結(jié)構(gòu)和函數(shù)組成,其中的大部分函數(shù)是對(duì)驅(qū)動(dòng)程序接口的實(shí)現(xiàn)。驅(qū)動(dòng)程序通過這組數(shù)據(jù)結(jié)構(gòu)和函數(shù)控制一個(gè)或多個(gè)設(shè)備,并通過驅(qū)動(dòng)程序接口與內(nèi)核的其它部分交互。 nLinux 有許多不同的設(shè)備驅(qū)動(dòng)程序,這也是 Linux 在嵌入式系統(tǒng)開發(fā)中廣泛應(yīng)用的原因之一,而且驅(qū)動(dòng)程序還在不斷增長(zhǎng)。 n雖然這些驅(qū)動(dòng)程序驅(qū)動(dòng)的設(shè)備不同,完成的工作各異,但它們都具有一些一般的屬性:(1)Kernel code:n設(shè)備驅(qū)動(dòng)程序和內(nèi)核中的其它代碼相似,是 kenel 的一部分,如果發(fā)生錯(cuò)誤,可能嚴(yán)重?fù)p害系統(tǒng)。 (2)Kenel interfacesn設(shè)備驅(qū)動(dòng)程序必須向 Linux 內(nèi)核或者它所在的子系統(tǒng)提供一個(gè)標(biāo)準(zhǔn)的接口。

23、例如,終端驅(qū)動(dòng)程序向 Linux 內(nèi)核提供了一個(gè)文件 I/O 接口,而 SCSI 設(shè)備驅(qū)動(dòng)程序向 SCSI 子系統(tǒng)提供了 SCSI 設(shè)備接口,接著,向內(nèi)核提供了文件 I/O 和 buffer2cache 的接口。(3)Kernel mechanisms and servicesn設(shè)備驅(qū)動(dòng)程序使用標(biāo)準(zhǔn)的內(nèi)核服務(wù),例如內(nèi)存分配、中斷轉(zhuǎn)發(fā)和等待隊(duì)列來完成工作。UNIX SVR4 提出了設(shè)備-驅(qū)動(dòng)程序接口/驅(qū)動(dòng)程序-內(nèi)核接口規(guī)范(DDI/DKI),由它來規(guī)范化內(nèi)核與驅(qū)動(dòng)程序之間的接口。 (4)Loadablen大多數(shù)的 Linux 設(shè)備驅(qū)動(dòng)程序,可以在需要的時(shí)候作為內(nèi)核模塊加載,在不再需要的時(shí)候卸載。

24、 (5) ConfigurablenLinux 設(shè)備驅(qū)動(dòng)程序可以建立在內(nèi)核。至于哪些設(shè)備建立到內(nèi)核,可以在內(nèi)核編譯的時(shí)候配置。(6)Dynamicn在系統(tǒng)啟動(dòng),每一個(gè)設(shè)備啟動(dòng)程序初始化的時(shí)候,它會(huì)查找它管理的硬件設(shè)備。如果一個(gè)設(shè)備驅(qū)動(dòng)程序所控制的設(shè)備不存在并沒有關(guān)系。這時(shí)這個(gè)設(shè)備驅(qū)動(dòng)程序只是多余的,占用很少的系統(tǒng)內(nèi)存,而不會(huì)產(chǎn)生危害。11.5 Linux目錄結(jié)構(gòu)目錄結(jié)構(gòu)n11.5.1 Linux源文件的目錄結(jié)構(gòu) 一般桌面Linux安裝后,在/usr/src/Linux-*.*.*(版本號(hào),比如2.4.18)目錄下有內(nèi)核源代碼,內(nèi)核代碼非常龐大,包括驅(qū)動(dòng)程序在內(nèi)有好幾百兆字節(jié)。下面介紹下內(nèi)核的目

25、錄結(jié)構(gòu) n(1) arch目錄包括了所有和體系結(jié)構(gòu)相關(guān)的核心代碼。n(2) include目錄包括編譯核心所需要的大部分頭文件,例如與平臺(tái)無關(guān)的頭文件在include/linux子目錄下。 n(3) init目錄包含核心的初始化代碼(不是系統(tǒng)的引導(dǎo)代碼),有main.c和Version.c兩個(gè)文件。這是研究核心如何工作的好起點(diǎn)。 n(4) drivers目錄中是系統(tǒng)中所有的設(shè)備驅(qū)動(dòng)程序。它又進(jìn)一步劃分成幾類設(shè)備驅(qū)動(dòng),每一種有對(duì)應(yīng)的子目錄,如聲卡的驅(qū)動(dòng)對(duì)應(yīng)于drivers/sound。 n(5) ipc目錄包含了核心進(jìn)程間的通信代碼。 n(6) modules目錄存放了已建好的、可動(dòng)態(tài)加載的模塊

26、。 n(7) fs目錄存放Linux支持的文件系統(tǒng)代碼。不同的文件系統(tǒng)有不同的子目錄對(duì)應(yīng),如ext3文件系統(tǒng)對(duì)應(yīng)的就是ext3子目錄。 n(8) Kernel內(nèi)核管理的核心代碼放在這里。同時(shí)與處理器結(jié)構(gòu)相關(guān)代碼都放在arch/*/kernel目錄下。 n(9) net目錄里是核心的網(wǎng)絡(luò)部分代碼,其每個(gè)子目錄對(duì)應(yīng)于網(wǎng)絡(luò)的一個(gè)方面。 n(10) lib目錄包含了核心的庫(kù)代碼,不過與處理器結(jié)構(gòu)相關(guān)的庫(kù)代碼被放在arch/*/lib/目錄下。 n(11) scripts目錄包含用于配置核心的腳本文件。 n(12) documentation目錄下是一些文檔,是對(duì)每個(gè)目錄作用的具體說明。 11.5.2

27、Linux 運(yùn)行系統(tǒng)的目錄運(yùn)行系統(tǒng)的目錄結(jié)構(gòu)結(jié)構(gòu)nLinux運(yùn)行后,它的目錄結(jié)構(gòu)和源文件目錄結(jié)構(gòu)有所不同。運(yùn)行系統(tǒng)目錄樹的主要部分有 /root、/usr、/var、/home 等。(1)/root目錄中包括:引導(dǎo)系統(tǒng)的必備文件,文件系統(tǒng)的掛裝信息以及系統(tǒng)修復(fù)工具和備份工具等。(2)/usr目錄中包含通常操作中不需要進(jìn)行修改的命令程序文件、程序庫(kù)、手冊(cè)和其它文檔等,它并不和特定的CPU相關(guān),也不會(huì)在通常的使用中修改。因此,將 /usr目錄掛裝為只讀性質(zhì)的。(3)/var目錄中包含經(jīng)常變化的文件,例如打印機(jī)、郵件、新聞等的假脫機(jī)目錄、日志文件、格式化后的手冊(cè)頁以及臨時(shí)文件等。(4)/home 中

28、包含用戶的主目錄,用戶的數(shù)據(jù)保存在其主目錄中,如果有必要,也可將/home 劃分為不同的文件系統(tǒng),例如 /home/students 和/home/teachers 等。(5)/proc目錄下的內(nèi)容并不是ROM中的,而是系統(tǒng)啟動(dòng)后在內(nèi)存中創(chuàng)建的,它包含內(nèi)核虛擬文件系統(tǒng)和進(jìn)程信息,例如 CPU、DMA 通道以及中斷的使用信息等。(6)/etc 包含了系統(tǒng)相關(guān)的配置文件,比如開機(jī)啟動(dòng)選項(xiàng)等。(7)/bin 包含了引導(dǎo)過程必需的命令,也可由普通用戶使用。(8)/sbin 和/bin 類似,盡管其中的命令可由普通用戶使用,但由于這些命令屬于系統(tǒng)級(jí)命令,因此無特殊需求不使用其中的命令。(9)/dev 包

29、含各類設(shè)備文件。(10)/tmp 包含臨時(shí)文件。引導(dǎo)后運(yùn)行的程序應(yīng)當(dāng)在 /var/tmp 中保存文件,因?yàn)槠渲械目捎每臻g大一些。(11)/boot 包含引導(dǎo)裝載程序要使用的文件,內(nèi)核映象通常保存在這個(gè)目錄中。(12)/mnt 是臨時(shí)文件系統(tǒng)的掛裝目錄。比如U盤、光盤、軟盤等都可以在這個(gè)目錄下建立掛載點(diǎn)。11.6 Linux文件系統(tǒng)文件系統(tǒng)nLinux 利用虛擬文件系統(tǒng),把文件系統(tǒng)操作和不同文件系統(tǒng)的具體實(shí)現(xiàn)細(xì)節(jié)分離了開來。很長(zhǎng)時(shí)期以來,文件系統(tǒng)的接口保持了一定的穩(wěn)定性,即使變化也是向下兼容的。但是文件系統(tǒng)的框架結(jié)構(gòu)發(fā)生了徹底的變化。起初的框架只支持一種文件系統(tǒng),并且所有的文件都必須存放在與系統(tǒng)

30、有物理連接的本地磁盤上。 11.6.1 文件系統(tǒng)與內(nèi)核的關(guān)系文件系統(tǒng)與內(nèi)核的關(guān)系n任何一個(gè)操作系統(tǒng)都必須要提供持久性存儲(chǔ)和管理數(shù)據(jù)的手段。在 Linux 系統(tǒng)中,“文件”用來保存數(shù)據(jù),而“文件系統(tǒng)”可以讓用戶組織、操縱以及存取不同的文件。文件系統(tǒng)的基本組成單位是文件,文件系統(tǒng)中的所有文件通過目錄、鏈接等組織成一棵完整的樹型結(jié)構(gòu),其根為“/”,文件在葉子位置,各子目錄處在中間節(jié)點(diǎn)的位置。11.6.2 常見通用常見通用Linux文件系文件系統(tǒng)統(tǒng)n1. EXT2文件系統(tǒng)文件系統(tǒng)nEXT2 是由 Remy Card 發(fā)明的,它是 Linux 的一個(gè)可擴(kuò)展的、功能強(qiáng)大的文件系統(tǒng)。至少在 Linux 社區(qū)

31、中,EXT2 是最成功的文件系統(tǒng),是所有當(dāng)前的 Linux 發(fā)布版的基礎(chǔ)。象大多數(shù)文件系統(tǒng)一樣,EXT2 文件系統(tǒng)建立在這樣的前提下:文件的數(shù)據(jù)存放在數(shù)據(jù)塊中,這些數(shù)據(jù)塊的長(zhǎng)度都相同。 n2. EXT3文件系統(tǒng)文件系統(tǒng)nExt3文件系統(tǒng)是直接從Ext2文件系統(tǒng)發(fā)展而來,它很大程度上是基于 Ext2 的,因此,它在磁盤上的數(shù)據(jù)結(jié)構(gòu)從本質(zhì)上與 Ext2 文件系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)是相同的。事實(shí)上,如果 Ext3 文件系統(tǒng)已經(jīng)被徹底卸載,那么,就可以把它作為 Ext2 文件系統(tǒng)來重新安裝;反之,創(chuàng)建Ext2 文件系統(tǒng)的日志,并把它作為 Ext3 文件系統(tǒng)來重新安裝也是一種簡(jiǎn)單、快速的操作。 11.6.3 常見嵌入式常見嵌入式Linux文件文件系統(tǒng)系統(tǒng)n在嵌入式Linux應(yīng)用中,主要的存儲(chǔ)設(shè)備為RAM(DRAM, SDRAM)和ROM(常采用FLASH存儲(chǔ)器),常用的基于存儲(chǔ)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論