<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 嵌入式Linux 的Cramfs 根文件系統配置的解決方案

嵌入式Linux 的Cramfs 根文件系統配置的解決方案

作者: 時(shí)間:2010-12-12 來(lái)源:網(wǎng)絡(luò ) 收藏

1 引言

本文引用地址:http://dyxdggzs.com/article/151230.htm

  隨著(zhù)電子產(chǎn)業(yè)的不斷發(fā)展,基于 ARM 技術(shù)的設計和開(kāi)發(fā)平臺越來(lái)越多地在控制 類(lèi)、消費類(lèi)、通信類(lèi)等電子產(chǎn)品中廣泛應用。從軟件角度上看,構建基于A(yíng)RM 技術(shù)的linux 要涉及到引導加載程序、 內核、、用戶(hù)應用程序幾部分的設計。 系統是操作系統中用來(lái)管理用戶(hù)的內核軟件層。文件可能存在于磁盤(pán)、網(wǎng)絡(luò )或 者是一些虛擬的文件。文件系統包括根文件系統和建立于內存設備之上文件系統。根文件系 統是linux 系統的核心部分,包含系統使用的軟件和庫,以及所有用來(lái)為用戶(hù)提供支持架構 和用戶(hù)使用的應用軟件,并作為存儲數據讀寫(xiě)結果的區域。由于設備中Flash 資源很 緊張,如何有效地使用有限的存儲空間是開(kāi)發(fā)者必須考慮的,合適的文件系統格式是 解決這一問(wèn)題的關(guān)鍵所在。本文討論了只讀型壓縮 根文件系統的特點(diǎn),并詳細的說(shuō) 明了NAND FLASH 上建立一個(gè)可讀可寫(xiě)型嵌 根文件系統的新方法。

2 根文件系統概述

  2.1 Linux根文件系統

  根文件系統不同于普通文件系統,它是在內核啟動(dòng)時(shí)掛載(mount)的第一個(gè)文件系統, 內核代碼映像文件保存在根文件系統中,而系統引導啟動(dòng)程序會(huì )在根文件系統掛載之后把一 些基本的初始化腳本和服務(wù)程序等加載到內存中。

  Linux 根文件系統是樹(shù)型結構組織[1,3],它包含了內核和系統管理所需要的各種文檔和程序等。一般來(lái)說(shuō),根目錄“/”下頂層目錄都有一些比較固定命名和用途,下面列出一

  個(gè)Linux 根文件系統中的比較常見(jiàn)的目錄結構。

  /bin:存放二進(jìn)制可執行命令的目錄。

  /dev:存放設備文件和目錄。

  /etc:存放系統管理和文件和目錄。

  /home:用戶(hù)主目錄,比如用戶(hù)user 的主目錄就是/home/user,可以用~user 來(lái)表示。

  /lib:存放動(dòng)態(tài)鏈接共享庫的目錄。

  /sbin:存放系統管理員使用的管理程序的目錄。

  /tmp:公用的臨時(shí)文件存儲點(diǎn)。

  /root:系統管理員的主目錄。

  /mnt:用以臨時(shí)掛載其他的文件系統。

  /proc:虛擬文件系統,可直接訪(fǎng)問(wèn)這個(gè)目錄來(lái)獲取系統信息。

  /var:某些大文件溢出區。

  /usr:存放應用程序和文件。

  對于嵌入式 Linux 系統的根文件系統來(lái)說(shuō),由于受系統資源的限制,一般沒(méi)有上述 那么復雜,僅保留一些常用的目錄即可。如/bin、/dev、/etc、/lib、/proc、/var、/tmp、/usr、 /mnt 等[2]。 由于嵌入式系統的設計冗余度小、系統緊湊,通常存儲容量有限,因此,必須選擇 一個(gè)合適的根文件系統以使系統運行最佳。目前,嵌入式Linux 根文件系統主要的根文件系 統類(lèi)型有:Romfs, JFFS2, RAMDISK, YAFFS/YAFFS2, , Squashfs 等[1]。本文主要對 Cramfs 根文件系統進(jìn)行討論。

 2.2 Cramfs根文件系統及其在實(shí)際應用中存在的問(wèn)題

  Cramfs 是Linux 的創(chuàng )始人 Linus Torvalds 參與開(kāi)發(fā)的一種只讀的壓縮文件系統,它基于 MTD(Memory Technology Device,存儲技術(shù)設備)驅動(dòng)程序。在cramfs 文件系統中,每一頁(yè) (4KB)被單獨壓縮,可以隨機頁(yè)訪(fǎng)問(wèn),其壓縮比高達2:1,為嵌入式系統節省大量的FLASH 存儲 空間,使系統可通過(guò)更低容量的FLASH 存儲相同的文件,從而降低系統成本。

  Cramfs 并不 需要一次性地將文件系統中的所有內容都解壓到內存中,而只是在系統需要訪(fǎng)問(wèn)某個(gè)位置的 數據時(shí),立即計算出該數據在Cramfs 中的位置,將其實(shí)時(shí)地解壓縮到內存中,然后通過(guò)對 內存的訪(fǎng)問(wèn)來(lái)獲取文件系統中需要讀取的數據。Cramfs 中的解壓縮以及解壓縮之后內存中 的數據存放位置都是由Cramfs 文件系統本身進(jìn)行維護的,用戶(hù)并不需要了解具體實(shí)現過(guò)程, 因此這種方式增強了透明度,對開(kāi)發(fā)人員來(lái)說(shuō),既方便又節省了存儲空間。

  由于 Cramfs 是只讀型文件系統,而大多嵌入式應用程序需要在臨時(shí)目錄/tmp 進(jìn)行創(chuàng )建 臨時(shí)文件等寫(xiě)操作,如不對Cramfs 進(jìn)行,則應用程序將不能正常運行,導致系統崩潰。 目前,解決些問(wèn)題的方法是復合文件系統法,即使用YAFFS/YAFFS2 等可寫(xiě)型文件系統與 Cramfs 復合而成的文件系統作為嵌入式系統的根文件系統,使Cramfs 根文件系統啟動(dòng)時(shí)掛 載YAFFS/YAFFS2 文件系統,同時(shí)將應用程序存放在YAFFS/YAFFS2 文件系統中。這種方 法解決了應用程序對根文件系統的寫(xiě)操作問(wèn)題,但由于在通常的根文件系統之外還增加了一 個(gè)額外的可寫(xiě)型文件系統,必然會(huì )增大整個(gè)根文件系統所占的存儲空間,造成嵌入式系統存 儲資源緊張。本文在實(shí)踐的基礎上,通過(guò)對Linux Cramfs 根文件系統的研究,發(fā)現了一種通 過(guò)修改根文件系統啟動(dòng)腳本和文件來(lái)實(shí)現根文件系統的可讀、可寫(xiě)性的新方法,它不需 要新增額外的文件系統來(lái)支持應用程序的讀、寫(xiě)要求,而是利用根文件系統本身的特性來(lái)構 造一個(gè)局部可寫(xiě)的根文件系統。

3 嵌入式Linux 根文件系統的配置

  3.1 Cramfs根文件系統配置文件的分析

  Cramfs 根文件系統中的配置文件存放在/etc 目錄下,有22 個(gè)文件及文件夾,可分為以 下幾類(lèi):

  引導和登錄/注銷(xiāo)類(lèi),包括/etc/issue、/etc/issue.net、/etc/rc.d/rc、/etc/rc.d/rc.local、 /etc/rc.d/rc.sysinit、/etc/rc.d/rc/rcX.d 等文件,它們主要記錄系統的啟動(dòng)信息及運行級別等。

  文件系統類(lèi),包括/etc/mtab、/etc/fstab、/etc/mtools.conf 文件等,它們記錄著(zhù)系統文 件系統的安裝、卸載信息,系統啟動(dòng)時(shí)可以被安裝的文件系統以及在這些文件系統上所定 義的操作。

  系統管理類(lèi),包括/etc/group、/etc/nologin、/etc/passwd、/etc/rpmrc、/etc/securetty、 /etc/usertty、/etc/shadow、/etc/shells、/etc/motd 等文件,它們記錄著(zhù)系統用戶(hù)和用戶(hù)組的登 錄信息、加密后的用戶(hù)帳號密碼信息、用戶(hù)組的權限信息等。

  網(wǎng)絡(luò )類(lèi),包括/etc/gated.conf、/etc/networks、/etc/protocols、/etc/gateway、/etc/services、 /etc/inetd.conf、/etc/sysconfig/netword、/etc/recolv.conf、/etc/rpc、/etc/exports 等文件,它們 記錄著(zhù)系統對網(wǎng)絡(luò )接口的配置信息、網(wǎng)絡(luò )服務(wù)程序、網(wǎng)絡(luò )協(xié)議、網(wǎng)絡(luò )文件系統配置等信息。

  系統命令類(lèi),包括/etc/lilo.conf、/etc/logrotate.conf、/et/identd.conf、/etc/ld.so.conf、 /etc/inittab、/etc/termcp 等文件,這些文件記錄著(zhù)要獨占地控制系統的系統命令及動(dòng)態(tài)鏈接 程序配置等信息等。

linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)

linux相關(guān)文章:linux教程



上一頁(yè) 1 2 3 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>