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

下載本文檔

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

文檔簡介

1、、什么是文件系統(tǒng) (Filesystem)文件系統(tǒng)是包括在一個(gè)磁盤(包括光盤、 軟盤、閃盤及其它存儲(chǔ)設(shè)備 )或分區(qū)的目錄結(jié)構(gòu);一個(gè)可應(yīng)用的磁盤設(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 , 硬盤 ) 上的根文件系統(tǒng);嵌入式中一般不從 HD 啟動(dòng),而是從 Flash 啟動(dòng),最簡單的方法 是將rootfs load至U RAM

2、的RAMDisk,稍復(fù)雜的就是直接從Flash讀取的Cramfs,更復(fù)雜的是在Flash上分區(qū),并構(gòu)建JFFS2等文件系統(tǒng)。* RAMDisk將制作好的rootfs壓縮后寫入 Flash,啟動(dòng)的時(shí)候由Bootloader load 到RAM, 解壓縮,然后掛載至 /。這種方法操作簡單,但是在 RAM 中的文件系統(tǒng)不是壓縮的,因此 需要占用許多嵌入式系統(tǒng)中稀有資源 RAM。ramdisk 就是用內(nèi)存空間來模擬出硬盤分區(qū) ,ramdisk 通常使用磁盤文件系統(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)核才支持,通過,ramfs來實(shí)現(xiàn),他不能被格式化,但用起來方便,其大小隨所需 要的空間增加或減少 ,是目前 linux 常用的 ramdisk 技術(shù) .* initrd 是 RAMDisk 的格式, kernel 2.4 之前都是 image-initrd , Kernel 2.5 引入了 cpio-initrd ,大大簡化了 Linux 的啟動(dòng)過程,附合 Linux 的基本哲學(xué): Keep it simple, stupid(KISS). 不過 cpio-initrd 作為新的格式,還沒

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

5、采用之前,需要經(jīng)過更多的測試三、建一個(gè)包含所有文件的目錄1。建一個(gè)目錄 rootfs 用來裝文件系統(tǒng)2。mkdir bin devetc lib procsbintmpusrvar3. ln -fs bin/busyboxlinuxrc( 使用 busybox)4. 到系統(tǒng) /dev 把所有的 device 打一個(gè)包,拷貝到 dev 下面 ( 最省事的做法 );或者使用 mknod 來自己建所需要的 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 來增減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è)看官可以酌情刪減,不過link 也不占什么空間!8。同樣 /usr/sbin 下面放著所有編譯完的可執(zhí)行文件,具體就不多說了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)用沒有再舉例加上了,這個(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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(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

提交評論