嵌入式Linux根文件系統(tǒng)制作_第1頁
嵌入式Linux根文件系統(tǒng)制作_第2頁
嵌入式Linux根文件系統(tǒng)制作_第3頁
嵌入式Linux根文件系統(tǒng)制作_第4頁
嵌入式Linux根文件系統(tǒng)制作_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、實(shí)訓(xùn)項(xiàng)目四-嵌入四Linux系統(tǒng)根文件系統(tǒng)制作一. 項(xiàng)目實(shí)施目的Ø 了解 UP-CUP2440 型實(shí)驗(yàn)平臺Linux 系統(tǒng)下根文件系統(tǒng)結(jié)構(gòu)Ø 掌握根文件系統(tǒng)的搭建過程Ø 掌握 busybox、mkcramfs 等工具的使用方法二. 項(xiàng)目主要任務(wù)Ø 使用 busybox 生成文件系統(tǒng)中的命令部分,使用mkcramfs 工具制作CRAMFS 格式的根文件系統(tǒng)。Ø 分析根文件系統(tǒng) etc 目錄下重要配置文件的格式及語法,熟悉根文件系統(tǒng)的啟動過程三. 基本概念1 文件系統(tǒng)基本概念Linux的一個(gè)最重要特點(diǎn)就是它支持許多不同的文件系統(tǒng)。這使Linux非常

2、靈活,能夠與許多其他的操作系統(tǒng)共存。Linux支持的常見的文件系統(tǒng)有:JFS、 ReiserFS、ext、ext2、ext3、ISO9660、XFS、Minx、MSDOS、UMSDOS、VFAT、NTFS、HPFS、NFS、SMB、SysV、PROC等。隨著時(shí)間的推移, Linux支持的文件系統(tǒng)數(shù)還會增加。Linux是通過把系統(tǒng)支持的各種文件系統(tǒng)鏈接到一個(gè)單獨(dú)的樹形層次結(jié)構(gòu)中,來實(shí)現(xiàn)對多文件系統(tǒng)的支持的。該樹形層次結(jié)構(gòu)把文件系統(tǒng)表示成一個(gè)整個(gè)的獨(dú)立實(shí)體。無論什么類型的文件系統(tǒng),都被裝配到某個(gè)目錄上,由被裝配的文件系統(tǒng)的文件覆蓋該目錄原有的內(nèi)容。該個(gè)目錄被稱為裝配目錄或裝配點(diǎn)。在文件系統(tǒng)卸載時(shí),

3、裝配目錄中原有的文件才會顯露出來。在Linux 文件系統(tǒng)中,文件用i 節(jié)點(diǎn)來表示、目錄只是包含有一組目錄條目列表的簡單文件,而設(shè)備可以通過特殊文件上的I/O 請求被訪問。2常見的嵌入式文件系統(tǒng)嵌入式Linux系統(tǒng)一般沒有大容量的磁盤,多使用flash存儲器,所以多采用基于Flash(NOR和NAND)的文件系統(tǒng)或者RAM內(nèi)存的文件系統(tǒng)。(1)Flash根據(jù)結(jié)構(gòu)不同分為 NOR Flash和NAND Flash。基于flash的文件系統(tǒng)主要有:Ø jffs2:RedHat基于jffs開發(fā)的文件系統(tǒng)。 特點(diǎn):可讀寫、支持?jǐn)?shù)據(jù)壓縮、支持哈希表的日志型文件系統(tǒng),提供了崩潰掉電安全保護(hù),提供“

4、寫平衡”支持等。 缺點(diǎn):不適合在體積和容量比較大的NAND Flash中使用,當(dāng)文件系統(tǒng)已滿或者快滿時(shí),因?yàn)槔占年P(guān)系使它的運(yùn)行速度大大放慢。Ø yaffs:專為嵌入式系統(tǒng)使用NAND型閃存而設(shè)計(jì)的一種日志型文件系統(tǒng)。 特點(diǎn):1.減少了一些jffs2的功能,但是速度更快,占用內(nèi)存更少,能夠?qū)崿F(xiàn)錯(cuò)誤檢測和壞塊處理,能夠提高文件系統(tǒng)的加載速度。采用多策略混合的垃圾回收算法。 2.跨平臺文件系統(tǒng),除了Linux還支持WinCE、pSOS、ThreadX。3.自帶NAND芯片驅(qū)動,并為嵌入式系統(tǒng)提供直接訪問文件系統(tǒng)的API,用戶可不使用Linux中的MTD與VFS,直接對文件系統(tǒng)操作。也

5、可與MTD驅(qū)動程序配合使用。Ø Cramfs:Linux開發(fā)的只讀的壓縮文件系統(tǒng),基于MTD驅(qū)動程序。 特點(diǎn):速度快,效率高,保護(hù)文件系統(tǒng)免受破壞,提高了可靠性。 缺點(diǎn):內(nèi)容無法擴(kuò)充。Ø Romfs:簡單的、緊湊的、只讀的文件系統(tǒng),不支持動態(tài)擦寫保存,安順序存放數(shù)據(jù)。ucLinux通常采用本文件系統(tǒng)。(2)基于RAM的文件系統(tǒng)Ø Ramdisk:將一部分固定大小的內(nèi)存當(dāng)作分區(qū)來使用。它并非一個(gè)實(shí)際的文件系統(tǒng),而是一種將實(shí)際的文件系統(tǒng)裝入內(nèi)存的機(jī)制,并且可以作為根文件系統(tǒng)。將一些經(jīng)常被訪問而又不會更改的文件通過Ramdisk放在內(nèi)存中,可以明顯的提高系統(tǒng)的性能。在L

6、inux的啟動階段,initrd提供了一套機(jī)制,可以將內(nèi)核映像和根文件系統(tǒng)一起載入內(nèi)存。Ø ramfs/tmpfs: Ramfs是Linus Torvalds開發(fā)的一種基于內(nèi)存的文件系統(tǒng),工作于虛擬文件系統(tǒng)(VFS)層,不能格式化,可以創(chuàng)建多個(gè),在創(chuàng)建時(shí)可以指定其最大能使用的內(nèi)存大小。(實(shí)際上VFS本質(zhì)上可看成一種內(nèi)存文件系統(tǒng),它統(tǒng)一了文件在內(nèi)核中的表示方式,并對磁盤文件系統(tǒng)進(jìn)行緩沖。);Rmfs/tmpfs文件系統(tǒng)把所有的文件都放在RAM中,所以讀/寫操作發(fā)生在RAM中,可以用ramfs/tmpfs來存儲一些臨時(shí)性或經(jīng)常要修改的數(shù)據(jù),例如/tmp和/var目錄,這樣既避免了對Fla

7、sh存儲器的讀寫損耗,也提高了數(shù)據(jù)讀寫速度;amfs/tmpfs相對于傳統(tǒng)的Ramdisk的不同之處主要在于:不能格式化,文件系統(tǒng)大小可隨所含文件內(nèi)容大小變化;mpfs的一個(gè)缺點(diǎn)是當(dāng)系統(tǒng)重新引導(dǎo)時(shí)會丟失所有數(shù)據(jù)。Ø 網(wǎng)絡(luò)文件系統(tǒng)NFS (Network File System) NFS:是由Sun開發(fā)并發(fā)展起來的一項(xiàng)在不同機(jī)器、不同操作系統(tǒng)之間通過網(wǎng)絡(luò)共享文件的技術(shù)。在嵌入式Linux系統(tǒng)的開發(fā)調(diào)試階段,可以利用該技術(shù)在主機(jī)上建立基于NFS的根文件系統(tǒng),掛載到嵌入式設(shè)備,可以很方便地修改根文件系統(tǒng)的內(nèi)容。3嵌入式根文件系統(tǒng) 根文件系統(tǒng)也是一種文件系統(tǒng),簡單來說,根文件系統(tǒng)就是一種目錄

8、結(jié)構(gòu),根文件系統(tǒng)與普通文件系統(tǒng)的區(qū)別在于根文件系統(tǒng)主要包括Linux操作系統(tǒng)啟動所必須的目錄和關(guān)鍵性的文件,例如Linux啟動時(shí)都需要有init目錄下的相關(guān)文件,在Linux掛載分區(qū)時(shí)Linux一定會找/etc/fstab這個(gè)掛載文件等,根文件系統(tǒng)中還包括了許多的應(yīng)用程序,比如bin目錄下的可執(zhí)行文件,任何包括操作系統(tǒng)啟動所必須的文件的文件系統(tǒng)都可以做根文件系統(tǒng)。 Linux啟動所必須的文件系統(tǒng)目錄結(jié)構(gòu)如下: 對于用途單一的嵌入式系統(tǒng),上邊的一些用于多用戶的目錄可以省略,例如/home、/opt、/root 目錄等。而/bin、/dev、/etc、/lib、/proc、/sbin 和/usr

9、目錄,是幾乎每個(gè)系統(tǒng)必備的目錄,也是不可或缺的目錄。生成這些目錄和相關(guān)文件的方法主要有兩種,可以通過手動建立相關(guān)目錄和文件,也可以通過busybox工具來生成相關(guān)目錄和文件。Busybox 是小型的嵌入式 Linux 系統(tǒng)制作 root 根文件系統(tǒng)時(shí)有一個(gè)常用的利器:BusyBox。Busybox 是 Debian GNU/Linux的大名鼎鼎的 Bruce Perens 首先開發(fā),使用在 Debian 的安裝程序中。后來又有許多 Debian developers 貢獻(xiàn)力量,這其中尤推 busybox 目前的維護(hù)者 Erik Andersen,他患有癌癥,可是卻是一名優(yōu)秀的自由軟件開發(fā)者。B

10、usybox 編譯出一個(gè)單個(gè)的獨(dú)立執(zhí)行程序,就叫做 busybox。但是它可以方便的進(jìn)行配置,執(zhí)行 ash shell 的功能,以及幾十個(gè)各種小應(yīng)用程序的功能。這其中包括有一個(gè)迷你的 vi 編輯器,以及其他諸如 sed, ifconfig,mkdir, mount, ln, ls, echo, cat . 等等這些都是一個(gè)正常的系統(tǒng)上必不可少的工具,但是如果我們把這些程序的原件拿過來的話,它們的體積加在一起,讓人吃不消??墒?busybox 有全部的這么多功能,大小也不過 100K 左右。而且,用戶還可以根據(jù)自己的需要,決定到底要在 busybox 中編譯進(jìn)哪幾個(gè)應(yīng)用程序的功能。本系統(tǒng)就是采用

11、busybox來制作根文件系同的。 四 .根文件系統(tǒng)制作步驟1重新編譯配置內(nèi)核,確保內(nèi)核支持所選的根文件系統(tǒng)。rootlocalhost # cd /UP-CUP2440/SRC/kernel/linux-2.6.24.4/2、運(yùn)行 make menuconfig 命令配置內(nèi)核文件系統(tǒng)相關(guān)支持添加對CRAMFS 根文件以及YAFFS2 文件系統(tǒng)系統(tǒng)支持進(jìn)入File systems ->菜單進(jìn)入Miscellaneous filesystems ->菜單選擇<*> Compressed ROM file system support (cramfs)支持,如圖:選擇<

12、;*> YAFFS2 file system support 支持,配置如下圖保存退出。在前期Linux內(nèi)核制作過程中,相關(guān)選項(xiàng)已經(jīng)選擇。在實(shí)驗(yàn)室,不需要真的重新去編譯內(nèi)核,只是需要學(xué)生理解,所選的根文件系統(tǒng),在前期的內(nèi)核編譯時(shí)一定要選中相關(guān)的配置選項(xiàng)。3.查看已經(jīng)制作好的文件系統(tǒng)(掛載up24402.iso)rootlocalhost /# cd /UP-CUP2440/SRC/rootfs/rootlocalhost rootfs# ls如下圖所示,光盤文件里有已經(jīng)制作好的根文件系統(tǒng)和制作根文件系統(tǒng)的busybox源代碼。rootlocalhost rootfs# tar jxvf

13、rootfs.tar.bz2rootlocalhost /#ls 如上圖所示,綠色的文件為制作根文件系統(tǒng)需要的工具,rootfs為根文件系統(tǒng)目錄結(jié)構(gòu)和相關(guān)內(nèi)容。rootlocalhost /#cd rootfs_src4.根文件系統(tǒng)制作方法 (1)手動制作 建立相關(guān)目錄,準(zhǔn)備相關(guān)文件和命令,相關(guān)文件可以參考redhat的內(nèi)容修改制作,相關(guān)命令需要下載源碼交叉編譯,這個(gè)過程非常復(fù)雜,且容易出錯(cuò)。常見的方式是采用busybox來制作。(2)busybox制作根文件系統(tǒng) 什么是Busybox?rootlocalhost /#make cleanrootlocalhost /#ls如上圖,此時(shí)并沒有可

14、執(zhí)行的busybox程序。rootlocalhost rootfs#vi Makefile修改此目錄的Makefile 文件,更改ARCH ?和CROSS_COMPILE ?=宏定義,如下:第164 行 CROSS_COMPILE ?= arm-linux-第189 行ARCH ?= arm退出保存rootlocalhost busybox-1.12.2# make menuconfig進(jìn)入Busybox Settings ->選項(xiàng)進(jìn)入Busybox Library Tuning -> 選項(xiàng)選中* Fancy shell prompts 支持進(jìn)入Miscellaneous Util

15、ities ->選項(xiàng)(返回主菜單選項(xiàng))去除 inotifyd 選項(xiàng)。退出保存設(shè)置編譯 busyboxrootlocalhost busybox-1.12.2# make如上圖所示,交叉編譯完成后,就生成了我們需要的busybox可執(zhí)行程序。這就是我們根文件系統(tǒng)需要的各種命令,后續(xù)通過安裝命令建立命令連接。rootlocalhost busybox-1.12.2# make install成功后會在當(dāng)前目錄下生成 _install 目錄,編譯的工具也都集成在該安裝目錄下。rootlocalhost busybox-1.12.2# cd _install/rootlocalhost _ins

16、tall# ls可以看到_install 目錄下生成了根文件系統(tǒng)常用的命令及工具,接下來的工作,用戶可以根據(jù)需要將_install 目錄下生成的命令拷貝到根文件系統(tǒng)相應(yīng)目錄下。例如:將從busybox 生成的which 命令拷貝到根文件系統(tǒng)目錄的usr/bin 目錄下,這樣,我們的根文件系統(tǒng)就支持which 命令了。實(shí)際中我們出廠所帶的根文件系統(tǒng)已經(jīng)包含大部分常用工具及命令,以上步驟在于讓用戶了解根文件系統(tǒng)的工具及命令是如何制作出來的,以及如何添加自己需要的命令或工具集到自己的根文件系統(tǒng)中。4、 制作根文件系統(tǒng)/UP-CUP2440/SRC/rootfs/rootfs。將實(shí)驗(yàn)中已經(jīng)提供好的根文

17、件系統(tǒng)目錄rootfs 下的 rootfs_src 目錄打包制作成CRAMFS 格式的根文件系統(tǒng)。rootlocalhost rootfs# cd rootfs/rootlocalhost rootfs# lsmkcramfs mkrootfs.sh rootfs_src rootfs.cramfsrootlocalhost rootfs#其中rootfs_src 根文件系統(tǒng)目錄下已經(jīng)建立好相關(guān)目錄如etc、usr、bin、mnt 等rootlocalhost rootfs# ls rootfs_srcrootlocalhost rootfs#當(dāng)然用戶也可以將從busybox 工具中制作的相關(guān)命令及工具拷貝到此目錄的相關(guān)目錄下,再制作鏡像文件。如果是動態(tài)編譯的busybox 則還需要將生成的命令或工具所依賴的動態(tài)庫拷貝進(jìn)來。制作CRAMFS 根文件系統(tǒng)鏡像。實(shí)驗(yàn)中已經(jīng)提供了mkcramfs 制作工具以及mkrootfs.sh 腳本文件,用戶只需執(zhí)行mkrootfs.sh 腳本文件來使用mkcramfs 制作根文件系統(tǒng)鏡像即可。當(dāng)然也可以手動的執(zhí)行命令:rootlocalhost rootfs#./mkcramfs rootfs_src rootf.cramfsrootlocalhost

溫馨提示

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

評論

0/150

提交評論