久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

各種文件系統(tǒng)

 望穿墻 2016-04-20

首先,,所謂文件系統(tǒng)就是用戶程序和文件的集合,,在LINUXPC機(jī)上放到一個統(tǒng)一的目錄下,然后通過一個工具打包成一個image文件,,這通常是個壓縮的過程,。然后燒制到板子上后,LINUX內(nèi)核啟動完成后,,會逐個掛接這些文件系統(tǒng)映象文件并做解包的工作,,當(dāng)然第一個掛接的就是rootfs了,,有了rootfs并提供了SHELL之后,就可以通過mount這個SHELL命令來掛載其它FS了,。
     所以,,若用戶要添加自己的程序到文件系統(tǒng)的image里面去,,就是把自己的程序或文件復(fù)制到這個FSPC LINUX上的目錄里面去,,然后重新打包生成image,,這樣你的東東就加進(jìn)去了,以后就是下載和燒寫的問題了,。
那么具體在做把自己的程序或文件復(fù)制到這個FSPC LINUX上的目錄里面去這個步驟的時候,,不同的文件系統(tǒng)就略有區(qū)別了:
例如您的程序是一個可執(zhí)行程序hello,,放在/目錄下面:
對于RAMDISK
它是要先在PC上解壓到一個目錄上的
mkdir /mydir
mount –o loop ramdisk.image /mydir
cp /hello /mydir
umount mydir
gzip ramdisk.image
這樣就加入了

對于JFFS2,,則不要解壓原有的jffs2.img,而是直接往原來的目錄里面添加即可:
注意:下面的這個jffs2_dir是你的軟件包里面原來就有的,,例如HHARM9-EDU就是
/HHARM9-EDU/Images/backup/jffs2目錄,,這個目錄里面原來就有我們默認(rèn)添加的一些文件和目錄,你只要把自己的程序復(fù)制進(jìn)去即可,。
當(dāng)然了,,若你的軟件包里面沒有提供我們原來的這個目錄,那也沒關(guān)系,,您完全可以自己重新
mkdir /jffs2_dir
這樣做就是你新做的jffs2.img里面除了你剛剛添加的hello外沒有任何目錄和文件,,而這完全可以工作,啟動后自己添加即可,。
mkfs.jffs2 d  /jffs2_dir  o  jffs2.img
這個mkfs.jffs2工具是要額外提供的,,如果您沒有,可發(fā)信索取,。

對于CRAMFS
JFFS2完全相同的做法,,你也完全可以自己
mkdir /cramfs_dir
mkcramfs /cramfs_dir cramfs.img
當(dāng)然了,和JFFS2不同的是,,它是只讀的,,你在PC機(jī)上添加了什么,到板子上就只能有什么,,不能再動態(tài)創(chuàng)建目錄和復(fù)制進(jìn)去文件了,,要添加必須重做cramfs.img燒 寫到FLASH上才行,。
這個mkcramfs的工具是REDHAT LINUX自帶的。

對于uClinux上用的ROMFS:
genromfs -v -V "ROMdisk" –f romfs.img –d romfs_dir
當(dāng)然了,,這個romfs目錄是任何一個uClinux-dist包里面都會默認(rèn)帶有的目錄,。

romfs, cramfsramdisk

cramfsromfs只是一個文件系統(tǒng)類型,ramdisk相當(dāng)于一塊硬盤空間,,可以理解為在內(nèi)存中虛擬出一塊硬盤來,,所以它上面就可以有你 linux支持的各種文件系統(tǒng)什么的。所以你問的,,它和romfscramfs確實不是一個層次的概念,。 ^-^恭喜你,你答對了,,加10
cramfs是只讀壓縮的文件系統(tǒng),,文件系統(tǒng)類型可以是ext2ext3,,什么的,
制作方法: 假如你的根文件系統(tǒng)的目錄是 rootfs (你將來要用到的所有的文件就在這里)
like this mkcramfs rootfs rootfs.cramfs 就搞定了,。如名字所言,,它是只讀壓縮,所以比較省空間,,如果你的flash比較小,,就用這個吧! 系統(tǒng)啟動后,,kernel把他load到內(nèi)存中,,解壓,所以比較占內(nèi)存,??茨愕男枰恕?

ramdisk呢,?這個用的比較多,,ramdisk相當(dāng)于一塊硬盤空間,可以理解為在內(nèi)存中虛擬出一塊硬盤來,,所以它上面就可以有你linux支持的各種文件系統(tǒng)什么的,。所以你問的,它和romfscramfs確實不是一個層次的概念,。 關(guān)鍵是以后,,在ramdisk里面可以寫,這是一個和cramfs重要的區(qū)別了,。
具體制作方法:
dd if=/dev/zero of=rootfs.img bs=1M count=一個整數(shù)(看你的實際的需要的空間了,,一般也就10M)
把它格式化為你需要的文件系統(tǒng),,比如 ext2 ,ext3 ,reiserfs 什么的,
比如ext3 : mkfs.ext3 root.img
然后把它mount到某個目錄,,比如tmp 吧:
mount -t ext3 /tmp/

然后,,你的文件系統(tǒng)所在的目錄的所有文件copytmp目錄下: 比如你的文件系統(tǒng)目錄在/root/rootfs-test :
cp -av /root/rootfs-test/* /tmp/ (這里注意一個細(xì)節(jié):copy的時候,用參數(shù)a表示copy全部,,v表示只copy鏈接本身,,不copy它指向的內(nèi)容,這點很關(guān)鍵哦!) ,另外,,有的人常用:cp -pdR 這個你也可以試試,,意思就是原來什么樣,copy過去就什么樣,。

然后卸載/tmp/ 目錄就好了,。
umount /tmp

一般的情況下,ramdisk是要壓縮的,,對于上面的生成好的img,, rootfs.img ,你可以這樣壓縮:
gzip -v9 rootfs.img 會自動生成rootfs.img.gz ,,一般壓縮率,,30%吧,!

romfs
uCLinux系統(tǒng)采用ROMFS文件系統(tǒng),,這種文件系統(tǒng)相對于一般的ext2文件系統(tǒng)要求更少的空間,??臻g的節(jié)約來自于兩個方面:首先內(nèi)核支持ROMFS文件系統(tǒng)比支持ext2文件系統(tǒng)需要更少的代碼,;其次ROMFS文件系統(tǒng)相對簡單,,在建立文件系統(tǒng)超級塊(superblock)需要更少的存儲空間,。ROMFS文件系統(tǒng)不支持動態(tài)擦寫保存,,對于系統(tǒng)需要動態(tài)保存的數(shù)據(jù)采用虛擬RAM盤的方法進(jìn)行處理(RAM盤將采用ext2文件系統(tǒng)).
可以從http://romfs./下載生成romfs的工具genromfs

個人經(jīng)驗: 你自己要創(chuàng)建文件系統(tǒng),一般是先建一個目錄在里面建一些常用的目錄,,比如bin ,sbin ,root ,etc lib 什么的,,正如樓上所言,lib比較煩,,需要考慮你要用的程序需要的動態(tài)鏈接庫,, 建議你先搞一個別人的,拿過來,,參考,,自己去改,一開始,,自己去作肯定要瘋的,。

你可以到網(wǎng)上搜搜的。 有個網(wǎng)站,,http://user-mode-linux./  這個里面提供了一些簡單的文件系統(tǒng),,你可以拿過來,,自己改改。 這是個比較快的方法,,其實,,里面要改基本是:
/etc/rc.d/** 下面的啟動腳本。
lib/下的一些動態(tài)鏈接庫,。
shell busybox知道嗎,? 利用這個,可以省很多空間,, 到google上搜搜

 

在內(nèi)存上建立自己的文件系統(tǒng)

目的:學(xué)習(xí)內(nèi)核數(shù)天,,躍躍欲試

決定在RAM上建立一個ROOT文件系統(tǒng),從而對Linux的啟動過程,,掛載root文件系統(tǒng)加深理解.

參考:www. 上的電子期刊第一期《走進(jìn)Linux 操作系統(tǒng)》的一個試驗

操作步驟:
先解釋下幾個文章中提到的文件

work.tar.gz - 一些腳本,,用于生成root文件系統(tǒng),initrd文件系統(tǒng)以及它們的鏡像文件比較有用的就是mkimage.sh,,其它兩個生成rootsinitrdfs的好像不太好用
rootfs.tar - 現(xiàn)成的rootfs文件系統(tǒng)
initrdfs.tar - 現(xiàn)成的initrdfs文件系統(tǒng)

準(zhǔn)備工作是把work.tar.gz 解壓到/root/kernel/,,形成/root/kernel/work工作目錄

1 創(chuàng)建Root文件系統(tǒng)內(nèi)容直接用文章提供的做好的rootfs,解壓就可以了
2 生成rootfs文件在Ram中的鏡像ramlinux.img.gz

(1). /etc/lilo.conf當(dāng)前啟動的內(nèi)核鏡像的下面加入append="ramdisk_size=20000"使其支持在Ram中建立20M的文件系統(tǒng)區(qū)域然后運(yùn)行liloreboot

(2). dd if=/dev/zero of=/dev/ram bs=1k count=20000

#/dev/ram文件對應(yīng)的設(shè)備清零,,目的是提高后來的壓縮率
mke2fs –m0 /dev/ram 20000         #建立文件系統(tǒng),,其對應(yīng)的物理設(shè)備就是/dev/ram 
mount /dev/ram /mnt/ #mount進(jìn)文件系統(tǒng)
cp –av /rootfs/* /mnt/ram

#rootfs文件數(shù)據(jù)拷貝到新建的文件系統(tǒng)上,也即/dev/ram對應(yīng)的物理設(shè)備上運(yùn)行df ,注意1k-blocks一欄中/dev/ram的數(shù)值,假定為ramsize

umount /dev/ram
dd if=/dev/ram of=ramlinux.img bs=1k count=ramsize
gzip –9v ramlinux.img
3 創(chuàng)建initrd文件夾此步驟可以直接把initrdfs解壓,修改其中linuxrc文件的內(nèi)容,,使其指向的文件夾是正確的

4 生成initrd鏡像

和第二步類似

或者直接執(zhí)行腳本mkimage.sh生成initrd.img.gzramlinux.img.gz
5 拷貝initrd.img.gz/boot目錄下
修改/etc/lilo.conf
6 lilo reboot

它的工作原理是:
1) 硬件啟動后,掛initrd到內(nèi)存里
2initrd作為小的系統(tǒng)做一些工作,,把做好的rootfs鏡像寫入到內(nèi)存中去,,也即是/dev/ram對應(yīng)的文檔
3) 掛載文件/dev/ram設(shè)備對應(yīng)的文件作為root目錄完成

 

Linux文件系統(tǒng)

1、  Linux文件系統(tǒng)概述

Linux中用戶能看到的文件空間是一個單樹狀結(jié)構(gòu)的,,該樹的根在頂部,,稱為根目錄(root,用“/”表示。文件空間中的各種目錄和文件從樹根向下分支,。

對用戶而言,,該目錄樹就象一個無縫的整體,用戶能看見的是緊密聯(lián)系的目錄和文件,。實際上,,文件樹中的許多目錄存放在一個磁盤、不同磁盤甚至不同的計算機(jī)的不同分區(qū)中,。當(dāng)磁盤分區(qū)之一被“mount”到文件樹中稱為“安裝點”(mount point)的目錄上時,,就成為了該目錄樹的一個組成部分。

當(dāng)windows 98C:盤(其本身是FAT32文件系統(tǒng))未被安裝時,,/mnt/winc是根文件系統(tǒng)中的一個普通子目錄(格式可能是Linux  EXT2/3),,里面可以存放任何數(shù)據(jù),。而FAT32格式的C盤上的數(shù)據(jù)獨立于Linux系統(tǒng),不能被Linux系統(tǒng)所讀取,。安裝(mount)之后,,/mnt/winc/就成了安裝點,其中所有的數(shù)據(jù)都將被FAT32文件系統(tǒng)所屏蔽,,用戶只能看到FAT32文件系統(tǒng)中存放的數(shù)據(jù),,只能將該文件系統(tǒng)卸載之后,/mnt/winc中原有的數(shù)據(jù)才會出現(xiàn),,不會丟失,。

Linux正是通過這種將不同文件系統(tǒng)裝配在一起的技術(shù),實現(xiàn)了個文件系統(tǒng)之間的無縫連接,,為用戶的操作提供了極大的方便,,用戶也不用費(fèi)心思去考慮光盤驅(qū)動器的盤符是什么了。

2,、Linux文件系統(tǒng)組成

Linux操作系統(tǒng)由一些目錄和文件組成,。根據(jù)安裝的方式不同,這些目錄可能是不同的文件系統(tǒng),。通常,,一個系統(tǒng)可以有多個文件系統(tǒng)組成:根分區(qū)文件系統(tǒng)(/),和安裝在/usr下的文件系統(tǒng),,還有其他安裝在/home,、/var文件系統(tǒng)。其中根文件系統(tǒng)必須是Linux ext2/3.順便提一下最簡單的Linux操作系統(tǒng)分區(qū)是/和交換分區(qū)(SWAP),。

根目錄中包含了組成根目錄的內(nèi)容,,也為其他的文件系統(tǒng)提供了安裝點。

/dev目錄  包含所有的設(shè)備文件,、這些設(shè)備式系統(tǒng)設(shè)置的,、一般都和系統(tǒng)的硬件有一定相互對應(yīng)關(guān)系的特殊文件,分為快設(shè)備,,字符設(shè)備和特殊設(shè)備,,一般不要隨便更改和刪除

/bin 目錄  包含稱為二進(jìn)制文件的可執(zhí)行程序

/sbin目錄  /bin目錄類似,這些文件往往是用來進(jìn)行系統(tǒng)管理的,,一般只有root才有運(yùn)行的權(quán)限

/etc 目錄  Linux系統(tǒng)的絕大部分配置文件都存放在這里,,這些文件是系統(tǒng)更符合用戶的需要。

/proc 目錄 這實際是一個虛擬的文件系統(tǒng),,使系統(tǒng)啟動是從內(nèi)存中建立的,,用于內(nèi)存讀取數(shù)據(jù)。

/tmp 目錄 用于存放各種臨時文件,這些文件大都是程序運(yùn)行是產(chǎn)生的,,程序結(jié)束時一般將他們刪除

/home目錄 存放一般用戶的個人目錄

/var 目錄 保存大小和內(nèi)容隨時改變的文件,,通常各種系統(tǒng)日志文件放在這里

/lib 目錄 存放系統(tǒng)的各種庫文件,庫文件在編譯程序時會用到,。

/mnt 目錄 為其他的文件系統(tǒng)提供安裝點

/boot 目錄 存放系統(tǒng)啟動時所需的各項文件

/root 目錄 超級用戶的個人目錄,,普通用戶沒有權(quán)限訪問

/lost+found目錄 :放置一些垃圾文件

/usr目錄 一般用戶程序安裝所在的目錄,使系統(tǒng)中最龐大和最重要的目錄,。

3,、 文件系統(tǒng)管理

Linux文件系統(tǒng)管理最上層模塊是文件系統(tǒng)。系統(tǒng)啟動時,,必首先裝入“根”文件系統(tǒng),,然后根據(jù)/etc/fstab中制訂,逐個建立文件系統(tǒng),。此外用戶也可以通過mount,、umount操作,隨時安裝和卸載文件系統(tǒng),。

當(dāng)裝入一個文件系統(tǒng)時,,應(yīng)首先向系統(tǒng)核心注冊該系統(tǒng)及其類型。當(dāng)卸載一個文件系統(tǒng)時,,應(yīng)向核心申請注銷該系統(tǒng)和類型,。文件系統(tǒng)的注冊和注銷反映在以vfsmnlist為鏈頭,vfsmntail為鏈尾,,以vfsmount為節(jié)點的單向鏈表中,。從鏈表的每一個vfsmount可以找出一個已注冊的文件系統(tǒng)的信息。文件系統(tǒng)類型的注冊和注銷反映在以file_systems為鏈頭,,以file_system_type為節(jié)點的單向鏈表中,。鏈表中的每一個file_system-type節(jié)點描述了一個已注冊的文件系統(tǒng)類型。

4,、虛擬文件系統(tǒng)(VFS

VFS是物理文件系統(tǒng)與服務(wù)之間的一個接口層,他對每一個Linux文件系統(tǒng)的所有細(xì)節(jié)進(jìn)行抽象,,使得不同的文件系統(tǒng)在Linux核心以及系統(tǒng)中運(yùn)行的其他進(jìn)程看來,,都是相同的。

嚴(yán)格說來,,VFS并不是一種實際的文件系統(tǒng),。他只存在內(nèi)存中,不存在于任何外存空間,。VFS在系統(tǒng)啟動是建立,,在系統(tǒng)關(guān)閉時消亡

VFS的功能包括

記錄可用的文件系統(tǒng)的類型

將設(shè)備同對應(yīng)的文件系統(tǒng)聯(lián)系起來

處理一些面向文件的通用操作

涉及到針對文件系統(tǒng)的操作時,VFS把他們映射到與控制文件、目錄,、以及inode相關(guān)的物理文件系統(tǒng),。

5、安裝和卸載文件系統(tǒng)

要在Linux目錄樹中安裝一個文件系統(tǒng),,必須要有實際要安裝的硬盤分區(qū),、光盤或軟盤,并且作為該文件系統(tǒng)安裝點的目錄必須是實際存在的,。

手工安裝文件系統(tǒng),。命令是mount [options] <device> <mount_point>,device是要安裝的實際設(shè)備文件,mount_point是安裝點,。Optionsmount接收的命令行選項,。如果用戶沒有給出所需的選項,mount將嘗試從相關(guān)的/etc/fstab文件中查找,。

Mount的常用選項有:

1,、-r以只讀方式安裝文件系統(tǒng)。

2,、-w以可讀寫方時安裝文件系統(tǒng),。

3-v verbose模式,,mount將給出許多信息以報告其工作狀態(tài)

4,、-a 安裝/etc/fstab文件中所列的所有文件系統(tǒng)

5-o list_of_options選項列表,,各選項之間用逗號隔開,。

6-t file_type指定要安裝的文件系統(tǒng)類型,。

直接裝載文件系統(tǒng)的最基本命令就是 mount –t <fs_type> <device> <mount_point>, -t選項接受auto作為其參數(shù),,這使得mount能夠自動檢測文件系統(tǒng)類型。

卸載文件系統(tǒng)的命令是umount,由四種基本的命令格式

umount <device>

umount <mount_point>

umount –a

umount –t fs_type

前兩種方式卸下由devicemount_point指定的文件系統(tǒng),,第三種形式卸下所有的文件系統(tǒng),,第四種方式卸下制定類型的文件系統(tǒng)。Umount不能卸下正在使用的文件系統(tǒng),,當(dāng)然系統(tǒng)的根分區(qū)也不能卸載,,知道系統(tǒng)退出Linux的運(yùn)行狀態(tài)。

 

合并內(nèi)核與romfs(以及獨立的內(nèi)核與romfs)映象文件的方法

image.ramromfs.img的分兩次下載可能已經(jīng)使您覺得很麻煩了,,下面是將兩者合并為一個文件(image.ram)下載的方法,,

修改linux2.4.x/driver/block/blkmem.c文件:

#ifdef CONFIG_BOARD_MBA 44
{0, romfs_data, -1}, //{0, 0xc500000, -1},
#endif

重新編譯,就會生成一個較大的合并了的image.ram了,。

05429)現(xiàn)在的bootloaderuClinux源碼包都是支持合并映像文件的了,,但有部分做應(yīng)用的用戶使用兩者分離的更為方便,,因此現(xiàn)在我們也提供這樣的bootloader,請需要的用戶來信索取,。
在這個bootloader下燒錄uClinux映象文件,,按照以下地址:
44bapp.bin下載到0xC008000;
bootloader.bin下載到0xC200000;
imagerom.bin下載到0xC220000;
romfsimg.bin下載到0xC320000;
然后從0xC008000運(yùn)行,即開始燒錄,。
如果您需要頻繁修改romfsimag,但內(nèi)核部分不變,,可以僅僅將imagerom燒錄到flash中:
44bapp.bin下載到0xC008000;
bootloader.bin下載到0xC200000;
imagerom.bin下載到0xC220000;
0xC008000運(yùn)行,開始燒錄,。
以后只要將romfsimg.bin下載到0xC500000,然后用選項7啟動uClinux即可,。
注意要產(chǎn)生獨立的內(nèi)核和文件系統(tǒng),將uClinux/linux-2.4.x/drivers/block/blkmem.c文件中的:
#ifdef CONFIG_BOARD_MBA44
{0, romfs_data, -1}, //{0, 0xc500000, -1},
#endif
改為
#ifdef CONFIG_BOARD_MBA44
{0, 0xc500000, -1},
#endif
即可,。


    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點,。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多