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

下載本文檔

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

文檔簡(jiǎn)介

1、、什么是文件系統(tǒng) (Filesystem)文件系統(tǒng)是包括在一個(gè)磁盤(pán)(包括光盤(pán)、 軟盤(pán)、閃盤(pán)及其它存儲(chǔ)設(shè)備 )或分區(qū)的目錄結(jié)構(gòu);一個(gè)可應(yīng)用的磁盤(pán)設(shè)備可以包含一個(gè)或多個(gè)文件系統(tǒng); 如果您想進(jìn)入一個(gè)文件系統(tǒng), 首先您 要做的是掛載 (mount) 文件系統(tǒng);為了掛載 (mount) 文件系統(tǒng),您必須指定一個(gè)掛載點(diǎn)。二、主要嵌入式采用的文件系統(tǒng)* Linux 中, rootfs 是必不可少的。 PC 上主要實(shí)現(xiàn)有 ramdisk 和直接掛載 HD(Harddisk , 硬盤(pán) ) 上的根文件系統(tǒng);嵌入式中一般不從 HD 啟動(dòng),而是從 Flash 啟動(dòng),最簡(jiǎn)單的方法 是將rootfs load至U RAM

2、的RAMDisk,稍復(fù)雜的就是直接從Flash讀取的Cramfs,更復(fù)雜的是在Flash上分區(qū),并構(gòu)建JFFS2等文件系統(tǒng)。* RAMDisk將制作好的rootfs壓縮后寫(xiě)入 Flash,啟動(dòng)的時(shí)候由Bootloader load 到RAM, 解壓縮,然后掛載至 /。這種方法操作簡(jiǎn)單,但是在 RAM 中的文件系統(tǒng)不是壓縮的,因此 需要占用許多嵌入式系統(tǒng)中稀有資源 RAM。ramdisk 就是用內(nèi)存空間來(lái)模擬出硬盤(pán)分區(qū) ,ramdisk 通常使用磁盤(pán)文件系統(tǒng)的壓縮存放 在flash中,在系統(tǒng)初始化時(shí),解壓縮到SDRAM并掛載根文件系統(tǒng),在linux系統(tǒng)中,ramdisk有 二種 ,一種就是可以格

3、式化并加載,在 linux 內(nèi)核 2.0/2.2 就已經(jīng)支持 ,其不足之處是大小固定 ;另一種是2.4的內(nèi)核才支持,通過(guò),ramfs來(lái)實(shí)現(xiàn),他不能被格式化,但用起來(lái)方便,其大小隨所需 要的空間增加或減少 ,是目前 linux 常用的 ramdisk 技術(shù) .* initrd 是 RAMDisk 的格式, kernel 2.4 之前都是 image-initrd , Kernel 2.5 引入了 cpio-initrd ,大大簡(jiǎn)化了 Linux 的啟動(dòng)過(guò)程,附合 Linux 的基本哲學(xué): Keep it simple, stupid(KISS). 不過(guò) cpio-initrd 作為新的格式,還沒(méi)

4、有經(jīng)過(guò)廣泛測(cè)試,嵌入式 Linux 中主要采 用的還是 image-initrd 。* Cramfs 是 Linus 寫(xiě)的很簡(jiǎn)單的文件系統(tǒng), 有很好的壓縮綠, 也可以直接從 Flash 上運(yùn)行,不須load到RAM中,因此節(jié)約了RAM。但是Cramfs是只讀的,對(duì)于需要運(yùn)行時(shí)修改的目錄 (如: /etc, /var, /tmp) 多有不便,因此,一般將這些目錄做成 ramfs 等可寫(xiě)的 fs。* SquashFS是對(duì)Cramfs的增強(qiáng)。突破了 Cramfs的一些限制,在 Flash和RAM的使用量方面也具有優(yōu)勢(shì)。不過(guò),據(jù)開(kāi)發(fā)者介紹,在性能上可能不如 Cramfs。這也是一種新方法,在嵌入式系統(tǒng)

5、采用之前,需要經(jīng)過(guò)更多的測(cè)試三、建一個(gè)包含所有文件的目錄1。建一個(gè)目錄 rootfs 用來(lái)裝文件系統(tǒng)2。mkdir bin devetc lib procsbintmpusrvar3. ln -fs bin/busyboxlinuxrc( 使用 busybox)4. 到系統(tǒng) /dev 把所有的 device 打一個(gè)包,拷貝到 dev 下面 ( 最省事的做法 );或者使用 mknod 來(lái)自己建所需要的 device, 我自己用的如下:crw-rw-rw- 1 root root 5, 1 2006-02-24 13:12 consolecrw-rw-rw- 1 root root 5, 64 2

6、006-02-24 13:12 cua0crw-rw-rw- 1 root root 63, 0 2006-02-24 13:12 dk0crw-rw-rw- 1 root root 63, 1 2006-02-24 13:12 dk1drwxr-xr-x 2 root root 4096 2006-02-24 13:12 flashbrw-rw-rw- 1 root root 3, 0 2006-02-24 13:12 hdacrw-rw-rw- 1 root root 36, 10 2006-02-24 13:12 ipseccrw-rw-rw- 1 root root 241, 0 20

7、06-02-24 13:12 ixNpecrw-rw-rw- 1 root root 1, 2 2006-02-24 13:12 kmemcrw-rw-rw- 1 root root 126, 0 2006-02-24 13:12 ledmanlrwxrwxrwx 1 root root 16 2007-09-19 14:08 log -> /tmp/var/log/logcrw-rw-rw- 1 root root 1, 1 2006-02-24 13:12 memcrw-rw-rw- 1 root root 90, 0 2006-02-24 13:12 mtd0brw-rw-rw-

8、1 root root 31, 0 2006-02-24 13:12 mtdblock0brw-rw-rw- 1 root root 31, 1 2006-02-24 13:12 mtdblock1brw-rw-rw- 1 root root 31, 2 2006-02-24 13:12 mtdblock2brw-rw-rw- 1 root root 31, 3 2006-02-24 13:12 mtdblock3brw-rw-rw- 1 root root 31, 4 2006-02-24 13:12 mtdblock4brw-rw-rw- 1 root root 31, 5 2006-02

9、-24 13:12 mtdblock5brw-rw-rw- 1 root root 31, 6 2006-02-24 13:12 mtdblock6crw-rw-rw- 1 root root 90, 1 2006-02-24 13:12 mtdr0crw-rw-rw- 1 root root 1, 3 2006-02-24 13:12 nullcrw-rw-rw- 1 root root 108, 0 2006-02-24 13:12 pppcrw-r-r- 1 root root 5, 2 2006-03-29 15:56 ptmxdrwxr-xr-x 2 root root 4096 2

10、006-03-29 15:56 ptscrw-rw-rw- 1 root root 2, 0 2006-02-24 13:12 ptyp0brw-rw-rw- 1 root root 1, 0 2006-02-24 13:12 ram0crw-rw-rw- 1 root root 1, 8 2006-02-24 13:12 randomcrw-rw-rw- 1 root root 5, 0 2006-02-24 13:12 ttycrw-rw-rw- 1 root root 4, 0 2006-02-24 13:12 tty0crw-rw-rw- 1 root root 3, 0 2006-0

11、2-24 13:12 ttyp0crw-rw-rw- 1 root root 4, 64 2006-02-24 13:12 ttyS0crw-rw-rw- 1 root root 1, 9 2006-02-24 13:12 urandomcrw-rw-rw- 1 root root 1, 5 2006-02-24 13:12 zero 舉例: mknod console c 5 1 這樣 crw-rw-rw- 1 root root 5, 1 2006-02-24 13:12 console5。將編譯好的 busybox 拷貝到 /bin 下面,除了 busybox 外,所有其他的命令都是他的

12、 linkash chgrp clear dd echo fgrepgzipiplsmodprobe mv ping pwdsedstty tar true zcatbusyboxchmodcpdfegrepgrep hostname kill mkdir more netstat ping2file rmsh sync tftpumount cat chown date dmesg false gunzipifconfiglnmknod mount pidofpsrmdir sleep sysinfo touch uname所有的命令你可以在 busybox 下面用 make menucon

13、fig 來(lái)增減6。同樣 /sbin 下面也是 busybox 的 linkhalt ifconfiginitinsmodklogdlosetuplsmodmkswapmodprobe reboot rmmod route swapoffswapon7。同樣 /usr/bin 下面也是 busybox 的 linkbasenamedirnameenv free id logger reset tail trtty uptime which xargsawk cut du expr head killallmkfifo sort test tracerouteuniqwcwhoami yes上面幾

14、乎是最全的 link ,各個(gè)看官可以酌情刪減,不過(guò)link 也不占什么空間!8。同樣 /usr/sbin 下面放著所有編譯完的可執(zhí)行文件,具體就不多說(shuō)了9。非常重要之 /lib ,務(wù)必重視找到你編譯環(huán)境的 target 目錄,把需要的 lib 文件先用 strip 壓縮 (非 target 目錄下的, 而 已編譯環(huán)境提供的 strip) ,先把最基本的 libc, ld 等等,必須同樣做跟 target/lib 里面一樣的 link。然后根據(jù)特定的應(yīng)用加相應(yīng)的lib,不要把不用的加進(jìn)去,lib比較占空間。10。在 /etc 下面加上需要的配置文件,最最重要的是rcS#!/bin/shexpor

15、t PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/sbin/scriptsUTC=yesmount -n -t procproc /procmount -n -t ramfsramfs /tmpmount -n -t devptsdevpts /dev/pts# build var directories/bin/mkdir -m 0777 /tmp/var/bin/mkdir -m 0777 /var/lock/bin/mkdir -m 0777 /var/log/bin/mkdir -m 0777 /var/run/bin/mkdir -m 0777 /v

16、ar/tmp#/bin/mkdir -m 0777 /tmp/etc#/bin/cp -a /usr/etc/* /etc#/bin/cp -a /usr/dev/* /dev/# loads the NPE ethernet modules into the kernel.insmod /lib/modules//intel/ixp400.ko# Firmware code for NPE Engine.cat /etc/IxNpeMicrocode.dat > /dev/ixNpeinsmod /lib/modules//intel/ixp400_et

17、h.ko netdev_max_backlog=500insmod /lib/modules/led.koinsmod /lib/modules/push_button.ko 下面的具體應(yīng)用沒(méi)有再舉例加上了,這個(gè)是系統(tǒng) init 必須的。其他的情況類似如此了,下面里面給了一個(gè)lunksys的GPL項(xiàng)目的target。四、生成一個(gè) ramdisk#!/bin/shMODULE_NAME=ramdiskRAMPATH='pwd'TMPPATH=$RAMPATH/tmpSOURCE=$RAMPATH/./targetif ! -d $TMPPATH thenmkdir $TMPPAT

18、Hfiif 'whoami' != 'root' then echo "You should run the shell as root, Please rerun as a root."echo "Aborting."exit 1fi# Clear in tmp pathrm -rf $TMPPATH/tmpmntrm -rf $TMPPATH/ramrootfsmkdir $TMPPATH/tmpmnt# Clear the old ramdiskrm -f $RAMPATH/$MODULE_NAME# Make a temp file which size is suitabledd if=/dev/zero of=$TMPPATH/ramrootfsbs=1k count=6144# Create a ext2 filesystemmk

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論