《第6章 嵌入式文件系統(tǒng)》由會員分享,可在線閱讀,更多相關《第6章 嵌入式文件系統(tǒng)(41頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、,單擊此處編輯母版標題樣式,單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,*,嵌入式文件系統(tǒng),陳文智,浙江大學計算機學院,2012,年,11,月,浙江大學,1,提綱,1,、嵌入式,Linux,文件系統(tǒng)簡介,2,、,Linux,文件系統(tǒng)框架和特性,3,、嵌入式文件系統(tǒng)實驗,實驗一:建立文件系統(tǒng),實驗二:,NFS,文件系統(tǒng)實驗,實驗三:,Samba,介紹與應用,2,1.,嵌入式,Linux,文件系統(tǒng)簡介,嵌入式文件系統(tǒng)與桌面文件系統(tǒng)有較大區(qū)別:,嵌入式文件系統(tǒng)要為嵌入式系統(tǒng)的設計目的服務,不同用途的嵌入式操作系統(tǒng)下的文件系統(tǒng)在許多方面各不相同。,嵌入式,Linux,常用文件系統(tǒng):,第二
2、版擴展文件系統(tǒng)(,Ext2fs,)、,JFFS,和,YAFFS,3,1.1,嵌入式文件系統(tǒng)的設計目標,嵌入式文件系統(tǒng)的設計目標包括:,使用簡單方便,安全可靠,實時響應,接口標注的開放性和可移植性,可伸縮性和可配置性,開放的體系結構,資源有效性,功能完整性,熱插拔,支持多種文件類型,4,1.2,嵌入式,Linux,常用文件系統(tǒng),Flash Memory,簡介,Flash Memory,上的兩種技術,NAND,:串行;順序讀??;適合大容量;通常需,MTD,NOR,:,并行;隨機讀?。贿m合數(shù)據(jù)或程序存儲;,XIP,;,Xsbase,開發(fā)平臺上所使用的閃存,Intel,StrataFlash,Memo
3、ry 28F128J3A,Ext2fs,、,JFFS,和,YAFFS,ext,、,ext2,、,xia,、,vfat,、,minix,、,msdos,、,umsdos,、,proc,、,smb,、,ncp,、,iso9660,、,sysv,、,hpfs,、,affs,、,ufs,、,vfs,等,5,第二版擴展文件系統(tǒng)(,Ext2fs,)的優(yōu)點,Ext2fs,支持達,4 TB,的內存(,Ext,是,2G,)。,Ext2fs,文件名稱最長可以到,1012,個字符。,當創(chuàng)建文件系統(tǒng)時,管理員可以選擇邏輯塊的大?。ㄍǔ4笮】蛇x擇,1024,、,2048,和,4096,字節(jié))。,Ext2fs,實現(xiàn)快速符
4、號鏈接:不需要為此目的而分配數(shù)據(jù)塊,并且將目標名稱直接存儲在索引節(jié)點表中,這使性能有所提高,特別是在速度上。,6,JFFS,和,YAFFS,JFFS,文件系統(tǒng)主要針對,NOR FLASH,設計,是一種基于,Flash,的日志文件系統(tǒng)。,JFFS2,的底層驅動主要完成文件系統(tǒng)對,Flash,芯片的訪問控制,如讀、寫、擦除操作。,YAFFS,主要針對,NAND FLASH,設計,和,JFFS,相比它減少了一些功能。自帶,NAND,芯片驅動,并且為嵌入式系統(tǒng)提供了直接訪問文件系統(tǒng)的,API,。,YAFFS2,是,YAFFS,的改進版本。,7,2.Linux,文件系統(tǒng)框架和特性,現(xiàn)代操作系統(tǒng)都提供多種
5、訪問存儲設備的方法,Linux,文件系統(tǒng)有兩條獨立控制設備驅動的途徑:,通過設備驅動的接口,通過文件管理器接口,8,Linux,文件系統(tǒng)框架,9,3.,文件系統(tǒng)實驗,實驗一建立文件系統(tǒng),建立,JFFS2,文件系統(tǒng),建立,RAMFS,文件系統(tǒng),實驗二,NFS,文件系統(tǒng)實驗,實驗三,Samba,介紹與應用,10,實驗一:,建立文件系統(tǒng),JFFS2,(,1,),JFFS2,在,Linux,中有兩種使用方式:,作為根文件系統(tǒng),作為普通文件系統(tǒng)在系統(tǒng)啟動后被掛載,目錄采用,Ramfs,,當系統(tǒng)斷電后,該目錄所有的數(shù)據(jù)都會丟失。,Linux,下常用文件系統(tǒng)結構:,11,12,實驗一:,建立文件系統(tǒng),JFF
6、S2,(,2,),1,)內核配置,General Setup,項設成 “,root=1f03,rw,console=ttyS0,115200 init=/,linuxrc,”,通過,MTD,驅動在,menuconfig,中調用,flash memory,設備驅動,選擇,CFI Flash device mapped on the XSBASE255 PXA255 board,13,實驗一:,建立文件系統(tǒng),JFFS2,(,3,),2,),JFFS2,映像生成,Jffs2 image,通過,mkfs.jffs2,工具創(chuàng)建成,image,mkfs.jffs2,用法:,-e,選項確定閃存的擦除扇區(qū)大小
7、(通常是,64,K,)。,-p,選項用來在映像的剩余空間用零填充。,-o,選項用于輸出文件,這里是,rootfs.img,利用,bootloader,將生成的,rootfs.img,下載后寫入,flash,再次重起開發(fā)板,內核就能加載,JFFS2,作為根文件系統(tǒng),./mkfs.jffs2 o,rootfs,e 0 x400000 r,root_XSBASE,p-l,14,實驗一:建立文件系統(tǒng),RAMFS,(,1,),RAMFS,是內存文件系統(tǒng),它工作于虛擬文件系統(tǒng)(,VFS,)層,RAMFS,是一個非常巧妙的,利用,VFS,自身結構而形成的內存文件系統(tǒng),15,實驗一:建立文件系統(tǒng),RAMFS,
8、(,2,),1,)使用主機的,loopback,設備來實現(xiàn),loopback,文件系統(tǒng),用,dd,if=/dev/zero of=,ramdisk_img,bs,=1k count=8192,指令創(chuàng)建一個連續(xù)的,8M,大小的空間,將此空間用,mke2fs,格式化,為了對格式化的空間進行,mount,,創(chuàng)建一個目錄,/,tmp,在,tmp,目錄里復制或創(chuàng)建設置文件,util,library,等,將工作目錄進行,umount,,再用,gzip,壓縮,則生成,ramdisk_img.gz,文件,將此加載到,bootloader,,則新的,ramdisk,可用作根文件系統(tǒng)。,16,實驗一:建立文件系統(tǒng)
9、,RAMFS,(,3,),修改一些內核配置,XSBase255,中,setup_initrd,(),的,0 xA1000000,成為,SDRAM,的,ramdisk,地址,,ramdisk,要下載到,Bootloader,中的這個地址,CONFIG_BLK_DEV_RAM_SIZE,是,menuconfig,中設定的“,Default RAM disk size”,大小,修改,Default Kernel command string,為:“,root=/dev/ram,rw,console=ttyS0,115200 init=/,linuxrc,”,。用于重新引導系統(tǒng)。,17,18,19,實
10、驗二,NFS,文件系統(tǒng)實驗(,1,),NFS,是用于在不同機器,不同操作系統(tǒng)之間通過網(wǎng)絡互相分享文件 的,建立,NFS,開發(fā)環(huán)境的工作分為兩個方面:,配置,NFS,服務器和配置客戶端,基本的命令格式,Mount,的基本命令格式如下:,Umount,的基本命令格式:,mount-t type-,rv,-o option,server:pathname,/,mount_point,umount,-,dflnrv,dir|device.,20,實驗二,NFS,文件系統(tǒng)實驗(,2,),配置,NFS,服務端,在,Host PC,上打開,/etc/exports,文件,并進行如下設置:,把,/,mnt/n
11、fs,設置完成后重新開始,NFS,deamon,rootXSBase,home#vi/etc/exports,/,mnt/nfs,(,rw,no_root_squash,),rootXSBase,home#/etc/,rc.d/init.d/nfs,stop,rootXSBase,home#/etc/,rc.d/init.d/nfs,start,21,實驗二,NFS,文件系統(tǒng)實驗(,3,),配置,NFS,客戶端,NFS,客戶端是開發(fā)板,所以要讓開發(fā)板上的內核支持,NFS,,必須重新配置內核生成,zImage,鏡像文件,并下載到板子上。,通過,make,menuconfig,指令在,kernel
12、,設置窗進行,NFS,設置,menuconfig,窗口打開后,確認,NFS,設置是否被選上,重新編譯內核,新的內核下就可以使用,nfs,命令了,File systems -,Network File Systems -,NFS file system support,*Provide NFSv3 client support,Root file system on NFS,22,實驗二,NFS,文件系統(tǒng)實驗(,4,),掛載,NFS,文件系統(tǒng),開發(fā)板上進行,mount,操作,把,PC,上的某個目錄掛載上來:,把,Host PC,的,/,mnt/nfs,目錄,mount,到開發(fā)板的,/,mnt,目
13、錄下使用。,Ip,192.168.1.1,是,PC,的,ip,。,接下來就可以在新,mount,上來的目錄下做各種操作,掛載工作完成,rootxsbase255#mount t,nfs,192.168.1.1:/mnt/nfs /,mnt,rootxsbase255#,cd,/,mnt,23,實驗二,NFS,文件系統(tǒng)實驗(,5,),如果出現(xiàn)沒法,mount,上去的情況,可以按照以下步驟進行檢查:,用,rpcinfo,-p,server_name,去查看此,server,是否存在,用,rpcinfo,-u,server_name,mount,查看,mountd,daemon,是否有在,serve
14、r,上執(zhí)行,假如,server,都沒問題,檢查,server,和,client,之間的網(wǎng)線連接,在,client,上用,ps,ax,查看,portmap,和對應的,NFS daemons,是否運行,打開服務端,PC,上的,/,var/lib/nfs/rmtab,文件,,清,空內容,重起,NFS,服務,24,實驗二,NFS,文件系統(tǒng)實驗(,6,),加載,NFS,為根文件系統(tǒng),1,)重新配置內核,在,General setup,里面重新設置,Default kernel command string,的值,在,Network File Systems,選項中需要選中“,Root file syst
15、em on NFS”,在,Block devices,選項中把“,RAM disk support”,選項去除,選中“,Network block device support”,配置完內核,重新,make,zImage,,生成新的鏡像,25,26,27,28,2,)配置服務端,PC,/,tftpboot,目錄下新增子目錄,pxa255,,用作新的根文件系統(tǒng),把原文件系統(tǒng)下的文件拷貝到,/tftpboot/pxa255,中,重新編輯,/etc/exports,文件如下:,重新啟動,NFS,服務,$vi/etc/exports,/tftpboot/pxa255(,rw,no_root_squas
16、h,),29,3,)重起開發(fā)板,使用,tftp,協(xié)議加載新的內核鏡像,系統(tǒng)啟動后,使用,boot,命令直接引導,4,)確認新的根目錄是否是,PC,端的,/tftpboot/pxa255,目錄,30,實驗三,Samba,介紹與應用,Samba,介紹,Samba,是一組軟件包,使,Linux,支持,SMB,(服務消息塊)協(xié)議,該協(xié)議由,TCP/IP,實現(xiàn),它是,windows,網(wǎng)絡文件和打印共享基礎,samba,的核心是兩個守護進程,smbd,和,nmbd,程序,在服務器啟動到停止期間持續(xù)運行。,Smbd,進程的作用是處理到來的,SMB,軟件包,為使用該軟件包的資源與,Linux,進行協(xié)商,,nmbd,進程使其它主機(或工作站)能瀏覽,Linux,服務器。,一個完整的,smb.conf,一般由,Global settings,和,share Definitions,兩部分組成,31,思考:使用,BusyBox,構建根文件系統(tǒng),Busybox,是,Debian,GNU/Linux,的大名鼎鼎的,Bruce,Perens,首先開發(fā),。后來又有許多,Debian,developers,貢獻力量,