999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

嵌入式Linux根文件系統的研究

2010-04-12 00:00:00陳海燕任松巖
現代電子技術 2010年4期

摘 要:在嵌入式Linux系統中,根文件系統是構建嵌入式Linux系統的重要組成部分,是Linux/Unix系統不可或缺的組件。這里從Linux根文件系統底層出發,詳細分析根文件系統的組成和如何利用Busybox配置完整的根文件系統,并給出了啟動腳本和配置文件以實現簡單的根文件系統,并且以Cramfs和Jffs 2為例詳述了根文件系統的制作過程,為其他文件系統的制作提供參考。

關鍵詞:嵌入式Linux;Jffs 2;Cramfs;根文件系統

中圖分類號:TP311文獻標識碼:A

文章編號:1004-373X(2010)04-073-03

Research of Embedded Linux Root File System

CHEN Haiyan,REN Songyan

(Harbin University of Science and Technology,Harbin,150080,China)

Abstract:In the embedded Linux system,root file system as an important part of building embedded Linux system,which is the indispensable component of Linux/UNIX system.Starting from the foundation of Linux root file system,the composition of root file system and how to use Busybox configuration to complete the root file system is analysed in detail,and the startup script and configuration files in order to achieve simple root file system,and elaborate the production process of root file system are proposed,taking Cramfs and Jffs 2 for example,reference for the production of other file systems is provided.

Keywords:embedded Linux;Jffs 2;Cramfs;root file system

0 引 言

隨著數字技術的發展,近年來嵌入式系統技術發展迅猛,已廣泛應用于工業控制、國防、通信、辦公自動化、消費電子等多種領域.而Linux作為一款優秀的源碼開放、功能強大、高效穩定、開發環境成熟的多任務操作系統,具有許多商業操作系統不可比擬的優勢,成為了最有潛力的嵌人式操作系統[1]。根文件系統是嵌入式Linux的重要組件,是內核啟動加載的第一個文件系統,主要為內核的啟動提供各種工具軟件、庫文件、腳本和配置文件等等,并且可以作為數據的存取區域,是決定系統能否正常啟動的關鍵[2,3]。在此以Cramfs和Jffs 2文件系統為例,詳述Linux根文件系統的制作過程。

1 文件系統層次標準

為了規范Linux的文件系統,促進Linux快速發展,Linux的開發者出臺了所謂的文件系統層次標準(Filesystem Hierarchy Standard,FHS),它規范了在根目錄“/”下面各個主要的目錄應該放置什么樣的文件。FHS定義了兩層規范,第一層是“/”下面的各個目錄應該要放什么文件數據,例如 /etc應該要放置配置文件,/bin與/sbin則應該要放置可執行文件等。第二層則是針對 /usr及 /var這兩個目錄的子目錄來定義。例如 /var/log放置系統登錄文件、/usr/share放置共享數據等。

在根文件系統的最頂層目錄中,每一個目錄都有其具體的目的和用途,表1提供了一個完整的FHS定義的根文件系統頂層目錄[4,5]。

嵌入式Linux是標準Linux的裁剪,可以根據不同的用途對FHS進行必要的裁剪。例如/home,/root是在多用戶時才有作用,在嵌入式系統中,如手持式智能終端等單用戶設備是不需要這些目錄的。

2 FLASH文件系統

FLASH是目前嵌入式系統中廣泛采用的主流存儲儲裝置,它是一種電擦除的非易失性存儲器,具有低功耗、高密度、小體積等優點。FLASH存儲器可以分為若干塊,每塊又由若干頁組成,對FLASH的擦除操作以塊為單位進行,而讀和寫操作以頁為單位進行。FLASH 存儲器在進行寫入操作之前必須先擦除目標塊[6]。目前FLASH中常見的文件系統有Romfs,Cramfs,Jffs 2,Yaffs2等,不同的文件系統有不同的特點。

表1 根文件系統頂層目錄

目錄名內容

bin提供基本的用戶命令庫

boot用于BootLoader的靜態文件

dev設備或其他的特殊文件

etc系統配置文件

home多個用戶的主目錄

lib基本的系統庫

mnt用于臨時掛載的文件系統

opt可選擇的軟件包

proc內核虛擬文件系統和進程信息

root根用戶的主目錄

sbin基本的系統管理命令庫

tmp臨時文件

usr它的二級目錄里包含許多應用程序和許多有用的文檔

var一些變化的實例和工具

2.1 Cramfs文件系統

Cramfs被設計為簡單并且非常小的可壓縮的文件系統,它主要用于ROM較小的嵌入式系統。在Cramfs文件系統中,每一頁(4 KB)被單獨壓縮,可以隨機頁訪問,其壓縮比高達2∶1,為嵌入式系統節省大量的FLASH存儲空間,同時在運行的時無需一次性地將文件系統中的任何內容都解壓縮到內存之中,而是在系統需要訪問某個位置的數據時,立即計算出該數據在Cramfs 中的位置,將其實時地解壓縮到內存之中,然后通過對內存的訪問來獲取文件系統中需要讀取的數據,其速度快,效率高。它的只讀的特點有利于保護文件系統免受破壞,提高了系統的可靠性,但是它的只讀屬性同時又是一大缺陷,使得用戶無法對其內容對進擴充[7]。

2.2 Jffs 2文件系統

Jffs 2是FLASH嵌入式系統上應用最廣的一個日志結構的文件系統。它提供的垃圾回收機制,使得不需要馬上對擦寫越界的塊進行擦寫,而只需要為其設置一個標志,標明為塊。當可用的塊數不足時,垃圾回收機制才開始回收這些節點。同時,由于Jffs 2基于日志型結構,在意外掉電后仍然可以保持數據的完整性,而不會丟失數據。當文件系統已滿或接近滿時,因為垃圾收集的關系而使Jffs 2的運行速度大大放慢[8]。

3 Busybox的配置

Busybox是一個集成了一百多個最常用Linux 命令和工具的軟件,具有實用、短小、穩定等特點。Busybox 利用Linux 實用工具中代碼大量重復的事實,將重復的代碼重新整理,放到一個文件中,減少了多次包含,這樣就可以節省系統的空間和提高程序的執行速度,很適合對于資源比較緊張的嵌入式系統使用[9]。

Busybox的源碼可以從官方網站www.busybox.net/下載,然后解壓源碼包進行配置安裝,具體操作如下:

#tar-xjvf busybox-1.7.0.tar.bz2

#cd busybox-1.7.0

#make menuconfig

#make

#make install

最常用的配置命令是make menuconfig,也可以根據自己的需要來配置busybox,如果希望選擇盡可能多的功能,可以直接用make defconfig,它會自動配置為最大通用的配置選項,從而使得配置過程變得更加簡單、快速。在執行make命令之前應該修改頂層Makefile文件(ARCH=arm,CROSSCOMPLIE=arm-linux-)。執行完make install命令后會在當前目錄的install目錄下生成bin,sbin,linuxrc三個文件。

4 創建根文件系統

Busybox已經生成了根文件系統的三個重要的文件,其他的根目錄文件要根據嵌入式設備的具體功能來對FHS進行裁剪,具體步驟如下:

(1) 創建根目錄myrootfs,把Busybox生成的三個文件復制到myrootfs目錄下,并在此目錄下分別建立dev,lib,mnt,etc,sys,proc,usr,home,tmp,var等目錄(只有dev,lib,sys,usr,etc是不可或缺的,其他的目錄可根據需要選擇)。在etc目錄下建立init.d目錄。

(2) 建立系統配置文件inittab,fstab,rcS,其中inittab,fstab放在etc目錄下,rcS放在/etc/init.d目錄中,下面給出這些文件的簡單配置:

inittab文件(init進程根據它來創建其他子進程)

# This is run first except when booting

::sysinit:/etc/init.d/rcS

::askfirst:-/bin/sh

#Stuff to do when restarting the init process

::restart:/sbin/init

# Stuff to do before rebooting

::ctrlaltdel:/sbin/reboot

::shutdown:/bin/umount-a-r

fstab 文件(定義了文件系統的各個“掛載點”,需要與實際的系統相符合):

none/proc proc defaults 0 0

none/dev /pts devpts mode=0622 0 0

tmpfs/dev/shm tmpfs defaults 0 0

sysfs/sys sysfs defaults 0 0

rcS文件

#! /bin/sh

/bin/mount-a

/bin/mkdir/dev/pts

/bin/mkdir-p/var/log

/bin/mkdir-p /var/run

/bin/mount-t devpts devpts/dev/pts

mdev-s

(3) 創建必須的設備節點,該文件必須在/etc目錄下創建

#mknod console c 5 1

#mknod 1 c 1 3

(4) 如果Busybox 采用動態鏈接的方式編譯,還需要把busybox 所需要的動態庫: libcrypt.so.1,libc.so.6,ldlinux.so.2放到lib目錄中。為了節約嵌入式設備的FLASH空間,通常會采用動態鏈接方式,而不采用靜態鏈接方式。

(5) 改變rcS的屬性

#chmod +x /etc/init.d/rcS

5 創建根文件系統映像

所謂創建某種格式的根文件系統,就是將根文件系統內容轉換成選用的這種文件系統格式,或將根文件系統內容安裝在具有這種文件系統格式的設備上。在嵌入式設備中常用的文件類型有Romfs,Jffs 2,Yaffs 2,Ramdisk,Ramfs,Cramfs等,下面主要介紹Jffs 2和Cramfs文件類型。

5.1 Jffs 2根文件系統映像

上面已經建立了根文件目錄myrootfs,然后用命令mkfs.Jffs 2生成Jffs 2文件系統映像,命令源碼包可以從http://sources.redhat.com/Jffs 2/處下載。

#mkfs.Jffs 2-n-s 512-e 16KiB-d myrootfs-o myrootfs.Jffs 2

其中“-n” 表示不要在每個擦除塊上都加上清除標志;“-s 512” 指明一頁大小為512 B;“-e 16 KB”指明一個擦除塊大小為16 KB;“-d” 表示根文件系統目錄;“-o” 表示輸出文件。

5.2 cramfs根文件系統映像

使用命令mkcramfs創建根文件系統映像,這個工具在Linux 源碼包里。

#mkcramfs myrootfs myrootfs.cramfs

6 結 語

Linux支持很多不同的文件系統,在具體使用時應根據設備的用途和配置來選擇文件系統,也可以在一個設備上用多種文件系統。以Cramfs和Jffs 2為例介紹了Linux的根文件系統的制作過程,為其他文件系統的制作過程提供參考,也為Linux下應用程序的開發奠定基礎。

參考文獻

[1]楊潔潔.嵌入式Linux系統的移植及其根文件系統的實現[J].漳州師范學院學報,2005(2):46-48.

[2]陳立定,楊俊輝,陳偉欣.使用Busybox制作Cramfs根文件系統[J].計算機技術與發展,2009,19(4):146-148.

[3]耿增濤,史永宏.Jffs 2文件系統在嵌入式Linux根文件系統中的應用研究[J].微型電腦應用,2008,24(2):44-46.

[4]李亞鋒,歐文盛.ARM嵌入式Linux系統開發從入門到精通[M].北京:清華大學出版社,2007.

[5]查啟鵬,姚國良,張萌.嵌入式Linux下大容量NAND FLASH的Yaffs 2文件系統構建[J].現代電子技術,2007,30(18):55-58.

[6]張勇,裘雪紅.嵌入式Linux下Jffs 2文件系統的實現[J].計算機技術與發展,2006,16(4):138-140.

[7]賴于樹.ARM微處理器與應用開發[M].北京:電子工業出版社,2007.

[8]王集森,劉昊,胡晨.嵌入式Linux中多文件系統的構建[J].單片機與嵌入式系統應用,2003(12):12-15.

[9]韋東山.嵌入式Linux應用開發完全手冊[M].北京:人民郵電出版社,2008.

主站蜘蛛池模板: 亚洲中文久久精品无玛| m男亚洲一区中文字幕| 欧美特黄一免在线观看| 亚洲嫩模喷白浆| 在线va视频| 69视频国产| 日韩精品亚洲一区中文字幕| 国产欧美视频在线观看| 欧美中日韩在线| 怡春院欧美一区二区三区免费| 99久久成人国产精品免费| 免费jjzz在在线播放国产| 无码 在线 在线| 久久久久久高潮白浆| 91国语视频| 欧美综合成人| 九九热精品在线视频| 中文字幕无码制服中字| 91破解版在线亚洲| 欧美精品成人| 久久人搡人人玩人妻精品一| 国产v精品成人免费视频71pao | 国产精品福利导航| 成人午夜视频在线| m男亚洲一区中文字幕| 国产第一福利影院| 日韩精品亚洲一区中文字幕| 青青青伊人色综合久久| 国产粉嫩粉嫩的18在线播放91| av一区二区三区在线观看| 一本久道久综合久久鬼色| 久无码久无码av无码| 欧美三級片黃色三級片黃色1| 国产欧美在线观看一区| 极品性荡少妇一区二区色欲| 在线观看视频99| 嫩草国产在线| 亚洲色图欧美一区| 特黄日韩免费一区二区三区| 国产爽歪歪免费视频在线观看| 日韩无码视频专区| 亚洲中文精品人人永久免费| 秋霞午夜国产精品成人片| 青青草原国产一区二区| 日韩欧美综合在线制服| 亚洲欧洲天堂色AV| 大陆精大陆国产国语精品1024 | 精品国产中文一级毛片在线看 | 欧美无专区| 在线日本国产成人免费的| 无码在线激情片| 国产粉嫩粉嫩的18在线播放91| a天堂视频| 成人久久18免费网站| 九色视频最新网址| 91精品啪在线观看国产91| 国产成在线观看免费视频| 亚洲精品视频免费看| 91九色国产porny| 99成人在线观看| 最新无码专区超级碰碰碰| 97se亚洲| 亚洲日韩在线满18点击进入| 国内精自视频品线一二区| 超清无码一区二区三区| 狠狠色狠狠综合久久| 91色爱欧美精品www| 在线观看精品国产入口| 国产亚洲精品资源在线26u| 成人日韩精品| 亚洲天堂视频在线播放| 免费女人18毛片a级毛片视频| 99久久精品免费观看国产| 国产精品一区二区不卡的视频| 91无码网站| 狠狠色丁香婷婷综合| 日韩天堂视频| 欧美一区福利| 色哟哟国产精品| 欧美一区福利| 成人在线不卡视频| 久996视频精品免费观看|