版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第6章嵌入式Linux操作系統(tǒng)及應用6.1嵌入式Linux操作系統(tǒng)概述6.2嵌入式Linux的常用命令6.3嵌入式Linux開發(fā)環(huán)境的構(gòu)建6.4嵌入式Linux內(nèi)核的移植 6.1嵌入式Linux操作系統(tǒng)概述
6.1.1常用嵌入式Linux系統(tǒng)
1.?RT-Linux
這是由墨西哥理工學院開發(fā)的嵌入式Linux操作系統(tǒng)。到目前為止,RT-Linux已經(jīng)成功地應用于航天飛機的空間數(shù)據(jù)采集、科學儀器測控和電影特技圖像處理等廣泛領(lǐng)域。RT-Linux開發(fā)者并沒有針對實時操作系統(tǒng)的特性而重寫Linux的內(nèi)核,因為這樣做的工作量非常大,而且要保證兼容性也非常困難。為此,RT-Linux提出了精巧的內(nèi)核,并把標準的Linux核心作為實時核心的一個進程,同用戶的實時進程一起調(diào)度。這樣對Linux的改動非常小,并且充分利用了Linux下現(xiàn)有的豐富的軟件資源。
2.μCLinux
μCLinux是一種優(yōu)秀的嵌入式Linux版本,是micro-Control-Linux的縮寫。它繼承了標準Linux的優(yōu)良特性,經(jīng)過各方面的小型化改造,形成了一個高度優(yōu)化的、代碼緊湊的嵌入式Linux。μCLinux主要是針對目標處理器沒有存儲管理單元MMU(MemoryManagementUnit)的嵌入式系統(tǒng)而設計的。雖然它的體積很小,卻仍然保留了Linux的大多數(shù)的優(yōu)點,如穩(wěn)定、良好的移植性、優(yōu)秀的網(wǎng)絡功能、對各種文件系統(tǒng)完備的支持和標準豐富的API。μCLinux專為嵌入式系統(tǒng)做了許多小型化的工作,目前已支持多款CPU。其編譯后目標文件可控制在幾百KB數(shù)量級,并已經(jīng)被成功地移植到很多平臺上。它是Lineo公司的主打產(chǎn)品,同時也是開放源代碼的嵌入式Linux的典范。
3.?ARM-Linux
ARM-Linux是一個成功的Linux內(nèi)核的組成部分,它是專門為基于ARM系列處理器而設計的。它是由RussellKing在其他人的經(jīng)驗基礎(chǔ)上主創(chuàng)出來的。ARM-Linux正在被全世界不同的組織和個人持續(xù)的完善和發(fā)展。目前,除了不含MMU的ARM7處理器外,其他的ARM9/XSCALE等ARM系列處理器都運行ARM-Linux。據(jù)不完全統(tǒng)計,ARM-Linux內(nèi)核已經(jīng)移植到500種以上的機器種類上,其中包括個人電腦、網(wǎng)絡計算機、掌上設備和各種開發(fā)板。
4.?Redhat-Linux
Redhat公司是全球最大的開源技術(shù)廠家,其產(chǎn)品RedhatLinux也是全世界應用最廣泛的Linux。Redhat公司總部位于美國北卡羅來納州,在全球擁有22個分公司。它的產(chǎn)品市場占有率很高,約占Linux操作系統(tǒng)52%的市場份額。它也是Compaq、Dell、Intel等一流的IT企業(yè)的合作伙伴。
現(xiàn)在Redhat已不自己開發(fā)桌面版的Linux操作系統(tǒng)。它最后推出的一款產(chǎn)品是RedhatLinux9。Redhat把桌面版Linux操作系統(tǒng)產(chǎn)品交由Fedora社區(qū)開發(fā)。FedoraCore是由Redhat資助的合作項目產(chǎn)生的一款產(chǎn)品。因為FedoraCore最初就是在Redhat的基礎(chǔ)上開發(fā)的,所以由Redhat和Fedora聯(lián)手共同開發(fā)維護這個產(chǎn)品。
5.?XLinux
XLinux是由美國網(wǎng)虎公司推出的。美國網(wǎng)虎公司是全球性的Linux相關(guān)技術(shù)開發(fā)的領(lǐng)導廠商,成立于1998年9月,總部設在美國硅谷。公司致力于發(fā)展Linux的先進技術(shù)及實際應用(如Linux嵌入式系統(tǒng)在IA信息家電網(wǎng)領(lǐng)域中的應用),并將XLinux建立成為全球Linux的領(lǐng)導品牌。XLinux核心采用了“超字元集”專利技術(shù),讓Linux核心不僅可以與標準字符集相容,還涵蓋了12個國家和地區(qū)的字符集。因此,XLinux在推廣Linux的國際應用方面有獨特的優(yōu)勢。最新版的XLinuxOS1.5是功能齊全且穩(wěn)定性高的Linux操作系統(tǒng),它不僅提供友好、簡單的使用界面,而且提供菜單和窗口對話框方式的系統(tǒng)配置和管理工具。另外,XLinuxOS1.5采用交互式的安裝界面,只需要15~30分鐘就可以完成系統(tǒng)的安裝。
6.紅旗嵌入式Linux
由北京中科院紅旗軟件公司推出的嵌入式Linux是國內(nèi)做得較好的一款嵌入式操作系統(tǒng)。目前,中科院計算所自行開發(fā)的開放源碼的嵌入式操作系統(tǒng)—EasyEmbeddedOS(EEOS)也已經(jīng)開始進入實用階段了。該款嵌入式操作系統(tǒng)重點支持p-Java。系統(tǒng)目標一方面是小型化,另一方面是能實現(xiàn)Linux的驅(qū)動和其他模塊。由于有中科院計算所的強大科研力量做后盾,EEOS有望發(fā)展成為功能完善、穩(wěn)定、可靠的國產(chǎn)嵌入式操作系統(tǒng)平臺。6.1.2嵌入式Linux系統(tǒng)內(nèi)核
嵌入式Linux系統(tǒng)需要三個基本要素:系統(tǒng)引導工具(用于機器加電后的系統(tǒng)定位引導)、Linux微內(nèi)核(內(nèi)存管理、程序管理)和初始化進程。但如果要讓它成為完整的操作系統(tǒng)并且繼續(xù)保持小型化,還必須加上硬件驅(qū)動程序、硬件接口程序和應用程序組。
1.內(nèi)核體系結(jié)構(gòu)
Linux內(nèi)核采用的是單一內(nèi)核結(jié)構(gòu)。這種內(nèi)核結(jié)構(gòu)的重要特征是模塊化。模塊化能有效實現(xiàn)許多良好的功能。每個模塊都是一個目標文件,它的代碼可以在運行時被鏈接到內(nèi)核。目標代碼往往由函數(shù)集組成,該集合實現(xiàn)了文件系統(tǒng)、設備驅(qū)動器以及其他一些內(nèi)核的上層特征。Linux對模塊給予了強有力的支持,在各個模塊之間規(guī)定了一些良好的界面,并且可以動態(tài)地裝入和卸載內(nèi)核中的部分代碼。
Linux的內(nèi)核為非搶占式的。它不能通過改變優(yōu)先權(quán)來影響當前的執(zhí)行流程,因此,可以對Linux某些重要的數(shù)據(jù)結(jié)構(gòu)進行修改而不加任何保護措施。Linux內(nèi)核主要有下列功能:①用軟件接口抽象不同的硬件資源,以簡化操作,屏蔽低層硬件的不同接口,即資源抽象;②將抽象出來的各種資源分配給各個進程并負責取回這些系統(tǒng)資源,即資源分配;③根據(jù)不同的資源類型使用不同的機制保證資源被進程所獨占,即資源共享。簡而言之,Linux內(nèi)核包含進程調(diào)度、內(nèi)存管理、文件系統(tǒng)、進程間通信、網(wǎng)絡及資源管理六部分。Linux內(nèi)核的體系結(jié)構(gòu)如圖6.1所示。圖6.1Linux內(nèi)核的體系結(jié)構(gòu)
1)進程調(diào)度
進程調(diào)度控制CPU資源的分配。Linux內(nèi)核采用給予優(yōu)先級的搶占式多任務調(diào)度方式。在這種調(diào)度方式下,系統(tǒng)中運行的進程是所有可運行進程中優(yōu)先級最高的那個。在嵌入式系統(tǒng)的應用中,有很多實時需求,所以有些用于嵌入式系統(tǒng)的Linux通過改變進程調(diào)度來實現(xiàn)實時調(diào)度。此類Linux內(nèi)核中進程調(diào)度部分和具體的硬件平臺相關(guān)性不大,因為調(diào)度算法在所有硬件平臺上的實現(xiàn)都是相同的。但是進程調(diào)度一般都是通過硬件的時鐘中斷來實現(xiàn)的,這一部分與具體硬件相關(guān),另外在進程切換部分也和硬件平臺相關(guān),所以進程切換部分一般都用匯編語言實現(xiàn)。
2)內(nèi)存管理
標準Linux系統(tǒng)在具有MMU的硬件中支持虛擬內(nèi)存,它使用硬件提供的分頁機制。Linux的內(nèi)存管理系統(tǒng)用于管理內(nèi)存資源,它實現(xiàn)了進程之間的內(nèi)存保護、內(nèi)存共享以及內(nèi)存管理功能。內(nèi)存管理可分為硬件相關(guān)部分和硬件無關(guān)部分。其中硬件相關(guān)部分負責初始化內(nèi)存、處理缺頁中斷、把硬件提供的分頁機制抽象成三級頁面映射;硬件無關(guān)部分提供內(nèi)存分配、內(nèi)存映射等功能。有些嵌入式設備采用的CPU不具有MMU,在這種設備中,需要把Linux中的虛擬內(nèi)存管理系統(tǒng)去掉。
3)文件系統(tǒng)
Linux的文件系統(tǒng)結(jié)構(gòu)與UNIX的類似,該系統(tǒng)具有虛擬文件系統(tǒng)(VFS)接口,所有真正的文件系統(tǒng)都掛接在虛擬文件系統(tǒng)下,通過虛擬文件系統(tǒng)接口來訪問。由于使用了統(tǒng)一的接口,因此Linux可以支持多個文件系統(tǒng),包括一些特殊的文件系統(tǒng)。
Linux的文件系統(tǒng)可分為以下三個子系統(tǒng):
(1)虛擬文件系統(tǒng)(VFS)。VFS提供了所有文件以及設備的數(shù)據(jù)抽象,即給上層提供文件操作的接口。其接口函數(shù)包括文件的打開、讀、寫、控制等。Linux操作系統(tǒng)的VFS僅僅存在于內(nèi)存中,它在初始化完成之后,從邏輯文件系統(tǒng)的存儲介質(zhì)加載相應的邏輯文件系統(tǒng)到VFS中的某個路徑,并讀取該邏輯文件中的超級塊以及索引節(jié)點,以建立統(tǒng)一的VFS索引節(jié)點。VFS是內(nèi)核的一個子系統(tǒng),其他系統(tǒng)只與VFS打交道,不與邏輯文件系統(tǒng)發(fā)生關(guān)系。對邏輯文件系統(tǒng)而言,VFS是管理者;對內(nèi)核的其他子系統(tǒng)而言,VFS是它們與邏輯文件系統(tǒng)的接口。同時,VFS還給設備操作進程提供通信接口。在VFS中,采用超級塊、索引節(jié)點等多級機制對文件進行查找、操作、管理。
(2)邏輯文件系統(tǒng)。邏輯文件系統(tǒng)對應各種Linux支持的文件系統(tǒng),它實現(xiàn)了邏輯數(shù)據(jù)塊與物理數(shù)據(jù)塊之間的轉(zhuǎn)換和映射以及緩沖區(qū)的管理。由于文件系統(tǒng)抽象的具體文件設備在不同的硬件環(huán)境中差別很大,因此需要邏輯文件系統(tǒng)來實現(xiàn)從邏輯塊到物理塊的分配。
(3)設備管理部分。在設備管理部分,所有的設備按照外部數(shù)據(jù)與內(nèi)存數(shù)據(jù)的交換方式分為塊設備和字符設備。設備驅(qū)動程序可以通過塊設備和字符設備所對應的文件索引節(jié)點號來實現(xiàn)對設備的訪問。設備管理主要實現(xiàn)對驅(qū)動程序的管理。設備按照主設備號和從設備號來識別,相同主設備號代表一類設備,其操作訪問方式相同,不同的從設備號代表相同種類的多個設備。設備驅(qū)動層按照標準的方式進行編譯并且注冊到系統(tǒng)中后,就可以按照統(tǒng)一的界面被調(diào)用。
文件系統(tǒng)是Linux的核心部分。在Linux系統(tǒng)中,許多概念和語義都與文件有關(guān),如文件操作、設備讀寫、管道通信等。所以文件子系統(tǒng)給應用程序提供的頁面非常重要。
4)進程間通信(IPC)
一般情況下,進程在自己的地址空間運行時不會互相干擾。但是有很多應用會要求在進程間傳遞信息,所以Linux也提供了UNIX中常用的進程間通信機制。主要的進程間通信方式有管道(Pipe)、文件鎖、SystemVIPC、信號(Signal)及共享內(nèi)存等。因為Linux支持網(wǎng)絡,所以還可以使用網(wǎng)絡接口進行進程間通信。Linux的進程間通信機制和硬件體系無關(guān),在大多數(shù)的平臺上都支持同樣的方式。
5)網(wǎng)絡
Linux是在互聯(lián)網(wǎng)環(huán)境下產(chǎn)生的操作系統(tǒng),所以它對網(wǎng)絡具有良好的支持。Linux內(nèi)核支持多種網(wǎng)絡協(xié)議,如IP、IPV6、IPX、Appletalk及藍牙等;支持路由、防火墻過濾等網(wǎng)絡設備功能;并提供標準的BSDsocket編程接口。Linux上有大量網(wǎng)絡應用,所有常用的基于IP的應用在Linux世界里都可以以GPL方式獲得。Linux的內(nèi)核網(wǎng)絡代碼和硬件體系無關(guān)。
6)資源管理
Linux中除了CPU和內(nèi)存,其他資源都是用驅(qū)動程序的形式加以管理的,因此,其內(nèi)核代碼的絕大部分是各種驅(qū)動程序,并且隨著系統(tǒng)支持的硬件的增加,代碼增加量最大的也是驅(qū)動程序。
2.內(nèi)核源碼結(jié)構(gòu)
Linux的內(nèi)核源碼結(jié)構(gòu)類似于抽象結(jié)構(gòu),大體分為進程管理、內(nèi)存管理、文件系統(tǒng)、驅(qū)動程序和網(wǎng)絡5個部分。這種對應性是因為抽象結(jié)構(gòu)來源于具體結(jié)構(gòu),它很接近源代碼的目錄結(jié)構(gòu)。但是,這種劃分沒有嚴格依照源代碼的目錄結(jié)構(gòu),且與各子系統(tǒng)的分組也不完全匹配。下面以Linux2.6.14為例介紹Linux的內(nèi)核源碼結(jié)構(gòu)。
Linux2.6.14內(nèi)核源碼有440MB之多,其目錄組成如圖6.2所示(這里假設Linux2.6.14內(nèi)核代碼的存放位置為/usr/src/linux-2.6.14)。
圖6.2Linux2.6.14內(nèi)核文件結(jié)構(gòu)圖6.2中各目錄的意義和作用如下:
(1)?arch目錄。arch目錄包括所有與體系結(jié)構(gòu)相關(guān)的核心代碼。它包含24個子目錄,每一個子目錄都代表一種體系,如ARM就是關(guān)于ARM及與之相兼容體系結(jié)構(gòu)的子目錄。對于任何平臺,arch目錄必須包括以下子目錄:
●boot:啟動內(nèi)核所使用的部分或全部平臺特有的代碼。
●
kernel:存放支持體系結(jié)構(gòu)特有的(如信號處理和AMP)特征的實現(xiàn)。
●
lib:存放高速的體系結(jié)構(gòu)特有的(如strlen和memcpy)通用函數(shù)的實現(xiàn)。
●
mm:存放體系結(jié)構(gòu)特有的內(nèi)存管理程序的實現(xiàn)。
●
math-emu:模擬FPU的代碼。
(2)?include目錄。include目錄包括編譯核心所需要的大部分頭文件。與平臺無關(guān)的頭文件在include/linux子目錄下;與平臺相關(guān)的頭文件放在include目錄下文件名以asm開頭的子目錄中。例如,與i386相關(guān)的頭文件放在include/asm-i386子目錄下。
(3)?init目錄。init目錄包含核心的初始化代碼(不是系統(tǒng)的引導代碼),包含main.c和version.c兩個文件,是研究核心如何工作的一個比較好的起點。
(4)?mm目錄。mm目錄包括所有獨立于CPU體系結(jié)構(gòu)的內(nèi)存管理代碼,如頁式存儲管理內(nèi)存的分配和釋放等(與體系結(jié)構(gòu)相關(guān)的內(nèi)存管理代碼位于arch/*/mm/,如arch/i386/mm/Fault.c)。
(5)?kernel目錄。kernel目錄為系統(tǒng)主要的核心代碼,該目錄下的文件包含了大多數(shù)Linux系統(tǒng)的內(nèi)存函數(shù),其中最重要的文件當屬sched.c。
(6)?drivers目錄。drivers目錄放置系統(tǒng)所有的設備驅(qū)動程序,每種驅(qū)動程序又各占一個子目錄,如/block下為塊設備驅(qū)動程序。
(7)?lib目錄。lib目錄放置核心的庫代碼及一些與平臺無關(guān)的通用函數(shù),如strlen和memcpy等函數(shù)。
(8)?net目錄。net目錄是系統(tǒng)的網(wǎng)絡部分代碼,其中每個子目錄對應網(wǎng)絡的一個方面。
(9)?ipc目錄。ipc目錄包含核心的進程間通信的代碼,包括util.c、sem.c和msg.c等。
(10)?fs目錄。fs目錄包括所有的文件系統(tǒng)代碼和各種類型的文件操作代碼,它的每一個子目錄都支持一個文件系統(tǒng),如fat和ext2。
(11)?scripts目錄。scripts目錄包含用于對核心進行配置的腳本文件。6.1.3嵌入式Linux的文件系統(tǒng)
1)嵌入式Linux文件系統(tǒng)原理
Linux下的文件系統(tǒng)主要可分為三個層次:一是上層用戶空間的應用程序?qū)ξ募到y(tǒng)的系統(tǒng)調(diào)用;二是虛擬文件系統(tǒng)VFS(VirtualFilesystemSwitch);三是掛載到VFS中的各種實際文件系統(tǒng)。嵌入式Linux系統(tǒng)中文件系統(tǒng)的體系架構(gòu)如圖6.3所示。圖6.3嵌入式Linux文件系統(tǒng)體系架構(gòu)圖6.3嵌入式Linux文件系統(tǒng)體系架構(gòu)
用戶空間包含一些應用程序(如文件系統(tǒng)的使用者)和GNUC庫(glibc),用來為文件系統(tǒng)調(diào)用(打開,讀取,寫和關(guān)閉)用戶接口。系統(tǒng)調(diào)用接口的作用就像是交換器,它將系統(tǒng)調(diào)用從用戶空間發(fā)送到內(nèi)核空間中的適當端點。系統(tǒng)調(diào)用實際上是通過調(diào)用內(nèi)核虛擬文件系統(tǒng)提供的統(tǒng)一接口來完成對各種設備的使用。
VFS(虛擬文件系統(tǒng))就是把各種具體的文件系統(tǒng)的公共部分抽取出來,形成一個抽象層,是系統(tǒng)內(nèi)核的一部分。它位于用戶程序和具體的文件系統(tǒng)之間。它為用戶程序提供了標準的文件系統(tǒng)調(diào)用接口,對具體的文件系統(tǒng),它通過一系列的系統(tǒng)公用的函數(shù)指針來實際調(diào)用具體的文件系統(tǒng)函數(shù),完成實際的有差異的操作。任何使用文件系統(tǒng)的程序必須經(jīng)過這層接口來使用它。通過這樣的方式,VFS就對用戶屏蔽了底層文件系統(tǒng)的實現(xiàn)細節(jié)和差異。虛擬文件系統(tǒng)提供了很好的通用接口,使系統(tǒng)屏蔽了不同文件系統(tǒng)對于應用程序的差異。各種具體的操作由具體的文件系統(tǒng)按照各自的方式自己實現(xiàn),如Yaffs文件系統(tǒng)、JFFS等文件系統(tǒng)都有自己的實現(xiàn)方式,但這些文件系統(tǒng)都導出一組通用接口,供VFS使用。這種想法類似于面向?qū)ο笾械亩鄳B(tài):系統(tǒng)將不同的文件系統(tǒng)封存起來,向用戶提供統(tǒng)一的接口。相同功能的函數(shù)被不同的文件系統(tǒng)重載,完成各自需要的操作。這使得添加新的文件系統(tǒng)也很容易,提高了Linux系統(tǒng)的可擴展性和兼容性。虛擬文件系統(tǒng)的使用體現(xiàn)了Linux文件系統(tǒng)的一大特點,即支持各種不同的文件系統(tǒng)。目前已經(jīng)穩(wěn)定支持的文件系統(tǒng)包括ext、ext2、ext3、vfat、iso9660、proc、NFS、JFFS、JFFS2、SMB和ReisterFS等。
2)主要嵌入式文件系統(tǒng)介紹
嵌入式文件系統(tǒng)和基本的Linux文件系統(tǒng)原理是一樣的,只是嵌入式文件系統(tǒng)針對嵌入式應用加入了一些特別的處理。由于Flash存儲介質(zhì)的讀寫特點,傳統(tǒng)的Linux文件系統(tǒng)已經(jīng)不適合應用在嵌入式系統(tǒng)中,如ext2文件系統(tǒng)是為像IDE那樣的塊設備設計的,這些設備的邏輯塊是512KB、1024KB等大小,沒有提供很好的扇區(qū)擦寫支持,不支持損耗平衡,沒有掉電保護,也沒有特別完美的扇區(qū)管理,這不太適合于因設備類型而劃分扇區(qū)大小的內(nèi)存設備?;谶@樣的原因,產(chǎn)生了很多專為Flash設備而設計的文件系統(tǒng),常見的專用于閃存設備的文件系統(tǒng)如下:
(1)?Romfs。傳統(tǒng)型的Romfs文件系統(tǒng)是最常用的一種文件系統(tǒng),它是一種簡單的、緊湊的、只讀的文件系統(tǒng),不支持動態(tài)擦寫保存。它按順序存放所有的文件數(shù)據(jù),所以這種文件系統(tǒng)格式支持應用程序以XIP方式運行,在系統(tǒng)運行時,可以獲得可觀的RAM節(jié)省空間。μCLinux系統(tǒng)通常采用Romfs文件系統(tǒng)。
(2)?Cramfs。Cramfs是Linux的創(chuàng)始人LinuxTorvalds開發(fā)的一種可壓縮只讀文件系統(tǒng)。在Cramfs文件系統(tǒng)中,每一頁被單獨壓縮,可以隨機訪問,其壓縮比高達2∶1,為嵌入式系統(tǒng)節(jié)省了大量的Flash存儲空間。Cramfs文件系統(tǒng)以壓縮方式存儲,在運行時解壓縮,所以不支持應用程序以XIP方式運行,所有的應用程序都要求被復制到RAM中運行,但這并不代表它比Ramfs需求的RAM空間要大,因為Cramfs采用分頁壓縮的方式存放檔案,在讀取檔案時,不會耗用過多的內(nèi)存空間,只會針對目前實際讀取的部分分配內(nèi)存,對尚沒有讀取的部分不分配內(nèi)存空間,當讀取的文件不在內(nèi)存中時,Cramfs文件系統(tǒng)自動計算壓縮后的資料所存的位置,再即時解壓縮到RAM中。另外,它的速度快,效率高,其只讀的特點有利于保護文件系統(tǒng)免受破壞,提高了系統(tǒng)的可靠性。但是它的只讀屬性同時又是它的一大缺陷,使得用戶無法對其內(nèi)容進行擴充。Cramfs鏡像文件通常是放在Flash中,但是也能放在別的文件系統(tǒng)里,使用loopback設備可以把它安裝到別的文件系統(tǒng)里。使用mkCramfs工具可以創(chuàng)建Cramfs鏡像文件。
(3)?Ramfs/Tmpfs。Ramfs也是LinuxTorvalds開發(fā)的,Ramfs文件系統(tǒng)把所有的文件都放在RAM里運行,通常用來存儲一些臨時性或經(jīng)常要修改的數(shù)據(jù)。相對于ramdisk來說,Ramfs的大小可以隨著所含文件內(nèi)容的大小變化,不像ramdisk的大小是固定的。Tmpfs是基于內(nèi)存的文件系統(tǒng),因為Tmpfs駐留在RAM中,所以寫/讀操作發(fā)生在RAM中。Tmpfs文件系統(tǒng)大小可隨所含文件內(nèi)容的大小變化,使其能夠最理想地使用內(nèi)存。Tmpfs駐留在RAM中,所以讀和寫幾乎都是瞬時的。Tmpfs的一個缺點是當系統(tǒng)重新引導時會丟失所有數(shù)據(jù)。
(4)?JFFS2。JFFS2是Redhat公司基于JFFS開發(fā)的閃存文件系統(tǒng),最初是針對Redhat公司的嵌入式產(chǎn)品eCos開發(fā)的嵌入式文件系統(tǒng),所以JFFS2也可以用在Linux和μCLinux中。JFFS文件系統(tǒng)最早是由瑞典AxisCommunications公司基于Linux2.0的內(nèi)核為嵌入式系統(tǒng)開發(fā)的文件系統(tǒng)。JFFS2是一個可讀寫、可壓縮的日志型文件系統(tǒng),并提供了崩潰/掉電安全保護,克服了JFFS的一些缺點,使用了基于哈希表的日志節(jié)點結(jié)構(gòu),大大加快了對節(jié)點的操作速度,支持數(shù)據(jù)壓縮,提供了“寫平衡”支持,支持多種節(jié)點類型,提高了對閃存的利用率,降低了內(nèi)存的消耗。這些特點使JFFS2文件系統(tǒng)成為目前Flash設備上最流行的文件系統(tǒng)格式,它的缺點是當文件系統(tǒng)已滿或接近滿時,JFFS2運行會變慢,這主要是因為碎片收集的問題。
(5)?Yaffs。Yaffs/Yaffs2是一種JFFSx類似的閃存文件系統(tǒng),它是專為嵌入式系統(tǒng)使用Nand型閃存而設計的一種日志型文件。與JFFS2相比,它減少一些功能,所以速度更快,而且內(nèi)存的占用比更小。此外,Yaffs自帶Nand芯片的驅(qū)動,并且為嵌入式系統(tǒng)提供了直接訪問文件系統(tǒng)的API,用戶可以不使用Linux系統(tǒng)中的MTD與VFS,直接對文件系統(tǒng)操作。Yaffs2支持大頁面的Nand設備,并且對大頁面的Nand設備做了優(yōu)化。Yaffs2在閃存上表現(xiàn)并不穩(wěn)定,更適合Nor閃存,Yaffs是更好的選擇。
在具體的嵌入式系統(tǒng)設計中,可根據(jù)不同目錄存放的不同內(nèi)容,以及存放的文件屬性確定使用何種文件系統(tǒng)。6.1.4嵌入式Linux的開發(fā)步驟
嵌入式系統(tǒng)通常為一個資源受限的系統(tǒng)。直接在嵌入式系統(tǒng)的硬件平臺上編寫軟件比較困難,有時甚至是不可能的。目前,一般采用的辦法是:先在通用計算機上編寫程序;然后,通過交叉編譯生成目標平臺上可運行的二進制代碼格式;最后下載到目標平臺上的特定位置上運行。對于使用Linux操作系統(tǒng)進行嵌入式開發(fā)來說,一般步驟如下:
(1)建立嵌入式Linux交叉開發(fā)環(huán)境。交叉開發(fā)環(huán)境是指編譯、鏈接和調(diào)試嵌入式應用軟件的環(huán)境。它與運行嵌入式應用軟件的環(huán)境有所不同,常采用宿主機/目標機模式。
目前,常用的交叉開發(fā)環(huán)境主要有開放和商業(yè)兩種類型。開放的交叉開發(fā)環(huán)境的典型代表是GNU工具鏈,目前已經(jīng)能夠支持x86、ARM、MIPS、PowerPC等多種處理器。商業(yè)的交叉開發(fā)環(huán)境主要有MetrowerksCodeWarrior、ARMSoftwareDevelopmentToolkit、SDSCrosscomplier、WindRiverTornado和MicrosoftEmbeddedVisualC等。
(2)交叉編譯和鏈接。在完成嵌入式軟件的編碼之后,就是進行編譯和鏈接,以生成可執(zhí)行代碼。由于開發(fā)過程大多是在Intel公司的x86系列CPU通用計算機上進行的,而且目標環(huán)境的處理器芯片卻大多為ARM、MIPS、PowerPC、DragonBall等系列的微處理器,這就要求在建立好的交叉開發(fā)環(huán)境中進行交叉編譯和鏈接。
例如,在基于ARM體系結(jié)構(gòu)的gcc交叉開發(fā)環(huán)境中,arm-linux-gcc是交叉編譯器,arm-linux-ld是交叉編譯器和鏈接器,如對于M68K體系結(jié)構(gòu)的gcc交叉開發(fā)環(huán)境而言,就對應于多種交叉編譯器和鏈接器。如果使用的是COFF格式的可執(zhí)行文件,那么在編譯Linux內(nèi)核時,需要使用m68k-coff-gcc和m68k-coff-ld,而在編譯應用程序時則需要使用m68k-coff-pic-gcc和m68k-coff-pic-ld。編寫好的嵌入式軟件經(jīng)過交叉編譯和交叉鏈接后,通常會生成用于調(diào)試的可執(zhí)行文件和用于固化的可執(zhí)行文件兩種類型。
(3)交叉調(diào)試。交叉調(diào)試就是通過在線仿真器對產(chǎn)品進行軟硬件調(diào)試。
硬件調(diào)試:如果不采用在線仿真器,可以讓CPU直接在其內(nèi)部實現(xiàn)調(diào)試功能,并通過在開發(fā)板上引用的調(diào)試端口,發(fā)送調(diào)試命令和接受調(diào)試信息,完成調(diào)試過程。目前,ARM公司提供的開發(fā)板上使用的則是JTAG調(diào)試端口。使用合適的軟件工具與這些調(diào)試端口進行連接,可以獲得與ICE類似的調(diào)試效果。
軟件調(diào)試:在嵌入式Linux系統(tǒng)中,Linux系統(tǒng)內(nèi)核調(diào)試,可以先在Linux內(nèi)核中設置一個調(diào)試樁(debugstub),用做調(diào)試過程中與宿主機之間的通信服務器。而后可在宿主機中通過調(diào)試器的串口與調(diào)試樁進行通信,并通過調(diào)試器控制目標機上Linux內(nèi)核的運行。嵌入式上層應用軟件的調(diào)試可以使用本地調(diào)試和遠程調(diào)試兩種方法。如果采用的是本地調(diào)試,首先要將所需的調(diào)試器移植到目標系統(tǒng)中,然后就可以直接在目標機上運行調(diào)試器來調(diào)試應用程序了;如果采用的是遠程調(diào)試,則需要移植一個調(diào)試服務器到目標系統(tǒng)中,并通過它與宿主機上的調(diào)試器共同完成應用程序的調(diào)試。在嵌入式Linux系統(tǒng)的開發(fā)中,遠程調(diào)試時目標機上使用的調(diào)試服務器通常是gdbserver,而宿主機上使用的調(diào)試器則是gdb。兩者相互配合共同完成調(diào)試過程。
(4)系統(tǒng)測試。在整個軟件系統(tǒng)編譯的過程中,嵌入式系統(tǒng)的硬件一般采用專門的測試儀器進行測試,而軟件則需要有相關(guān)的測試技術(shù)和測試工具的支持,并要采用特定的測試策略。測試技術(shù)指的是軟件測試的專門途徑,以及能夠更加有效地運用這些途徑的特定方法。在嵌入式軟件測試中,常常要在基于目標機的測試和基于宿主機的測試之間做出折中。基于目標機的測試需要消耗較多的時間和經(jīng)費,而基于宿主機的測試雖然代價較小,但畢竟是在仿真環(huán)境中進行的,因此難以完全反映軟件運行的實際情況。這兩種環(huán)境下的測試可以發(fā)現(xiàn)不同的軟件缺陷,關(guān)鍵是要對目標機環(huán)境和宿主機環(huán)境下的測試內(nèi)容進行合理取舍。嵌入式軟件測試中經(jīng)常用到的測試工具主要有內(nèi)存分析工具、性能分析工具、覆蓋分析工具和缺陷跟蹤工具等。 6.2嵌入式Linux的常用命令
在Linux操作系統(tǒng)中,所有事物都被當做文件來處理:硬件設備(包括鍵盤和終端)、目錄、命令和文件。不論是什么版本的Linux,它們的命令都是通用的,大多數(shù)的Linux的命令格式為:command[option][sourcefiles(s)][targetfile]。Linux的命令是區(qū)分大小的。圖6.4是Redhat-Linux的終端操作示意圖。圖6.4Redhat-Linux的終端操作示意圖6.2.1登錄與退出命令
1.登錄系統(tǒng)
要登錄Linux,必須輸入用戶的賬號。在系統(tǒng)安裝過程中可以創(chuàng)建以下兩種賬號:
root:超級用戶賬號(系統(tǒng)管理員),用這個賬號可以在系統(tǒng)中做任何事情。
普通用戶:這個賬號供普通用戶使用,只能進行有限的操作。用戶登錄分兩步:①輸入用戶的登錄名。系統(tǒng)根據(jù)該登錄名識別用戶。②輸入用戶的口令。該口令是用戶自己設置的一個字符串。
當用戶正確地輸入用戶名和口令后,就能合法地進入系統(tǒng)。屏幕顯示:[root@localhost/root]#,這時就可以對系統(tǒng)進行各種各樣的操作了。
注意:超級用戶的提示符是“#”,其他用戶的提示符是“$”。
2.修改口令
為了更好地保護用戶賬號的安全,Linux允許用戶隨時修改自己的口令。修改口令的命令是Password。輸入Password命令后,將提示用戶輸入舊口令和新口令,之后還要求用戶再次確認新口令。如果用戶忘記了口令,可以向系統(tǒng)管理員申請為自己重新設置。
3.虛擬控制臺
Linux是一個真正的多用戶操作系統(tǒng),可以同時接受多個用戶登錄。Linux允許一個用戶進行多次登錄,這是因為Linux和UNIX一樣,提供了虛擬控制臺的訪問方式,允許用戶在同一時間從控制臺進行多次登錄。
虛擬控制臺的選擇是可以通過按Alt鍵和一個功能鍵來實現(xiàn)的,通常使用功能鍵F1~F6。例如,用戶登錄后,按下Alt+F2鍵就可以看到“Login”提示符,說明用戶看到了第二個虛擬控制臺,再次按Alt+F1鍵,就可以回到第一個虛擬臺。
新安裝的Linux系統(tǒng)默認允許用戶使用Alt+F6鍵來訪問前六個虛擬控制臺。虛擬控制臺可以使用戶同時在多個控制臺上工作,真正體現(xiàn)Linux系統(tǒng)多用戶的特性,用戶可以在某一虛擬臺上進行的工作尚未結(jié)束時,切換到另一虛擬控制臺開始另一項工作。
4.退出系統(tǒng)
無論超級用戶還是普通用戶,需要退出系統(tǒng)時,應在Shell提示符下鍵入exit命令。6.2.2文件操作命令
1.?CP命令
功能:將給出的文件或目錄復制到另一個文件或目錄下。
語法:cp[選項]源文件或目錄目標文件或目錄。
說明:該命令把指定的源文件復制到目標文件或把多個源文件復制到目標目錄中。
各選項的含義:
?-a:該選項通常在拷貝目錄時使用。它保留鏈接、文件屬性,并遞歸地拷貝目錄,其作用相當于dpR選項的組合。
?-d:拷貝時保留鏈接。
?-f:刪除已經(jīng)存在的目標文件而不提示。
-i:和f選項相反,在覆蓋目標文件之前將給出提示要求用戶確認,回答y時目標文件將被覆蓋,是交互式拷貝。
-p:此時cp除復制源文件的內(nèi)容外,還將把其修改時間和訪問權(quán)限也復制到新文件中。
-r:若給出的源文件是目錄文件,此時cp將遞歸復制該目錄下的所有子目錄和文件。此時目標文件必須為一個目錄名。
?-l:不復制,只是鏈接文件。舉例:[stul@ghoststul]$cp/etc/fstab~/fstab1,執(zhí)行該命令后,將把/etc目錄下的文件fstab復制到用戶stul的個人主目錄/home/stul下,復制后得文件名為fstab1。
注意:為防止用戶在不經(jīng)意的情況下用cp命令破壞另一個文件,如用戶指定的目標文件名已存在,用cp命令復制文件后,這個文件就會被源新文件覆蓋。建議使用cp命令復制文件時,最好使用i選項。
2.?mv命令
功能:為文件或目錄改名,或?qū)⑽募梢粋€目錄移入另一個目錄中。
語法:mv[選項]源文件或目錄目標文件或目錄。
說明:根據(jù)mv命令中第二個參數(shù)類型的不同(是目標文件還是目標目錄),mv命令將文件重命名或?qū)⑵湟浦烈粋€新的目錄中。當?shù)诙€參數(shù)類型是文件時,mv命令完成文件重命名,此時,源文件只能有一個(也可以使源目錄名),它將所給出的源文件或目錄重命名為給定的目標文件名。當?shù)诙€參數(shù)是已存在的目錄名稱時,源文件或目錄參數(shù)可以有多個,mv命令將多個參數(shù)指定的源文件均移至目標目錄中。在跨文件系統(tǒng)移動文件時,mv先復制,再將原有文件刪除,而鏈至該文件的鏈接也將丟失。各選項的含義:
-i:交互方式操作。如果mv操作將導致對已存在的目標文件的覆蓋,此時系統(tǒng)詢問是否重寫,要求用戶回答y或n,這樣可以避免誤覆蓋文件。
-f:禁止交互操作。在mv操作要覆蓋某已經(jīng)有的目標文件時不給出任何提示,指定此選項后,i選項將不再起任何作用。
注意:為防止用戶mv命令破壞另一個文件,使用命令移動文件時最好使用i選項。
3.?rm命令
功能:刪除一個目錄中的一個或多個文件或目錄,它也可以將某個目錄及其下的所有文件子目錄均刪除。對于鏈接文件,只是斷開了鏈接,原文件保持不變。
語法:rm[選項]文件...
如果沒有使用-r選項,則rm不會刪除目錄。
各選項的含義:
-f:忽略不存在的文件,從不給出提示。
-r:提示rm將參數(shù)中列出的全部目錄和子目錄均遞歸刪除。
-i:進行交互式刪除。6.2.3目錄操作命令
1.?mkdir命令
功能:創(chuàng)建一個目錄。
語法:mkdir[選項]dir-name
說明:創(chuàng)建由dir-name命令的目錄。要求創(chuàng)建目錄的用戶在當前目錄中(dir-name的父目錄中)具有寫權(quán)限,并且dir-name不能是當前目錄中已有的目錄或文件名稱。
各選項的含義:
-m:對新建目錄設置存取權(quán)限,也可以用chmod命令設置。
-p:可以是一個路徑名稱。此時若路徑中的某些目錄不存在,加上此選項后,系統(tǒng)將自動建立好那些不存在的目錄,即一次可以建立多個目錄。
2.?rmdir命令
功能:刪除空目錄。
語法:rmdir[選項]dir-name
說明:dir-name表示目錄名。該命令從一個目錄中刪除一個或多個子目錄項。需要特別注意的是,一個目錄被刪除之前必須是空的。
各選項的含義:
-p:遞歸刪除目錄dirname,當子目錄刪除后其父目錄為空時,也一同被刪除。如果整個路徑被刪除或者由于某種原因保留部分路徑,則系統(tǒng)在標準輸出上顯示相應的信息。
3.?cd命令
功能:改變工作目錄。
語法:cd[directory]
說明:該命令將當前目錄改變至directory所指定的目錄。若沒有指定directory,則回到用戶的主目錄。為了改變到指定目錄,用戶必須擁有對指定目錄的執(zhí)行和讀權(quán)限。該命令可以通配符。
注意:在Linux中,用“/”代表根目錄,用“..”代表上級的目錄,用“-”代表用戶的個人主目錄,用“.”代表當前目錄。例如:[root@ghostssh]#cd..執(zhí)行該命令后,將從用戶當前目錄進入/etc目錄。
4.?pwd命令
功能:顯示整個路徑名。
語法:pwd。
說明:在Linux層次目錄結(jié)構(gòu)中,沒有提示符來告知用戶目前處于哪一個目錄中,使用pwd命令可顯示出當前工作目錄的絕對路徑。
5.?ls命令
功能:列出目錄的內(nèi)容。
語法:ls[選項][目錄或是文件]
說明:ls是英文單詞list的簡寫。對于每個目錄,ls命令將列出其中的所有子目錄與文件。對于每個文件,ls將輸出其文件名以及所要求的其他信息。默認情況下,輸出條目按字母順序排序。當未給出目錄名或者是文件名時,就顯示當前目錄的信息。各選項的含義:
-a:顯示指定目錄下所有子目錄與文件,包括隱藏文件。
-A:顯示指定目錄下所有子目錄與文件,包括隱藏文件。但不列出“.”“..”。
-b:對文件名中不可輸出的字符用反斜杠加字符編號的形式列出。
-c:按文件的修改時間排序。
-C:分成多列顯示各項。6.2.4文本操作命令
1.sort命令
功能:對文件中的各行進行排序。該命令逐行對文件中的內(nèi)容進行排序,如果兩行的首字符相同,該命令將繼續(xù)比較這兩行的下一字符,如果還相同,繼續(xù)進行比較。
語法:sort[選項]文件
說明:sort命令對指定文件中所有的行進行排序,將結(jié)果顯示在標準輸出上。如不指定輸入文件或使用“-”,則表示排序內(nèi)容來自標準輸入。
sort命令根據(jù)從輸入行抽取的一個或多個關(guān)鍵字進行比較。排序關(guān)鍵字定義了用來排序的最小的字符序列。缺省情況下以整行為關(guān)鍵字按ASCII字符順序進行排序。改變?nèi)笔≡O置的選項主要有:
-m:若給定文件已排好序,合并文件。
-c:檢查給定文件是否已排好序,如果他們沒有排好序,則打印一個出錯信息,并以狀態(tài)1退出。
-u:對排序后認為相同的行只留其中一行。
-o:輸出文件將排序輸出寫到輸出文件中而不是標準輸出,如果輸出文件是輸入文件之一,sort先將該文件的內(nèi)容寫入一個臨時文件,然后再排序和寫輸出結(jié)果。改變?nèi)笔∨判蛞?guī)則的選項主要有:
-d:按字典順序排序,比較時僅字母、數(shù)字、空格和制表符有意義。
-f:將小寫字母與大寫字母同等對待。
-I:忽略非打印字符。
-M:作為月份比較:“JAN”<“FEB”。
-r:按逆序輸出排序結(jié)果。
+pos1-pos2:指定一個或幾個字段作為排序關(guān)鍵字,字段位置從pos1開始,到pos2為止(包括pos1,不包括pos2)。如不指定pos2,則關(guān)鍵字為從pos1到行尾。字段和字符的位置從0開始。
-b;在每行中尋找排序關(guān)鍵字時忽略前導的空白(空格和制表符)。
-t:separator:指定字符separator作為字段分隔符。
2.uniq命令
功能:文件經(jīng)過處理后,在其輸出文件中可能會出現(xiàn)重復的行。這時,可以用uniq命令將這些重復行從輸出文件中刪除,只留每條記錄的唯一樣本。
語法:uniq[選項]文件
說明:該命令讀取輸入文件,并比較相鄰的行。行比較根據(jù)所用字符集的排序序列進行,正常情況下,第二個及以后更多個重復行將被刪除。該命令將執(zhí)行結(jié)果寫到輸出文件中。輸入文件和輸出文件必須不同。如果輸入文件用“-”表示,則從標準輸入讀取。
各選項含義:
-c:顯示輸出中,每行行首加上本行在文件中出現(xiàn)的次數(shù)。它可取代-u和-d選項。
-d:只顯示重復行。
-u:只顯示文件中不重復的各行。
-n:前n個字段與每個字段前的空白一起被忽略。一個字段是一個非空格、非制表符的字符串,彼此由制表符和空格隔開(字段從0開始編號)。
+n:前n個字符被忽略,之前的字符被跳過(字符從0開始編號)。
-fn:與-n相同,這里n是字段數(shù)。
sn:與+n相同,這里n是字符數(shù)。6.2.5壓縮與備份命令
1.tar命令
功能:tar可以為文件和目錄創(chuàng)建檔案。用戶可以為某一特定文件創(chuàng)建檔案(備份文件),也可以在檔案中改變文件,或向檔案中加入新的文件。tar命令可以把一大堆的文件和目錄全部打包成一個文件。
語法:tar[主選項+輔選項]文件或者目錄
說明:使用該命令時,主選項必須有,它告訴tar要做什么事情,輔選項可以選用。主選項的含義:
-c:創(chuàng)建新的檔案文件。如果用戶想備份一個目錄或一些文件,就必須選擇該選項。
-r:把要存檔的文件追加到檔案文件的末尾。
-t:列出檔案文件的內(nèi)容,查看已經(jīng)備份了哪些文件。
-u:更新文件,即用新增的文件取代原備份的文件,如果在備份文件中找不到要更新的文件,則把它追加到備份文件的最后。
-x:從檔案文件中釋放文件。
輔助選項的含義:
-b:為磁帶機設定。其后跟一數(shù)字,用來說明區(qū)塊的大小,系統(tǒng)預設值為20。
-f:使用檔案文件或設備,該選項通常必選。
-k:保存已經(jīng)存在的文件。例如,把某個文件還原,在還原的過程中,遇到相同的文件不會進行覆蓋。
-m:在還原文件時,把所有的文件的修改時間設定為現(xiàn)在。
-M:創(chuàng)建多卷的檔案文件,以便在幾個磁盤中存放。
-v:詳細報告tar處理的文件信息,如無該選項,tar不報告文件信息。
-w:每一步都要求確認。
-z:用gzip來壓縮/解壓縮文件,加上該選項后可以將檔案文件進行壓縮,但是還原時也一定要使用該選項進行解壓縮。舉例:
#tarcvfdata.tar*—>將所有文件打包成data.tar,擴展名.tar需自行加上
#tarcvzfdata.tar.gz*—>將所有文件打包成data.tar,再用gzip壓縮
#tartvfdata.tar—>查看文件data.tar中包含那些文件
#tarxvfdata.ta—>解壓data.tar文件
#tarzxvfdata.tar.gz—>將所有文件打包成data.tar,擴展名.tar需自行加上
2.gzip命令
功能:對文件進行壓縮和解壓。
語法:gzip[選項]壓縮(解壓縮)的文件名
各選項的含義:
-c:將輸出寫到標準輸出上,并保留原有文件。
-d:將壓縮文件解壓。
-l:對每個壓縮文件,顯示的字段為壓縮文件的大??;未壓縮文件的大?。粔嚎s比;未壓縮文件的名字。
-r:遞歸式地查找指定目錄并壓縮其中的所有文件或者是解壓縮。
-t:測試,檢查壓縮文件是否完整。
-v:對每一個壓縮文件和解壓的文件,顯示文件名和壓縮比。
-num:用指定的數(shù)字num調(diào)整壓縮的速度,1或fast表示最快的壓縮方法(低壓縮比),9或best表示最慢的壓縮方法(高壓縮比)。系統(tǒng)缺省值為6。
3.unzip命令
功能:用Windows壓縮軟件Winzip壓縮的文件在Linux系統(tǒng)中可以用unzip命令展開。該命令用于將擴展名為.zip的壓縮文件解壓縮。
語法:unzip[選項]壓縮文件名.zip
各選項的含義:
-x:文件列表(解壓縮文件),但不包括指定的file文件。
-v:查看壓縮文件目錄,但不解壓縮。
-t:測試文件有無損壞,但不解壓縮。
-d:目錄,把壓縮文件解到指定目錄下。
-z:只顯示壓縮文件的注解。
-n:不覆蓋已經(jīng)存在的文件。
-o:覆蓋已經(jīng)存在的文件且不要求用戶確認。
-j:不重建文檔的目錄結(jié)構(gòu),把所有文件解壓到同一目錄下。6.2.6用戶相關(guān)命令
1.passwd命令
功能:Linux系統(tǒng)中,用useradd命令增加用戶時,還需要用passwd命令為每一位新增加的用戶設置口令;用戶可以隨時用passwd命令改變自己的口令。
語法:passwd[用戶名]
說明:只有超級用戶可以用“passwd用戶名”命令修改其他用戶的口令,普通用戶只能用不帶參數(shù)的passwd命令修改自己的口令。使用方法如下:先輸入passwd<enter>;再在(current)UNIXpasswd:下輸入當前的口令;接著在newpassword:提示下輸入新的口令(在屏幕上看不到這個口令);最后系統(tǒng)提示再次輸入這個新口令,輸入正確后,新口令被加密并放入/etc/shdow文件。
設定口令的規(guī)則:至少有六位字符;大小寫字母、標點符號和數(shù)字混合。
超級用戶修改其他用戶(xxq)口令的過程如下:
#passwdroot
NewUNIXpassword
RetypenewUNIXpassword:
Passwd:allauthenticationtokensupdatedsuccessfully
#
2.su命令
功能:讓一個普通用戶擁有超級用戶或其他用戶的權(quán)限,或讓超級用戶以普通用戶的身份做一些事情。普通用戶使用該命令時,必須有超級用戶或其他用戶的口令。如要離開當前用戶的身份,可以輸入exit。
語法:su[選項][?][使用者賬號]
說明:若沒有指定使用者賬號,則系統(tǒng)預設值為超級用root。
各選項的含義:
-c:執(zhí)行一個命令后就結(jié)束。
-e:加了這個減號的目的是使環(huán)境變量和要轉(zhuǎn)換的用戶相同。
-m:保留環(huán)境變量不變。
Password:輸入超級用戶的密碼。6.2.7磁盤管理命令
1.df命令
功能:檢查文件系統(tǒng)的磁盤空間占用情況。用該命令可獲取硬盤被占用空間的信息。
語法:df[選項]
說明:df命令可顯示所有文件系統(tǒng)對i節(jié)點和磁盤塊的使用情況。
各選項的含義:
-a:顯示所有文件系統(tǒng)的磁盤使用情況。
-k:以k字節(jié)為單位顯示。
-i:顯示i節(jié)點信息,而不是磁盤塊。
-t:顯示各指定類型的文件系統(tǒng)的磁盤空間使用情況。
-x:列出不是某一指定類型文件系統(tǒng)的磁盤空間使用情況(與t選項相反)。
-T:顯示文件系統(tǒng)類型。
2.du命令
功能:統(tǒng)計目錄(或文件)所占磁盤空間的大小。
語法:du[選項][Names…]
說明:該命令逐級進入指定目錄的每一個子目錄并顯示該目錄占用文件系統(tǒng)數(shù)據(jù)塊(1024字節(jié))的情況。若沒有給出Names,則對當前目錄統(tǒng)計。各選項的含義:
-s:對每個Names參數(shù)只給出占用的數(shù)據(jù)塊總數(shù)。
-a:遞歸地顯示指定目錄中的各文件及子孫目錄中各文件占用的數(shù)據(jù)塊。
-b:以字節(jié)為單位列出磁盤空間的使用情況(系統(tǒng)缺省以k字節(jié)為單位)。
-k:以1024字節(jié)為單位列出磁盤空間的使用情況。
-c:最后再加上一個總計(系統(tǒng)缺省設置)。
-l:計算所有的文件大小,對硬鏈接文件,則計算多次。
-x:跳過在不同文件系統(tǒng)上的目錄不予統(tǒng)計。
3.dd命令
功能:把指定的輸入文件復制到指定的輸出文件中,可以在復制過程中進行格式轉(zhuǎn)換。
注意:應將硬盤上的寄存文件用rm命令刪除。系統(tǒng)默認用標準輸入文件和標準輸出文件。
語法:dd[選項]
各選項的含義:
?if=輸入文件(或設備名稱)。
?of=輸出文件(或設備名稱)。
?ibs=bytes:一次讀出bytes字節(jié),即讀入緩沖區(qū)字節(jié)數(shù)。
4.fdformat命令
功能:低級格式化軟盤。
語法:format
[-n]
device
其中,-n表示軟盤格式化后不作檢驗;device指定要進行格式化的設備。
說明:軟盤在使用前必須先做格式化操作,然后可以用tar、dd、cpio等命令存儲數(shù)據(jù),也可以在軟盤上建立可安裝的文件系統(tǒng)。6.2.8權(quán)限管理命令
在Linux系統(tǒng)中,每個文件和目錄都有訪問許可權(quán)限,用來確定誰可以通過何種方式對文件和目錄進行訪問和操作。
文件或目錄的訪問權(quán)限分為只讀、只寫和可執(zhí)行三種。以文件為例,只讀權(quán)限表示只允許讀其內(nèi)容,禁止對其做任何的更改操作;可執(zhí)行權(quán)限表示允許將該文件作為一個程序執(zhí)行。文件被創(chuàng)建時,文件所有者將自動擁有對該文件的讀、寫和可執(zhí)行權(quán)限,以便于對文件的閱讀和修改。用戶也可根據(jù)需要把訪問權(quán)限設置為需要的任何組合。
有三種不同類型的用戶可對文件或目錄進行訪問:文件所有者、同組用戶和其他用戶。所有者一般是文件的創(chuàng)建者,可以允許同組用戶有權(quán)訪問文件,還可以將文件的訪問權(quán)限賦予系統(tǒng)中的其他用戶。在這種情況下,系統(tǒng)中每一位用戶都能訪問該用戶擁有的文件或目錄。
每個文件或目錄的訪問權(quán)限都有三組,每組用三位表示,分別為文件屬主的讀、寫和執(zhí)行權(quán)限;與屬主同組的用戶的讀、寫和執(zhí)行權(quán)限;系統(tǒng)中其他用戶的讀、寫和執(zhí)行權(quán)限。當用ls-1命令顯示文件或目錄的詳細信息時,最左邊的一列為文件的訪問權(quán)限。例如:
$ls-1sobsrc.tgz
-rw-r--r--1rootroot483997Jul1517:31sobsrc.tgz橫線代表空許可,r代表只讀,w代表寫,x代表可執(zhí)行。
注意:這里有10個位置。第一個字符指定文件類型。通常,一個目錄也是一個文件。如果第一個字符是橫線,表示是一個非目錄的文件。如果是d,表示一個目錄。
例如:-rw-r--r--(對應:普通文件文件主組用戶其他用戶)表示文件sobsrc.tgz的訪問權(quán)限。其中,第一個橫線表示sobsrc.tgz是一個普通文件;其余表示sobsrc.tgz的屬主有讀寫權(quán)限;與sobsrc.tgz屬主同組的用戶只有讀權(quán)限;其他用戶也只有讀權(quán)限。
確定一個文件的訪問權(quán)限后,用戶可以利用Linux系統(tǒng)提供的chmod命令重新設定不同的訪問權(quán)限,或用chown命令更改某個文件或目錄的所有者,用chgrp命令更改某個文件或目錄的用戶組。
1.chmod命令
功能:用于改變文件或目錄的訪問權(quán)。該命令有兩種用法:一種是包含字母和操作符表達的文字設定法;另一種是包含數(shù)字的數(shù)字設定法。
1)文字設定法
語法:chmod[who][+|-|=][mode]文件名?各選項的含義:
who:操作對象,可以是u、g、o、a字母中的任意一個或它們的組合。其中,u表示“用戶(user)”,即文件或目錄的所有者;g表示“同組(group)用戶”,即與文件屬主有相同組ID的所有用戶;o表示“其他(others)用戶”;a表示“所有(all)用戶”,它是系統(tǒng)默認值。
操作符號的含義:+為添加某個權(quán)限;-為取消某個權(quán)限;=則為賦予給定權(quán)限并取消其他所有權(quán)限(如果有的話)。
mode:設置權(quán)限,可用以下字母的任意組合。r為可讀;w為可寫;x為可執(zhí)行;X為只有目標文件對某些用戶是可執(zhí)行的或該目標文件是目錄時才追加x屬性;s為在文件執(zhí)行時把進程的屬主或組ID設置為該文件的文件屬性。方式“u+s”設置文件的用戶ID位,“g+s”設置組ID位;t為保存程序的文本到交換設備上;u為與文件屬主擁有一樣的權(quán)限;g為與和文件屬主同組的用戶擁有一樣的權(quán)限;o為與其他用戶擁有一樣的權(quán)限。一個命令行中可給出多個權(quán)限方式,期間用逗號隔開。例如:chmodg+r,o+rexample該命令使同組和其他用戶對文件example有讀權(quán)限。
文件名:以空格分開的要改變權(quán)限的文件列表,支持通配符。
2)數(shù)字設定法
語法:chmod[mode]文件名?
說明:用數(shù)字表示屬性的含義。0表示沒有權(quán)限;1表示可執(zhí)行期限;2表示可寫權(quán)限;4表示可讀權(quán)限,然后將其相加。數(shù)字屬性的格式應該為3個從0到7的八進制數(shù),其順序是(u)(g)(o)。例如,如果想讓某個文件的屬主有“讀/寫”兩種權(quán)限,則為4(可讀)+(可寫)=6(讀/寫)。
2.chgrp命令
功能:改變文件或目錄所屬的組。
語法:chgrp[選項]groupfilename?
說明:group可以是用戶組ID,也可以是/ete/group文件中用戶組的組名。文件名是以空格分開的要改變屬組的文件列表,支持通配符。如果用戶不是該文件的屬主或超級用戶,則不能改變該文件組。
各選項的含義:
-R:遞歸式地改變指定目錄及其下的所有子目錄和文件的屬組。
3.chown命令
功能:更改某個文件或目錄的屬主和屬組。例如,root用戶把自己的一個文件復制給用戶xu,為了讓用戶xu能夠存取這個文件,root用戶應該把該文件的屬主設為xu,否則,用戶xu無法讀取這個文件。
語法:chown[選項]用戶或組文件
說明:chown將指定文件的擁有者改為指定的用戶或組。用戶可以是用戶名或用戶ID;組可以是組名或組ID。文件使用空格分開的、要改變權(quán)限的文件列表,支持通配符。各選項的含義:
-R:遞歸式地改變指定目錄及其下的所有子目錄和文件的擁有者。
-v:顯示chown命令所做的工作。6.2.9其他操作命令
1.echo命令
功能:在顯示器上顯示一段文字,以作為提示。
語法:echo[-n]字符串
說明:選項n表示輸出文字后不換行;字符串可以加引號,也可以不加引號。
用echo命令輸出加引號的字符串時,將字符串原樣輸出;輸出不加引號的字符串時,將字符串中的各個單詞作為字符串輸出,各字符串之間用一個空格分割。
2.cal命令
功能:顯示某年某月的日歷。
語法:cal[選項][月[年]]
各選項含義:
-j:顯示給定月中的每一天是一年中的第幾天(從1月1日算起)。
-y:顯示整年的日歷。
3.Date命令
功能:顯示和設置系統(tǒng)日期和時間。
語法:date[選項]顯示時間格式(以+開頭,后面接格式)
各選項的含義:
-ddatestr,--datedatestr:顯示由datestr描述的日期。
-sdatestr,--setdatestr:設置datestr描述的日期。
-u,--universal:顯示或設置通用時間。時間域:
%H:小時(00..23)。
%M:分(00..59)。
%p:顯示出AM或PM。
%r:時間(hh:mm:ssAM或PM),12小時制。
%S:秒(00..59)。
%T:時間(24小時制)(hh:mm:ss)。
%X:顯示時間的格式(%H:%M:%S)。
%c:日期和時間(MonNov814:12:46CST1999)。
%D:日期(mm/dd/yy)。
注意:只有超級用戶才有權(quán)限使用date命令設置時間,一般用戶只能用date命令顯示時間。
4.clear命令
功能:清除屏幕上的信息。清屏后,提示符移動到屏幕左上角。 6.3嵌入式Linux開發(fā)環(huán)境的構(gòu)建
6.3.1操作系統(tǒng)的安裝
建立嵌入式Linux開發(fā)環(huán)境,一般有三種辦法:一是在Windows系統(tǒng)下安裝虛擬機,再在虛擬機中安裝Liunux操作系統(tǒng);二是安裝基于PCWindows操作系統(tǒng)下的CYGWIN;三是直接安裝Liunux操作系統(tǒng)。
1.系統(tǒng)安裝程序的獲取
Linux系統(tǒng)是一個開源操作系統(tǒng),它有很多版本。本節(jié)采用的Linux是Fedora11.0版本,它是紅帽子Linux的最新升級版本。
RedhatLinux最新操作系統(tǒng)Fedora原版的安裝程序可以在很多網(wǎng)站上獲得,如紅聯(lián)()網(wǎng)站就提供下載連接,具體地址為/viewarticle
.php?ip=13067。
在這個頁面上,提供的鏡像文件大多為CD-ROM鏡像,只有面向64位CPU的鏡像文件中提供DVD類型的鏡像文件。用戶下載這些鏡像文件用WinRAR解壓后,可以用Nero等刻錄程序到光盤上。
2.對開發(fā)PC的性能要求
RedhatLinuxFedora11.0安裝后占用空間在2.4~5?GB之間,還要安裝ARM-Linux開發(fā)軟件,因此對開發(fā)計算機的硬盤空間要求較大。基本要求如下:
CPU:高于奔騰500MHz,推薦高于賽揚1.7GHz。
內(nèi)存:大于128MB,推薦使用256MB以上。
硬盤:大于10GB,推薦使用40GB以上。
3.?Liunux操作系統(tǒng)的安裝
Linux操作系統(tǒng)可以和Windows操作系統(tǒng)共存于PC中。當一個PC安裝這兩種操作系統(tǒng)時,一般先安裝Windows操作系統(tǒng),再安裝Linux系統(tǒng),兩系統(tǒng)互相不影響。在安裝前,首先要空出10GB以上的磁盤空間,并且不進行分區(qū)。
在已有的WindowsXP操作系統(tǒng)下安裝Linux系統(tǒng),既可從光盤安裝,又可由硬盤安裝。其中從光盤安裝簡單些。
4.Linux系統(tǒng)運行
系統(tǒng)安裝后,重新啟動計算機,會有一個Grub引導程序界面,默認情況下選擇用Linux啟動。若希望用Windows啟動,則在Grub啟動后5秒內(nèi)按任意鍵,然后選擇Other項,即可進入Windows啟動。
Linux啟動后,按提示輸入用戶名root和相應的密碼進入Linux系統(tǒng),從運行界面可看到Linux安裝成功。6.3.2開發(fā)環(huán)境的配置
系統(tǒng)安裝好之后,需要配置好開發(fā)環(huán)境才能與開發(fā)板進行通信。一般情況下,開發(fā)主機與開發(fā)板之間的通信端口有三種:串口、USB口和網(wǎng)口。用戶可根據(jù)自己開發(fā)時使用的端口相應地配置。這里介紹串口和網(wǎng)口的配置方法。
1.串口配置方法
Linux下配置串口的程序是Minicom,它類似于Windows中的“超級終端”。配置的過程如下:
1)運行Minicom
單擊系統(tǒng)菜單【應用程序】,選擇子菜單【附件】,打開【終端】程序,輸入minicom-s。此時,“終端”程序的顯示窗口列出Minicom的配置菜單。
2)配置參數(shù)
選擇Serialportsetup,進入串口配置選項;然后選擇A,設置SerialDevice為/dev/ttyS0,表示串口1(如果有多個串口可以根據(jù)自己具體的情況進行選擇,一般PC只有一個串口,就是COM1,即ttyS0);再選擇E,設置波特率為115200;最后選擇F,設置HardwareFlowControl模式No。完成后按【Enter】鍵,回退到上一層菜單。
3)保存
在Minicom的配置菜單中選擇Savesetupasdf1,保存剛才的設置即可。
2.網(wǎng)口配置方法
使用網(wǎng)口進行數(shù)據(jù)傳輸需要配置網(wǎng)口的傳輸協(xié)議,在Linux下用于網(wǎng)傳輸協(xié)議的主要有NFS和TFTP。
1)?NFS
NFS是由SUN公司發(fā)展的分散式文件系統(tǒng)。它可以讓用戶通過連接的網(wǎng)絡將其他電腦所共享的文件目錄映射到自己的系統(tǒng)下。
首先單擊系統(tǒng)菜單【應用程序】,選擇子菜單【附件】,打開【終端】程序,輸入setup進入設置程序,在按要求進行配置。
2)?TFTP
TFTP是一個傳輸文件的簡單協(xié)議,它基于UDP協(xié)議實現(xiàn),但有些TFTP協(xié)議也是基于其他傳輸協(xié)議完成。
因為TFTP是由超級守護進程xinetd運行的,所以首先要確認系統(tǒng)安裝了xinetd。如果沒有安裝,要到Re
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 活動策劃書培訓
- 洛鐵焊接工藝培訓
- 2026年公務員考試沖刺預測模擬題及答案
- 2026年電氣技術(shù)高級實踐高級電氣工程師晉級試題集
- 2026年金融投資基礎(chǔ)知識與實戰(zhàn)應用考試題庫
- 2026年生物科技公司科研崗位筆試題庫
- 2026年計算機軟件測試崗位筆試經(jīng)典題目集
- 2026年計算機編程語言與應用開發(fā)試題
- 2026年英語能力等級水平測試題目
- 2026年證券從業(yè)資格考試金融市場基礎(chǔ)知識測試
- 2026四川省引大濟岷水資源開發(fā)有限公司第一批次招聘27人備考題庫及完整答案詳解
- 2025-2026學年北京市昌平區(qū)高三(上期)期末考試英語試卷(含答案)
- 粉塵防爆教育培訓制度
- ISO14971培訓教學課件
- 企業(yè)安全生產(chǎn)標準化建設與實施手冊(標準版)
- 《中國養(yǎng)老金精算報告2025-2050》原文
- 2025年土地租賃居間服務合同
- 五個帶頭方面問題清單(二)
- 廣東省衡水金卷2025-2026學年高三上學期12月聯(lián)考物理試題(含答案)
- 扁鵲凹凸脈法課件
- 北京市2025北京市體育設施管理中心應屆畢業(yè)生招聘2人筆試歷年參考題庫典型考點附帶答案詳解(3卷合一)2套試卷
評論
0/150
提交評論