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