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

嵌入式Linux根文件系統(tǒng)的研究

2010-04-12 00:00:00陳海燕任松巖
現(xiàn)代電子技術(shù) 2010年4期

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

關(guān)鍵詞:嵌入式Linux;Jffs 2;Cramfs;根文件系統(tǒng)

中圖分類號:TP311文獻(xiàn)標(biāo)識碼: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 引 言

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

1 文件系統(tǒng)層次標(biāo)準(zhǔn)

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

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

嵌入式Linux是標(biāo)準(zhǔn)Linux的裁剪,可以根據(jù)不同的用途對FHS進(jìn)行必要的裁剪。例如/home,/root是在多用戶時才有作用,在嵌入式系統(tǒng)中,如手持式智能終端等單用戶設(shè)備是不需要這些目錄的。

2 FLASH文件系統(tǒng)

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

表1 根文件系統(tǒng)頂層目錄

目錄名內(nèi)容

bin提供基本的用戶命令庫

boot用于BootLoader的靜態(tài)文件

dev設(shè)備或其他的特殊文件

etc系統(tǒng)配置文件

home多個用戶的主目錄

lib基本的系統(tǒng)庫

mnt用于臨時掛載的文件系統(tǒng)

opt可選擇的軟件包

proc內(nèi)核虛擬文件系統(tǒng)和進(jìn)程信息

root根用戶的主目錄

sbin基本的系統(tǒng)管理命令庫

tmp臨時文件

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

var一些變化的實(shí)例和工具

2.1 Cramfs文件系統(tǒng)

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

2.2 Jffs 2文件系統(tǒng)

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

3 Busybox的配置

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

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

#tar-xjvf busybox-1.7.0.tar.bz2

#cd busybox-1.7.0

#make menuconfig

#make

#make install

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

4 創(chuàng)建根文件系統(tǒng)

Busybox已經(jīng)生成了根文件系統(tǒng)的三個重要的文件,其他的根目錄文件要根據(jù)嵌入式設(shè)備的具體功能來對FHS進(jìn)行裁剪,具體步驟如下:

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

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

inittab文件(init進(jìn)程根據(jù)它來創(chuàng)建其他子進(jìn)程)

# 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 文件(定義了文件系統(tǒng)的各個“掛載點(diǎn)”,需要與實(shí)際的系統(tǒng)相符合):

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) 創(chuàng)建必須的設(shè)備節(jié)點(diǎn),該文件必須在/etc目錄下創(chuàng)建

#mknod console c 5 1

#mknod 1 c 1 3

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

(5) 改變rcS的屬性

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

5 創(chuàng)建根文件系統(tǒng)映像

所謂創(chuàng)建某種格式的根文件系統(tǒng),就是將根文件系統(tǒng)內(nèi)容轉(zhuǎn)換成選用的這種文件系統(tǒng)格式,或?qū)⒏募到y(tǒng)內(nèi)容安裝在具有這種文件系統(tǒng)格式的設(shè)備上。在嵌入式設(shè)備中常用的文件類型有Romfs,Jffs 2,Yaffs 2,Ramdisk,Ramfs,Cramfs等,下面主要介紹Jffs 2和Cramfs文件類型。

5.1 Jffs 2根文件系統(tǒng)映像

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

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

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

5.2 cramfs根文件系統(tǒng)映像

使用命令mkcramfs創(chuàng)建根文件系統(tǒng)映像,這個工具在Linux 源碼包里。

#mkcramfs myrootfs myrootfs.cramfs

6 結(jié) 語

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

參考文獻(xiàn)

[1]楊潔潔.嵌入式Linux系統(tǒng)的移植及其根文件系統(tǒng)的實(shí)現(xiàn)[J].漳州師范學(xué)院學(xué)報,2005(2):46-48.

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

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

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

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

[6]張勇,裘雪紅.嵌入式Linux下Jffs 2文件系統(tǒng)的實(shí)現(xiàn)[J].計算機(jī)技術(shù)與發(fā)展,2006,16(4):138-140.

[7]賴于樹.ARM微處理器與應(yīng)用開發(fā)[M].北京:電子工業(yè)出版社,2007.

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

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

主站蜘蛛池模板: 国产69精品久久| 亚洲美女一级毛片| 亚洲天堂.com| 四虎精品国产AV二区| 久久77777| 国产午夜无码专区喷水| 波多野结衣无码视频在线观看| 欧美专区在线观看| 亚洲欧美精品一中文字幕| 国产区免费精品视频| 视频二区中文无码| 亚洲视频四区| 亚洲天堂免费在线视频| 亚洲无码电影| aaa国产一级毛片| 精品国产免费人成在线观看| 97成人在线视频| 日韩a级毛片| 国产成人亚洲毛片| 国产小视频免费| 天堂成人在线| 色成人综合| 国产99视频在线| 国产一区二区三区在线精品专区 | 亚洲高清资源| 19国产精品麻豆免费观看| 欧美日韩第二页| 日韩av无码精品专区| 亚洲欧美一区二区三区图片 | 不卡午夜视频| 91视频日本| 国产99免费视频| 欧美一区二区自偷自拍视频| 欧美人与动牲交a欧美精品| 久久国产精品夜色| 亚洲制服中文字幕一区二区| 欧美性爱精品一区二区三区 | 99性视频| 日韩精品毛片人妻AV不卡| 色亚洲成人| 日韩精品久久久久久久电影蜜臀 | 2021天堂在线亚洲精品专区| 国产91在线|日本| 精品91视频| 精品亚洲国产成人AV| 久久黄色免费电影| 国产女同自拍视频| 精品视频91| 亚洲欧美日韩另类在线一| 国产国产人成免费视频77777| 欧美日韩亚洲国产主播第一区| 成人国产一区二区三区| 亚洲精品卡2卡3卡4卡5卡区| 亚洲自拍另类| 国产成人精品亚洲日本对白优播| 伊人久久久大香线蕉综合直播| 亚洲美女视频一区| 亚洲欧洲国产成人综合不卡| 欧美亚洲中文精品三区| 伊人丁香五月天久久综合| 美女国内精品自产拍在线播放 | 亚洲三级a| 欧美区国产区| 国产人成在线观看| 久久久久亚洲av成人网人人软件| 福利小视频在线播放| 中文国产成人久久精品小说| 久久精品国产精品国产一区| 亚洲精品中文字幕午夜| 亚洲三级视频在线观看| 国产亚洲精久久久久久久91| 国产97区一区二区三区无码| 日韩精品无码免费一区二区三区| 大香伊人久久| 成人午夜免费观看| 青草精品视频| 欧美黄网在线| 五月激情婷婷综合| 亚洲男人在线| 无码有码中文字幕| 亚洲永久免费网站| 综合色天天|