Linux操作系統基礎課件_第1頁
Linux操作系統基礎課件_第2頁
Linux操作系統基礎課件_第3頁
Linux操作系統基礎課件_第4頁
Linux操作系統基礎課件_第5頁
已閱讀5頁,還剩43頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

Linux操作系統基礎

11.1嵌入式Linux的開發環境11.1.1交叉開發概念模型TARGET就是目標板,HOST是開發主機。在開發主機上,可以安裝開發工具,編輯、編譯目標板的Linux引導程序、內核和文件系統,然后在目標板上運行。通常這種在主機環境下開發,在目標板上運行的開發模式叫作交叉開發。目標板(Target)可以是嵌入式應用軟件的實際運行環境,當然也可以是替代實際環境的仿真系統(如軟件模擬器)。宿主機(Host)通過串口、網絡連接或調試接口(如JTAG仿真器)與目標機通信。宿主機的軟硬件資源比較豐富,其操作系統主要有Windows和Linux兩種,其上用于開發程序的那套軟件工具,通常叫做開發工具鏈。11.1.2桌面Linux的開發工具鏈GNU開發工具鏈(toolchain)主要包括GNUCompilerCollection、GNUlibc

以及用來編譯、測試和分析軟件的GNUbinutils

三個大的模塊。基于ARM平臺的交叉工具鏈,這里將其目標平臺名為arm-linux-gnu,比如arm-linux-gcc、arm-linux-gdb等。分步構建交交叉開發工具鏈的整個過程:1.下載源代碼

到相關的網站下載包括binutils、gcc、glibc(如)及linux(如)內核的源代碼.注意:glibc和內核源代碼的版本必須與目標機上實際使用的版本保持一致.2.建立環境變量聲明以下環境變量的目的是在之后編譯工具庫的時候用到,很方便輸入,尤其是可以降低輸錯路徑的風險。3.配置、安裝binutilsinutils是GNU工具之一,它包括連接器、匯編器和其他用于目標文件和檔案的工具,它是二進制代碼的維護工具。安裝Binutils工具包含的程序有addr2line、ar、as、c++filt、gprof、ld、mm、objcopy、ranlib、readelf、size、strings、strip、libiberty、libbfd和libopcodes。4.配置linux內核頭文件

編譯器需要通過系統內核的頭文件來獲得目標平臺所支持的系統函數調用所需要的信息。對于LINUX內核,最好的方法是下載一個合適的內核,然后復制獲得頭文件。首先執行makemrproper進行清理工作。接下來執行makeconfigARCH=arm(或makemenuconfig/xconfigARCH=arm)進行配置.5.第一次編譯gcc

完成此過程需要執行三個步驟,分別如下:

(1)修改t-linux下的內容

(2)配置gcc(3)編譯、安裝gcc6.交叉編譯glibc

這一步驟生成的代碼是針對目標機cpu的,因此它屬于一個交叉編譯過程。該過程要用到linux內核頭文件,默認路徑為$PREFIX/arm-linux/sys-linux,因而需要在$PREFIX/arm-linux中建立一個名為sys-linux的軟連接,使其內核頭文件所在的include目錄.或者也可以在接下來要執行的configure命令中使用--with-headers參數指定linux內核頭文件的實際路徑。

7.第二次編譯gcc

由于第一次安裝的gcc沒有交叉glibc支持,現在已經安裝了glibc,所以需要重新編譯來支持glibc。到此為止整個交叉開發工具鏈就完全生成了。11.2桌面Linux的安裝11.2.1雙操作系統環境一般會用到兩個桌面操作系統,即linux和windows操作系統,其中Linux主要有Redhat/Fedora、Suse、Mandrake等發行版本。

Windows與Linux的雙重啟動為Linux操作系統準備硬盤空間11.2.2VMware虛擬機環境VMwareworkstation是VMware公司設計的專業虛擬機,可以在Windows平臺上為幾乎任何的其他操作系統提供虛擬運行環境。顧名思義,只要物理主機的內存、CPU等配置足夠,就可以在Windows平臺上,再“虛擬”出一臺或多臺“PC機”,而且使用簡單,容易上手,是目前用得非常廣泛的工具軟件。

11.3Linux的使用11.3.1Linux基本命令1.adduser示例:創建pdr帳戶adduserpdr2.cat示例:cattext在屏幕上顯示文件text的內容;cat-ntextfile1>textfile2把textfile1的文件內容加上行號后輸入textfile2這個文件里;3.Cd示例:假設用戶當前目錄是/home/xu

現需要更換到/home/xu/pro目錄中$cdpro4.cp示例:$cp-r/usr/xu//usr/liu/表示將/usr/xu

目錄中的所有文件及其子目錄拷貝到目錄/usr/liu中。5.df示例:列出各文件系統的磁盤空間使用情況。#df

6.du示例:顯示包含在每個文件以及目錄/home/fran的子目錄中的磁盤塊數。du-a/home/fran7.Export示例:顯示當前所有環境變量的設置情況#export8.fdisk示例:查看當前系統中磁盤的分區狀況,包括硬盤、U盤等fdisk-l9.ln示例:要為當前目錄下的file文件建立一個硬鏈接,名為/home/lbt/doc/file/,可用如下命令:lnfile/home/lbt/doc/file10.locate

示例:locatefilename:尋找系統中所有叫filename的文件11.Ls示例:將/bin目錄以下所有目錄及文件詳細資料列出:ls-lR/bin12.minicom示例:開啟minicom得配置界面minicom–s13.Mkdir示例:在當前目錄中創建嵌套的目錄層次inin

和inin下的mail目錄,權限設置為只有文件擁有者有讀、寫和執行權限。mkdir-p-m700./inin/mail/14.Mount示例:掛載ntfs格式的hda7分區到/mnt/cdrom文件夾mount-oiocharset=cp936/dev/hda7/mnt/cdrom15.mv示例:$mv/usr/xu/*.表示將/usr/xu

中的所有文件移到當前目錄用.表示16.Passwd示例:passwdpengdr17.ping示例:ping18.pwd示例:查看當前工作:Pwd19.reboot示例:做個重開機的模擬(只有紀錄并不會真的重開機)。reboot–w20.rmdir示例:在工作目錄下的BBB目錄中,刪除名為Test的子目錄。若Test刪除后,BBB目錄成為空目錄,則BBB亦予刪除。rmdir-pBBB/Test22.tar功能說明:備份或解壓文件。示例:壓縮目錄/etc為tar.gz后綴。#tarcvfbackup.tar/etc解壓#tar–zxvffile.tar.gz#tar–jxvffile.tar.bz224.umount功能:卸除文件系統。示例:卸載/mnt區:umount/mnt/cdrom11.3.2vi編輯器的使用vi是visualinterface的簡稱,它在Linux上的地位就同Edit程序在DOS上一樣,可以執行輸出、刪除、查找、替換、塊操作等眾多文本操作,而且用戶可以根據自己的需要對其進行定制,這是其他編輯程序所沒有的。它不是一個排版程序,不象Word或WPS那樣可以對字體、格式、段落等其他屬性進行編排,它只是一個文本編輯程序。

1.vi的基本模式及模式間轉換

vi編輯器的使用按不同的使用方式可以分為3種狀態,分別是命令模式(CommandMode)、輸入模式(InsertMode)和末行模式(LastLineMode),各模式區分如下:(1)命令模式(2)輸入模式(3)末行模式Linux退出vivifile末行模式輸入模式轉義命令按[Esc]鍵文本輸入命令執行完畢或按[Esc]鍵命令模式2.vi的基本操作(1)進入與離開vi

要進入

vi

可以直接在系統提示字元下鍵入

vi

<檔案名稱>,vi

可以自動幫你載入所要編輯的檔案或是開啟一個新檔。進入

vi

後螢幕左方會出現波浪符號,凡是列首有

該符號就代表此列目前是空的。要離開

vi

可以在指令模式下鍵入

“:q”(不保存離開),

“:wq

”(保存離開)指令則是

存檔后再離開(注意冒號)。(2)vi的刪除、修改與復制(3)vi的光標移動由于許多編輯工作都是由游標來定位的,所以

vi

提供許多移動游標的方式。例如:--a從光標所在位置後面開始新增資料,光標後的資料隨新增資料向後移動。--A從光標所在列最後面的地方開始新增資料。--i從光標所在位置前面開始插入資料,光標後的資料隨新增資料向後移動。--I從光標列的第一個非空白字符前面開始插入資料。--o在光標所在列下新增一列并進入輸入模式。--O在光標所在列上方新增一列并進入輸入模式。(4)vi的查找與替換在vi中的查找與替換也非常簡單,其操作有些類似在Telnet中的使用。其中,查找的命令在命令行模式下,而替換的命令則在底行模式下(以“:”開頭).例如:查找/pattern:從光標開始處向文件尾搜索pattern?pattern從光標開始處向文件首搜索pattern(5)vi的文件操作11.3.3gcc編譯器

編譯器的作用是將用高級語言或者匯編語言編寫的源代碼,翻譯成處理器上等效的一系列操作命令。針對嵌入式系統來說,其編譯器數不勝數,其中gcc

和匯編器as是非常優秀的編譯工具,而且免費。編譯器的輸出被稱為目標文件。對于任何嵌入式系統而言,有一個高效的編譯器、鏈接器和調試器是非常重要的,gcc

不僅在桌面領域中表現出色,還可以為嵌入式系統編譯出高質量的代碼。使用語法:gcc[option]filename...11.3.4make工具和Makefile文件

無論是在Linux還是在Unix環境中,make都是一個非常重要的編譯命令。不管是自己進行項目開發還是安裝應用軟件,都經常要用到make或makeinstall。利用make工具,可以將大型的開發項目分解成為多個更易于管理的模塊,對于一個包括幾百個源文件的應用程序,使用make和makefile工具就可以簡潔明快地理順各個源文件之間紛繁復雜的相互關系。Make工具最主要也是最基本的功能就是通過makefile文件來描述源程序之間的相互關系并自動維護編譯工作。而makefile

文件需要按照某種語法進行編寫,文件中需要說明如何編譯各個源文件并連接生成可執行文件,并要求定義源文件之間的依賴關系。makefile

文件是許多編譯器(包括WindowsNT下的編譯器)維護編譯信息的常用方法。

以下將以一個示例的方式來說明Makefile文件的編寫規則。在這個示例中有2個C文件和1個頭文件,要寫一個Makefile來告訴make命令如何編譯和鏈接這幾個文件。實現的規則是:①如果這個工程沒有編譯過,那么所有C文件都要編譯并被鏈接;②如果這個工程的某幾個C文件被修改,那么只編譯被修改的C文件,并鏈接目標程序;③如果這個工程的頭文件被改變了,那么需要編譯引用了這幾個頭文件的C文件,并鏈接目標程序;11.4Linux內核結構

從結構上來講,操作系統有微內核結構和單一結構之分,WindowsNT和MINIX是典型的微內核操作系統,而Linux則是單一結構的操作系統。微內核結構只提供內存管理、中斷管理等最基本的服務,服務之間通過進程間通信來進行交互,因此效率相對較低,但它可方便地在內核中添加新的組件,結構清晰;單一內核的訪問是通過系統調用來實現,其效率高,但結構相對復雜,且不容易、不方便向內核中添加新的組件。11.4.1核心子系統1.內存管理對任何一臺計算機而言,其內存以及其它資源都是有限的。為了讓有限的物理內存滿足應用程序對內存的大需求量,Linux采用了稱為“虛擬內存”的內存管理方式。2.進程調度進程實際是某特定應用程序的一個運行實體。在Linux系統中,能夠同時運行多個進程,Linux通過在短的時間間隔內輪流運行這些進程而實現“多任務”。3.進程間通信為了完成某特定任務,有時需要綜合兩個程序的功能,例如一個程序輸出文本,而另一個程序對文本進行排序。4.虛擬文件系統

Linux操作系統中單獨的文件系統并不是由驅動器號或驅動器名稱(如A:或C:等)來標識的,而是和UNIX操作系統一樣,將獨立的文件系統組合成了一個層次化的樹形結構,并且由一個單獨的實體代表這一文件系統。5.網絡接口

Linux和網絡幾乎是同義詞。實際上Linux是就是Internet或WWW的產物。6.其它除上述主要組成部分之外,內核還包含設備驅動程序和一些一般性的任務和機制,這些任務和機制可使Linux內核的各個部分有效地組合在一起,它們是上述主要部分高效工作的必要保證。

11.4.2設備驅動程序

設備驅動程序也是內核的一部分,它由一組數據結構和函數組成,其中的大部分函數是對驅動程序接口的實現。驅動程序通過這組數據結構和函數控制一個或多個設備,并通過驅動程序接口與內核的其它部分交互。

Linux有許多不同的設備驅動程序,這也是Linux在嵌入式系統開發中廣泛應用的原因之一,而且驅動程序還在不斷增長。

雖然這些驅動程序驅動的設備不同,完成的工作各異,但它們都具有一些一般的屬性:(1)Kernelcode:設備驅動程序和內核中的其它代碼相似,是kenel

的一部分,如果發生錯誤,可能嚴重損害系統。(2)Kenelinterfaces

設備驅動程序必須向Linux內核或者它所在的子系統提供一個標準的接口。例如,終端驅動程序向Linux內核提供了一個文件I/O接口,而SCSI設備驅動程序向SCSI子系統提供了SCSI設備接口,接著,向內核提供了文件I/O和buffer2cache的接口。(3)Kernelmechanismsandservices

設備驅動程序使用標準的內核服務,例如內存分配、中斷轉發和等待隊列來完成工作。UNIXSVR4提出了設備-驅動程序接口/驅動程序-內核接口規范(DDI/DKI),由它來規范化內核與驅動程序之間的接口。

(4)Loadable

大多數的Linux設備驅動程序,可以在需要的時候作為內核模塊加載,在不再需要的時候卸載。(5)ConfigurableLinux設備驅動程序可以建立在內核。至于哪些設備建立到內核,可以在內核編譯的時候配置。(6)Dynamic

在系統啟動,每一個設備啟動程序初始化的時候,它會查找它管理的硬件設備。如果一個設備驅動程序所控制的設備不存在并沒有關系。這時這個設備驅動程序只是多余的,占用很少的系統內存,而不會產生危害。11.5Linux目錄結構11.5.1Linux源文件的目錄結構

一般桌面Linux安裝后,在/usr/src/Linux-*.*.*(版本號,比如2.4.18)目錄下有內核源代碼,內核代碼非常龐大,包括驅動程序在內有好幾百兆字節。下面介紹下內核的目錄結構

目錄結構及目錄路徑/bootdevetchomelibbinproc…usrvargrublost+foundsharelocal…binmansrcbin…man1php.1/bin

該目錄中存放Linux的常用命令,在有的版本中是一些和根目錄下相同的目錄。/boot

該目錄下存放的都是系統啟動時要用到的程序,當用lilo引導Linux時,會用到這里的一些信息/dev

該目錄包含了Linux系統中使用的所有外部設備,它實際上是訪問這些外部設備的端口,你可以訪問這些外部設備,與訪問一個文件或一個目錄沒有區別。例如在系統中鍵入“cd/dev/cdrom”,就可以看到光驅中的文件;鍵入“cd/dev/mouse”即可看鼠標的相關文件。/cdrom

該目錄在剛安裝系統時是空的,你可以將光驅文件系統掛在這個目錄下,例如“mount/dev/cdrom/cdrom”/etc

該目錄存放了系統管理時要用到的各種配置文件和子目錄,例如網絡配置文件、文件系統、X系統配置文件、設備配置信息、設置用戶信息等。/usr

用戶的很多應用程序和文件都存放在該目錄下/sbin

該目錄用來存放系統管理員的系統管理程序。/home

如果建立一個名為“xx”的用戶,那么在/home目錄下就有一個對應的“/home/xx”路徑,用來存放該用戶的主目錄。/lib

該目錄用來存放系統動態連接共享庫,幾乎所有的應用程序都會用到該目錄下的共享庫/lost+found

該目錄在大多數情況下都是空的。但當突然停電、或者非正常關機后,有些文件就臨時存放在這里。/mnt

該目錄在一般情況下也是空的,你可以臨時將別的文件系統掛在該目錄下。/proc

可以在該目錄下獲取系統信息,這些信息是在內存中由系統自己產生的/root

如果你是以超級用戶的身份登錄的,這個就是超級用戶的主目/tmp

用來存放不同程序執行時產生的臨時文件11.5.2Linux運行系統的目錄結構Linux運行后,它的目錄結構和源文件目錄結構有所不同。運行系統目錄樹的主要部分有/root、/usr、/var、/home等。(1)/root目錄中包括:引導系統的必備文件,文件系統的掛裝信息以及系統修復工具和備份工具等。(2)/usr目錄中包含通常操作中不需要進行修改的命令程序文件、程序庫、手冊和其它文檔等,它并不和特定的CPU相關,也不會在通常的使用中修改。因此,將/usr目錄掛裝為只讀性質的。(3)/var目錄中包含經常變化的文件,例如打印機、郵件、新聞等的假脫機目錄、日志文件、格式化后的手冊頁以及臨時文件等。(4)/home

中包含用戶的主目錄,用戶的數據保存在其主目錄中,如果有必要,也可將/home劃分為不同的文件系統,例如/home/students和/home/teachers等。(5)/proc目錄下的內容并不是ROM中的,而是系統啟動后在內存中創建的,它包含內核虛擬文件系統和進程信息,例如CPU、DMA通道以及中斷的使用信息等。(6)/etc

包含了系統相關的配置文件,比如開機啟動選項等。(7)/bin

包含了引導過程必需的命令,也可由普通用戶使用。(8)/sbin

和/bin類似,盡管其中的命令可由普通用戶使用,但由于這些命令屬于系統級命令,因此無特殊需求不使用其中的命令。(9)/dev

包含各類設備文件。(10)/tmp

包含臨時文件。引導后運行的程序應當在/var/tmp

中保存文件,因為其中的可用空間大一些。(11)/boot

包含引導裝載程序要使用的文件,內核映象通常保存在這個目錄中。(12)/mnt

是臨時文件系統的掛裝目錄。比如U盤、光盤、軟盤等都可以在這個目錄下建立掛載點。11.6Linux文件系統Linux利用虛擬文件系統,把文件系統操作和不同文件系統的具體實現細節分離了開來。很長時期以來,文件系統的接口保持了一定的穩定性,即使變化也是向下兼容的。但是文件系統的框架結構發生了徹底的變化。起初的框架只支持一種文件系統,并且所有的文件都必須存放在與系統有物理連接的本地磁盤上。

11.6.1文件系統與內核的關系

任何一個操作系統都必須要提供持久性存儲和管理數據的手段。在Linux系統中,“文件”用來保存數據,而“文件系統”可以讓用戶組織、操縱以及存取不同的文件。文件系統的基本組成單位是文件,文件系統中的所有文件通過目錄、鏈接等組織成一棵完整的樹型結構,其根為“/”,文件在葉子位置,各子目錄處在中間節點的位置。11.6.2常見通用Linux文件系統1.EXT2文件系統

EXT2是由RemyCard發明的,它是Linux的一個可擴展的、功能強大的文件系統。至少在Linux社區中,EXT2是最成功的文件系統,是所有當前的Linux發布版的基礎。象大多數文件系統一樣,EXT2文件系統建立在這樣的前提下:文件的數據存放在數據塊中,這些數據塊的長度都相同。

2.EXT3文件系統

Ext3文件系統是直接從Ext2文件系統發展而來,它很大程度上是基于Ext2的,因此,它在磁盤上的數據結構從本質上與Ext2文件系統的數據結構是相同的。事實上,如果Ext3文件系統已經被徹底卸載,那么,就可以把它作為Ext2文件系統來重新安裝;反之,創建Ext2文件系統的日志,并把它作為Ext3文件系統來重新安裝也是一種簡單、快速的操作。11.6.3常見嵌入式Linux文件系統

在嵌入式Linux應用中,主要的存儲設備為RAM(DRAM,SDRAM)和ROM(常采用FLASH存儲器),常用的基于存儲設備的

溫馨提示

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

評論

0/150

提交評論