




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1第4章嵌入式linux的構建2嵌入式開發(fā)流程建立交叉編譯環(huán)境啟動代碼Bootloader的實現(xiàn)/移植kernel的配置/移植/編譯根文件系統(tǒng)Cramfs的實現(xiàn)33主要內容4.1嵌入式Bootloader技術4.2嵌入式根文件系統(tǒng)構建4.3Linux內核及啟動流程4.4基于ARM目標板的Linux系統(tǒng)及應用程序燒定4第4章嵌入式linux的構建-Bootloader4.1Bootloader簡介4.2常用Bootloader
的介紹4.3Bootloader
的燒寫和使用5第4章嵌入式linux的構建-BootloaderBootloader簡介常用Bootloader
的介紹Bootloader
的燒寫和使用64.1Bootloader簡介4.1.1Bootloader的概念 4.1.2Bootloader
的啟動4.1.3Bootloader
的種類 74.1.1Bootloader的概念引入:對于計算機系統(tǒng)來說,從開機上電到操作系統(tǒng)啟動需要一個引導過程。嵌入式Linux系統(tǒng)同樣離不開引導程序,這個引導程序就叫做BootLoader。對比:回憶一下PC的體系結構我們可以知道,PC機中的引導加載程序由BIOS(其本質就是一段固件程序)和位于硬盤MBR(MasterBootRecord,引導記錄)中的引導程序一起組成。BIOS在完成硬件檢測和資源分配后,將硬盤MBR中的引導程序讀到系統(tǒng)的RAM中,然后將控制權交給引導程序。引導程序的主要運行任務就是將內核映象從硬盤上讀到RAM中然后跳轉到內核的入口點去運行,也即開始啟動操作系統(tǒng)。84.1.1Bootloader的概念而在嵌入式系統(tǒng)中,通常并沒有像BIOS那樣的固件程序。因此整個系統(tǒng)的加載啟動任務就完全由BootLoader來完成.比如在一個基于ARM4TDMIcore的嵌入式系統(tǒng)中,系統(tǒng)在上電或復位時都從地址0x00000000開始執(zhí)行.而在這個地址處安排的通常就是系統(tǒng)的BootLoader程序。
94.1.1Bootloader的概念Bootloader的概念和功能BootLoader是一段匯編代碼,存放在MBR主引導記錄中,它的主要作用就是將操作系統(tǒng)啟動代碼讀入內存。從功能上看,Bootloader就是在操作系統(tǒng)內核或用戶應用程序運行之前運行的一段小程序。通過這段小程序可以初始化硬件設備、建立內存空間的映射圖,從而將系統(tǒng)的軟硬件環(huán)境帶到一個合適的狀態(tài),以便為最終調用操作系統(tǒng)內核或用戶應用程序準備好正確的環(huán)境。104.1.1Bootloader的概念每種CPU體系結構都有不同的BootLoader。有些BootLoader也支持多種體系結構的CPU,比如U-Boot就同時支持ARM體系結構和MIPS體系結構。除了依賴于CPU的體系結構外,BootLoader實際上也依賴于具體的嵌入式板級設備的配置。這也就是說,對于兩塊不同的嵌入式板而言,即使它們是基于同一種CPU而構建的,要想讓運行在一塊板子上的BootLoader程序也能運行在另一塊板子上,通常也都需要修改BootLoader的源程序。114.1.1Bootloader的概念Bootlaoder的不統(tǒng)一性/不通用性特別是在嵌入式領域,為嵌入式系統(tǒng)建立一個通用的BootLoader是很困難的。當然,我們可以歸納出一些通用的概念來,以便我們了解特定BootLoader的設計與實現(xiàn)。當前在嵌入式Linux系統(tǒng)中,有了一些流行和通用的Bootloader框架?,F(xiàn)實開發(fā)中,我們都是采用現(xiàn)有的BootLoader進行修改Vivi,blob,u-boot是最常見的,它們都是開源的Vivi是三星公司的,我們的實驗板子就是使用的它124.1.2Bootloader的啟動嵌入式Linux系統(tǒng)也是通過Bootloader引導啟動的。一上電,就要執(zhí)行Bootloader來初始化系統(tǒng)。系統(tǒng)加電或復位后,所有CPU都會從某個地址開始執(zhí)行,具體的地址值是由處理器設計決定的。比如,基于ARM4TDMIcore的CPU在復位時通常都從地址0x00000000取它的第一條指令。而基于ARM處理器構建的嵌入式系統(tǒng)通常都有某種類型的固態(tài)存儲設備(比如:ROM、EEPROM或FLASH等)被映射到這個預先安排的地址上。因此在系統(tǒng)加電后,CPU將首先執(zhí)行Bootloader程序。1313典型存儲空間分配結構bootloader啟動參數(shù)內核根文件系統(tǒng)144.1.2Bootloader的啟動主機和目標機之間一般通過串口建立連接,BootLoader軟件在執(zhí)行時通常會通過串口來進行I/O,比如:輸出打印信息到串口,從串口讀取用戶控制字符等。Bootloader多數(shù)是兩階段的啟動過程第一個啟動階段是和硬件平臺相關的,大都采用匯編程序編寫,以達到短小精悍的目的。第二個啟動階段是和硬件平臺無關的,大都采用C語言編寫,這樣可以實現(xiàn)復雜的功能,而且代碼會具有更好的可讀性和可移植性。154.1.2Bootloader的啟動大多數(shù)Bootloader都包含兩種不同的操作模式:“啟動加載”模式和“下載”模式。最終用戶的角度看,BootLoader的作用就是用來加載操作系統(tǒng)。16Bootloader-啟動舉例17Bootloader-啟動舉例18Bootloader-啟動舉例194.1.2Bootloader的啟動網絡啟動方式
20諸如u-boot的BootLoader本身集成網絡功能支持這種方式開發(fā)板不需要配置較大的存儲介質,跟無盤工作站有點類似。但是使用這種啟動方式之前,需要把BootLoader安裝到板上的EPROM或者Flash中。BootLoader通過以太網接口遠程下載Linux內核映象或者文件系統(tǒng)。
BootLoader下載文件一般都使用TFTP網絡協(xié)議,還可以通過DHCP的方式動態(tài)配置IP地址。
4.1.2Bootloader的啟動214.1.2Bootloader的啟動磁盤啟動方式傳統(tǒng)的Linux系統(tǒng)運行在臺式機或者服務器上,這些計算機一般都使用BIOS引導,并且使用磁盤作為存儲介質。Linux傳統(tǒng)上是通過Lilo(LinuxLoader)引導的,后來又出現(xiàn)了GNU的軟件Grub(GrandUnifiedBootloader)。這兩種Bootloader廣泛應用在X86的Linux系統(tǒng)上。在嵌入式系統(tǒng)領域應用的并不多。224.1.2Bootloader的啟動Flash啟動方式大多數(shù)嵌入式系統(tǒng)上都使用Flash存儲介質,NORFlash(線性Flash)使用最為普遍。Bootloader一般放在Flash的底端或者頂端,這需要根據(jù)處理器的復位向量來進行設置。可以配置成MTD設備來訪問Flash分區(qū)。
234.1.3Bootloader的種類嵌入式系統(tǒng)世界已經有各種各樣的Bootloader,種類劃分的方法也不是唯一的。一般可以按照它所支持處理器體系結構不同進行劃分。
具體參見表4.1嵌入式比較常見的Uboot,vivi和blobPC系統(tǒng)上是grub和lilo24Bootloader的種類BootloaderMonitor描述X86ARMPowerPCLilo否Linux磁盤引導程序是否否Grub否GNU引導的Lilo替代程序是否否Loadlin否從DOS引導Linux是否否ROLO否從ROM引導Linux而不需要BIOS是否否Etherboot否通過以太網卡啟動Linux引導程序是否否LinuxBIOS否完全替代BUIS的Linux引導程序是否否Blob否LART等硬件平臺的引導程序否是否U-Boot是通用引導程序是是是RedBoot是基于eCos的引導程序是是是25第4章嵌入式linux的構建4.1Bootloader簡介4.2常用Bootloader
的介紹4.3Bootloader
的燒寫和使用264.2常用Bootloader的介紹1、vivivivi是韓國Mizi公司開發(fā)的Bootloader,適用于ARM9處理器。2、RedBootRedBoot也稱作紅帽(RedHat)嵌入式調試引導程序,是一種用于嵌入式系統(tǒng)的獨立開放源代碼引導/裝載器。3、U-BootU-Boot(UniversalBootloader)是一款目前功能較為強大的開源Bootloader程序,它支持多種處理器平臺,包括ARM、MIPS等。274.2.2U-BootU-Boot支持的處理器構架包括PowerPC,ARM,MIPS,x86U-Boot的功能強大,涵蓋了絕大部分處理器構架,提供大量外設驅動,支持多個文件系統(tǒng),附帶調試、腳本和引導等工具
U-boot可配置性非常強
,它所支持的命令也可以通過配置來增減。U-boot的命令主要包括以下幾類:信息類命令、環(huán)境變量類命令、存儲器命令、Flash專用命令、載類命令、啟動類命令和Cache類命令,參見表4.228vivi簡介vivi是由韓國MIZI公司開發(fā)的專門用于SAMSUNGARM架構的一種Bootloader
。它同樣支持啟動加載模式和下載工作模式。在下載模式下,vivi為用戶提供一個命令行人機接口,通過這個人機接口可以使用vivi提供的一些命令。29vivi簡介如果嵌入式系統(tǒng)沒有鍵盤和顯示,那么可以利用vivi中的串口,將其和宿主機連接起來,利用宿主機中的串口軟件(如windows中的超級終端或者Linux中的minicom)來控制。30vivi的啟動過程分析Bootloader的啟動過程分兩個階段-stage1和stage2。依賴CPU體系結構的代碼通常放在stage1中,而且通常用匯編語言實現(xiàn)。stage2中的代碼通常用C語言實現(xiàn),這樣可以實現(xiàn)更復雜的功能,而且代碼會具有更好的可讀性和可移植性。Bootloader技術內幕31Bootloader的stage1通常包括以下步驟:
1、硬件設備初始化
2、為加載stage2準備RAM空間
3、復制stage2到RAM空間
4、設置好堆棧
5、跳轉到stage2的C入口點vivi的啟動過程分析32Bootloader的stage2通常包括以下步驟:
1、初始化本階段要用到的硬件設備
2、檢測系統(tǒng)內存映射
3、將kernel映像和根文件系統(tǒng)映像從
Flash上讀到RAM空間
4、為內核設置啟動參數(shù)
5、調用內核vivi的啟動過程分析3333把內核(kernel)從flash復制到RAM,然后啟動它;初始化硬件;下載程序并寫入flash(通常由串口或者網口先把內核下載到RAM中,然后寫入flash);檢測目標板(bootloader會有一些簡單的代碼用以測試目標板硬件的好壞)。vivi的作用3434vivi代碼分析vivi的第一階段主要完成了依賴于CPU的體系結構硬件初始化,包括禁止中斷、初始化串口、復制第二階段到RAM中等。由于這些代碼是和硬件緊密相關的,因此要求大家在閱讀時需要對照S3C2410處理器的數(shù)據(jù)手冊,查閱相關的寄存器的描述,以便更好地理解。這些匯編代碼全部就集中在vivi\arch\s3c2410目錄下的head.S這一個匯編文件中,當然還有相關的頭文件。35vivi的第二階段的入口就是init/main.c,按照源代碼的組織流程,根據(jù)模塊化劃分的原則,共分為8個功能模塊即八個步驟,在源代碼的注釋中以step非常清晰的給出了區(qū)分。第一步:vivi從main()函數(shù)開始執(zhí)行,函數(shù)開始通過putstr(vivi_bannner)打印出vivi的版本。第二步:對開發(fā)板初始化board_init函數(shù),主要完成時鐘初始化(init_time())和通用I/O口設置(set_gpios()),在/arch/s3c2410/smdk.c中vivi代碼分析3636第三步:進行內存映射初始化和內存管理單元(MMU)的初始化工作,在mmu.c文件中。第四步:初始化堆,函數(shù)heap_init()定義在\lib\heap.c文件中。第五步:初始化mtd設備,用mtd_dev_init()函數(shù)第六步:配置參數(shù),主要是init_priv_data函數(shù)。第七步:提供vivi人機接口的各種命令。第八步:進入Bootloader的兩種模式之一。vivi代碼分析3737如何進入vivi界面1、進行硬件連接連接電源,將5V電源線的連到UP-NETARM2410-S的電源接口;連接串口線,一端連接PC的串口,另一端連接到UP-NETARM2410-S的串口(上面的);連接網線,將隨機附帶的交叉網線把UP-NETARM2410-S靠近于電源接口的網口和PC機的網口連接好。38如何進入vivi界面2、進入宿主機中的串口軟件:windows中的超級終端/Linux中的minicom運行Windows系統(tǒng)下(以WindowsXP為例)開始→所有程序→附件→通訊→超級終端(HyperTerminal)。請大家注意:在windowsxp操作系統(tǒng)下,當初次建立超級終端的時候,會出現(xiàn)如下對話框,請在□中打上√,并選擇“否”39如何進入vivi界面新建一個通信終端。如果要求輸入區(qū)號、電話號碼等信息請隨意輸入,出現(xiàn)如圖5.2.1所示對話框時,為所建超級終端取名為arm,可以為其選一個圖標。單擊“確定”按鈕。圖5.2.1創(chuàng)建超級終端40如何進入vivi界面選擇ARM開發(fā)平臺實際連接的PC機串口(如COM1),按確定后出現(xiàn)如圖5.2.2所示的屬性對話框,設置通信的格式和協(xié)議。這里波特率為115200,數(shù)據(jù)位8,無奇偶校驗,停止位1,無數(shù)據(jù)流控制。圖5.2.2設置串行口41如何進入vivi界面完成新建超級終端的設置以后,可以選擇超級終端文件菜單中的另存為,把設置好的超級終端保存在桌面上,以備后用。用串口線將PC機串口和平臺正確連接后,就可以在超級終端上看到程序輸出的信息了.42如何進入vivi界面3、打開電源開關,系統(tǒng)會由VIVI開始引導。正常啟動時會顯示啟動信息到“PressReturntostarttheLINUXnow,anyotherkeyforvivi”,不進行任何操作等待30S或按回車則啟動進入linux系統(tǒng),按除回車鍵外的其它鍵則進入vivi控制臺,如圖5.3.1。在這里輸入“boot”,進入LINUX系統(tǒng);輸入“bootucos”進入ucos系統(tǒng)。43圖5.3.1vivi控制臺輸入“boot”后會引導kernel,啟動linux系統(tǒng),見5.3.2.
44在該應用程序目錄下,可以掛載nfs文件系統(tǒng),通過“l(fā)s”查看應用程序45vivi的文件結構(1)arch:此目錄包括了所有VIVI支持的目標板的子目錄,存儲了與CPU架構有關的代碼文件。(第一階段源碼在arch中的head.S文件中,都是匯編語言)(2)Documentation:存放了許多文檔,包括VIVI使用指南。(3)drivers:目標板的各種設備驅動程序,比如串口、NandFlash和NorFlash等,實現(xiàn)對設備的讀寫和控制。46vivi的文件結構(4)include:頭文件的公共目錄,所有vivi源代碼所需的頭文件目錄(5)init:此目錄只有main.c和version.c兩個文件。與普通的C程序一樣,VIVI將從main函數(shù)開始執(zhí)行(vivi第二階段的入口函數(shù)),main函數(shù)調用lib下的函數(shù)實現(xiàn)第二階段工作。(6)lib:一些平臺公共的接口代碼,第二階段的初始化代碼和vivi常用命令的實現(xiàn)。47vivi的文件結構(7)scripts:此目錄存放了配置所需的腳本文件,如Menuconfig和Configure文件,以方便對VIVI的配置。(8)test:存放一些測試代碼文件。(9)util:存放與NANDFlash燒寫image相關的工具實現(xiàn)代碼48第4章嵌入式linux的構建4.1Bootloader簡介4.2常用Bootloader
的介紹4.3Bootloader
的燒寫和使用494.3Bootloader(vivi)的燒寫和使用linux系統(tǒng)的移植主要包括四個部分:燒寫2410-Slinux
操作系統(tǒng)包括燒寫vivi,kernel,root三個步驟,除此我們還要燒寫yaffs.tar,這四個文件為:vivi----linux操作系統(tǒng)啟動的bootloader;zImage----linux操作系統(tǒng)內核;root.cramfs----根文件系統(tǒng);yaffs.tar----應用程序50燒寫Vivi既可通串口燒寫也可通過jtag來燒寫;zImage和root.cramfs通過串口來燒寫;應用程序壓縮包通過網口來下載。514.3.1Bootloader(vivi)的燒寫vivi的燒寫有兩種方式:通過JTAG口燒寫和通過串口燒寫。
在Flash被格式化且內存里也沒有Bootloader的時候,此時目標板是一個完全干凈的開發(fā)板,就需要通過JTAG口把Bootloader燒寫到板子上串口燒寫主要用于更新和升級Bootloader。在Windows下可以通過超級終端來訪問目標板來進行燒寫,在Linux下可以通過MiniCom燒寫。52板子上沒有任何東西(包括BootLoader)的時候,需要專門的工具對vivi等BootLoader進行燒寫B(tài)ootloader-舉例手冊第9-19頁53板子上有諸如vivi等BootLoader后,再進行升級,就可以利用Target上已經存在的(舊的)BootLoader了Bootloader-舉例544.3.2Bootloader的使用工作正常的時候,Bootloader處于加載模式或者交換模式如使用vivi的時候,其交互模式的界面是55利用vivi升級內核Bootloader-舉例56利用vivi升級文件系統(tǒng)Bootloader-舉例574.4Linux內核及啟動過程Linux內核結構Linux內核配置、編譯Linux內核移植58Linux系統(tǒng)實際上由兩個比較獨立的部分組成,即內核部分和系統(tǒng)部分(根文件系統(tǒng))。59Linux內核主要由5個子系統(tǒng)組成:進程調度內存管理虛擬文件系統(tǒng)網絡接口進程間通信。Linux內核結構60Linux內核結構-Linux源碼位置61/include子目錄包含了建立內核代碼時所需的大部分包含文件,/init子目錄包含了內核的初始化代碼-內核工作起點。/arch子目錄包含了所有硬件結構特定的內核代碼。如:arm、i386、alpha。/drivers子目錄包含了內核中所有的設備驅動程序,如塊設備和SCSI設備。/fs子目錄包含了所有的文件系統(tǒng)的代碼,如:ext2,vfat等。/net子目錄包含了內核的連網代碼。/mm子目錄包含了所有內存管理代碼。/ipc子目錄包含了進程間通信代碼。/kernel子目錄包含了主內核代碼。Linux內核結構-Linux內核子目錄62Linux內核配置系統(tǒng)的組成1、Makefile:頂層和各源代碼中的makefile2、配置文件.config文件,包含配置選項,存放內核配置后結果。Rules.make:規(guī)則文件,被所有的Makefile使用。Linux內核配置編譯63Linux內核配置系統(tǒng)的組成3、配置工具基于字符的界面make
config:進入命令行,可以一行一行的配置,但使用不十分方便?;?/p>
Ncurses
的文本模式圖形用戶界面make
menuconfig:大多數(shù)開發(fā)人員使用的Linux內核編譯菜單,使用方便。基于
Xwindows
圖形界面的用戶配置界面make
xconfig。Linux內核配置編譯6464Linux內核配置與裁減下載Linux內核源碼到/usr/src目錄下 解壓該文件進入/usr/src/linux-2.x.xx目錄,執(zhí)行makemenuconfig命令就可以進入配置界面。Linux內核配置編譯65Makemenuconfig的圖形配置界面6666Linux內核配置與裁減在啟動配置菜單后,選擇相應的配置時,有三種選擇方式,它們分別代表的含義如下。N——不將該功能編譯進內核Y——將該功能編譯進內核M——將該功能編譯成可以在需要時動態(tài)插入到內核中的模塊Linux內核配置編譯6767Linux內核編譯在完成內核的裁減之后,內核的編譯要執(zhí)行以下命令:makedep:對內核原代碼的文件進行完整性和依賴性進行檢驗,確保關鍵文件在正確的位置。makeclean:編譯內核之前先把環(huán)境給清理干凈。有時也可用makerealclean或makemrproper來徹底清除相關依賴,保證沒有不正確的.o文件存在。makezImage:創(chuàng)建內核鏡像文件makemodules:創(chuàng)建內核模塊,若不創(chuàng)建內核模塊,這步可以不要。Linux內核配置編譯6868Linux移植Linux移植其實質是獲取某一版本的Linux內核源碼,根據(jù)具體目標平臺對這源碼進行必要的改寫(主要是修改體系結構相關部分),然后添加一些外設的驅動,打造一款適合于目標平臺的新操作系統(tǒng),對該系統(tǒng)進行針對目標平臺的交叉編譯,生成一個內核映象文件,最后通過一些手段把該映象文件燒寫(安裝)到目標平臺中?;贏RM開發(fā)板的Linux內核移植69交叉編譯環(huán)境的搭建修改Linux內核源碼linux
的移植主要包含啟動代碼的修改,內核的鏈接及裝入,參數(shù)傳遞,內核引導幾個部分。基于ARM目標板的Linux內核配置裁減與編譯基于ARM開發(fā)板的Linux內核移植70704.2嵌入式Linux根文件系統(tǒng)構建Linux文件系統(tǒng)介紹根文件系統(tǒng)的目錄結構BusyBox生成工具集根文件系統(tǒng)啟動流程7171文件系統(tǒng)簡單說就是一種目錄結構,linux操作系統(tǒng)中的設備是以文件的形式存在的,將這些文件進行分類管理以及提供和內核交互的接口,就形成文件系統(tǒng)。Linux文件系統(tǒng)介紹7272根文件系統(tǒng)是一種特殊的文件系統(tǒng),是內核啟動時掛載的第一個文件系統(tǒng)。該文件系統(tǒng)就要包括Linux啟動時所必須的目錄和關鍵性的文件。例如:Linux啟動時都需要有init目錄下的相關文件,在Linux掛載分區(qū)時Linux一定會找/etc/fstab這個掛載文件等,根文件系統(tǒng)中還包括了許多的應用程序bin目錄等。任何包括這些Linux系統(tǒng)啟動所必須的文件都可以稱為根文件系統(tǒng)。內核代碼的映像文件保存在根文件系統(tǒng)中。系統(tǒng)引導啟動程序會在根文件系統(tǒng)掛載之后從中把一些初始化腳本(如rcS,inittab)和服務加載到內存中去運行。根文件系統(tǒng)介紹73根文件系統(tǒng)介紹文件系統(tǒng)和內核是完全獨立的兩個部分。在嵌入式中移植的內核下載到開發(fā)板上,是沒有辦法真正的啟動Linux操作系統(tǒng)的(會出現(xiàn)無法加載文件系統(tǒng)的錯誤),啟動成功之后可以自動或手動掛載其他的文件系統(tǒng)。74根文件系統(tǒng)在系統(tǒng)啟動中到底是什么時候掛載的呢?先將/dev/ram0掛載,而后執(zhí)行/linuxrc.等其執(zhí)行完后,切換根目錄,再掛載具體的根文件系統(tǒng).根文件系統(tǒng)執(zhí)行完之后,也就到了Start_kernel()函數(shù)【在init/main.c文件中有個函數(shù)叫start_kernel,它是用來啟動內核的主函數(shù)】的最后,執(zhí)行init的進程,也就第一個用戶進程。對系統(tǒng)進行各種初始化的操作。7576對比linux文件系統(tǒng)和根文件系統(tǒng)的目錄結構Linux根文件系統(tǒng)嵌入式Linux系統(tǒng)的根文件系統(tǒng)/bin:存放二進制可執(zhí)行命令的目錄。/dev:存放設備文件和目錄。/etc:存放系統(tǒng)管理和配置文件和目錄。/home:用戶主目錄,比如用戶user的主目錄就是/home/user,可以用~user來表示。/lib:存放動態(tài)鏈接共享庫的目錄。/sbin:存放系統(tǒng)管理員使用的管理程序的目錄。/tmp:公用的臨時文件存儲點。/root:系統(tǒng)管理員的主目錄。/mnt:用以臨時掛載其他的文件系統(tǒng)。/proc:虛擬文件系統(tǒng),可直接訪問這個目錄來獲取系統(tǒng)信息。/var:某些大文件溢出區(qū)。/usr:存放應用程序和文件。/bin/dev/etc/lib/tmp/mnt
/proc/var/usr由于受系統(tǒng)資源的限制,一般沒有Linux根文件系統(tǒng)那么復雜,僅保留一些常用的目錄即可,對于嵌入式系統(tǒng),必須選擇一個合適的根文件系統(tǒng)以使系統(tǒng)運行最佳。*嵌入式系統(tǒng)通常都不是針對多用戶的77根文件系統(tǒng)存放二進制文件的目錄主要有四個:/bin,/sbin,/usr/bin和/usr/sbin,二進制文件要放在哪個目錄,與它在系統(tǒng)中所扮演的角色有很大的關系。如果這個是用于和系統(tǒng)管理員必備的二進制文件,就會放在/bin。如果這是系統(tǒng)管理員必備,但是一般用戶根本不會用到的二進制文件,就會放在/sbin,如果不是用戶必備的二進制文件,多半會放在/usr/bin;如果不是系統(tǒng)管理必備的工具,多半會放在/usr/sbin中。78根文件系統(tǒng)鏈接庫目錄lib,同樣如此,系統(tǒng)引導以及執(zhí)行最基本命令需要的鏈接庫會在/lib,所有其他的鏈接庫會放在/usr/lib,通常在套件安裝時,會在/usr/lib中產生子目錄,以便放它自己的鏈接庫。79補充:掛載/掛裝mount命令在Linux中將一個文件系統(tǒng)與一個存儲設備關聯(lián)起來的過程稱為掛裝(mount)。使用mount命令將一個文件系統(tǒng)附著到當前文件系統(tǒng)層次結構中(根)。命令mount[-參數(shù)][設備名稱][掛載點]例:mount/dev/sdb1/mnt80#使用不帶參數(shù)的mount命令來顯示所有已經掛載上了的文件系統(tǒng)#也可將掛載配置寫入/etc/fstab中,也實現(xiàn)自動掛載81根文件系統(tǒng)的類型嵌入式Linux根文件系統(tǒng)主要的根文件系統(tǒng)類型(基于存儲設備的文件系統(tǒng)類型)有:JFFS2YAFFS/YAFFS2Cramfs等Romfs
RAMDISK82(1)JFFS2JFFS嵌入式系統(tǒng)文件系統(tǒng)最早是由瑞典AxisCommunications公司基于Linux2.0的內核為嵌入式系統(tǒng)開發(fā)的文件系統(tǒng)。JFFS2,日志閃存嵌入式系統(tǒng)文件系統(tǒng)版本2(JournallingFlashFileSystemv2),是RedHat公司基于JFFS開發(fā)的閃存文件系統(tǒng)。特點是:可讀寫的、支持數(shù)據(jù)壓縮的、基于哈希表的日志型文件系統(tǒng),并提供了崩潰/掉電安全保護等。缺點主要是當文件系統(tǒng)已滿或接近滿時,因為垃圾收集的關系而使jffs2的運行速度大大放慢。目前jffs3正在開發(fā)中。
83(3)Cramfs:CompressedROMFileSystemCramfs是Linux的創(chuàng)始人Linus
Torvalds參與開發(fā)的一種只讀的壓縮文件系統(tǒng)。它也基于MTD驅動程序。在cramfs文件系統(tǒng)中,每一頁(4KB)被單獨壓縮,可以隨機頁訪問,其壓縮比高達2:1,為嵌入式系統(tǒng)節(jié)省大量的Flash存儲空間,使系統(tǒng)可通過更低容量的FLASH存儲相同的文件,從而降低系統(tǒng)成本,而且系統(tǒng)的可靠性較好。由于以上特性,Cramfs在嵌入式系統(tǒng)中應用廣泛。然而它的只讀屬性同時又是它的一大缺陷,使得用戶無法對其內容對進擴充。84(2)yaffs:YetAnotherFlashFileSystemyaffs/yaffs2是專為嵌入式系統(tǒng)使用NAND型閃存而設計的一種日志型文件系統(tǒng)。與jffs2相比,它減少了一些功能(例如不支持數(shù)據(jù)壓縮),所以速度更快,掛載時間很短,對內存的占用較小。另外,它還是跨平臺的文件系統(tǒng),除了Linux和eCos,還支持WinCE,pSOS和ThreadX等操作系統(tǒng)。
858686/bin:必要的用戶命令(二進制文件)。*/boot:引導加載程序使用的靜態(tài)文件。/dev:設備文件及其他特殊文件。/etc:系統(tǒng)配置文件。*/home:用戶主目錄。/lib:必要的鏈接庫,例如:C鏈接庫、內核模塊。/mnt:臨時掛載的文件系統(tǒng)的掛載點。*/opt:附加軟件的安裝目錄。proc:提供內核和進程信息的proc文件系統(tǒng)。*/root:root用戶主目錄。sbin:必要的系統(tǒng)管理員命令。tmp:臨時文件目錄。usr:大多數(shù)用戶使用的應用程序和文件目錄。var:監(jiān)控程序和工具程序存放的可變數(shù)據(jù)。根文件系統(tǒng)的目錄結構8787很小的應用程序提供完整的工具集的功能init進程:由內核啟動的第一個也是惟一的一個用戶進程,它根據(jù)配置文件決定啟動哪些程序.在嵌入式領域,通常使用Busybox集成的init程序.嵌入式根目錄下的bin,sbin和usr目錄以及l(fā)inuxc通常就是Busybox文件系統(tǒng)、網絡系統(tǒng)等等的工具集在/downloads/下載Busybox:busybox-1.12.2.tar.bz2解壓后,進入配置菜單:
makemenuconfigBusyBox生成工具集8888BusyBox生成工具集89BusyBox生成工具集選擇Busybox的編譯方式:BuildOptions BuildBusyBoxasastaticbinary(nosharedlibs)缺省配置為使用鏈接庫配置交叉編譯器:BuildOptions[*]DoyouwanttobuildBusyBoxwithaCrossCompiler?(/opt/crosstools/gcc-3.4.6-glibc-2.3.6/bin/arm-linux-)CrossCompilerprefix安裝路徑:InstallationOptions(./_install)BusyBoxinstallationprefix90BusyBox生成工具集配置其他工具集:ArchivalUtilitiesCoreutilsConsoleUtilitiesDebian
UtilitieEditorsFindingUtilitiesInitUtilitiesLogin/PasswordManagementUtilitiesMiscellaneousUtilitiesLinuxModuleUtilitiesNetworkingUtilitiesProcessUtilitiesShellsSystemLoggingUtilitiesLinuxSystemUtilities91BusyBox生成工具集配置其他工具集:ArchivalUtilities
工具
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年上半年重慶城市職業(yè)學院招聘事業(yè)單位人員7人模擬試卷帶答案詳解
- 行政管理工具合同審核執(zhí)行表記錄工具標準
- 2025年甘肅省嘉峪關市市場監(jiān)督管理局公益性崗位招聘20人考前自測高頻考點模擬試題及答案詳解(必刷)
- 江西省部分學校2024-2025學年高二上學期10月教學質量檢測地理試題(解析版)
- 老師的那句話影響了我寫人作文7篇
- 2025江西撫州市崇仁縣縣屬國有企業(yè)招聘員工有關事項模擬試卷完整參考答案詳解
- 員工入職培訓與能力評估模板
- 2025福建龍凈環(huán)保股份有限公司電控廠招聘模擬試卷完整答案詳解
- 2025江西吉安永新縣薪火人力資源服務有限公司招聘4人模擬試卷完整答案詳解
- 2025昆明市盤龍職業(yè)高級中學烹飪教師招聘(1人)模擬試卷及答案詳解(有一套)
- 統(tǒng)編版(2024)八年級上冊歷史全冊教材問題參考答案
- 《電工電子技術》課件-第1章 電路理論基礎及分析方法
- 《無人機飛行控制技術》全套教學課件
- 注冊安全工程師-建筑安全高頻考點
- 新聞攝影培訓的課件
- 剛新修訂《治安管理處罰法》培訓
- 建伍對講機TH-K2-K4AT中文使用說明書
- CDA一級考試試題及答案解析
- 內科胸腔鏡檢查護理查房
- 膝關節(jié)鏡手術治療講課件
- 部編一年級上冊語文教學反思全集
評論
0/150
提交評論