linux-file system在Unix業(yè)界有一句話叫做一切皆文件這是對Linux_第1頁
linux-file system在Unix業(yè)界有一句話叫做一切皆文件這是對Linux_第2頁
linux-file system在Unix業(yè)界有一句話叫做一切皆文件這是對Linux_第3頁
linux-file system在Unix業(yè)界有一句話叫做一切皆文件這是對Linux_第4頁
linux-file system在Unix業(yè)界有一句話叫做一切皆文件這是對Linux_第5頁
已閱讀5頁,還剩94頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

博創(chuàng)科技嵌入互Linux定義了一個抽象的內(nèi)核級接口,能夠容許集中不同命名空間(給事物取名,并按一種層次解構(gòu)組織他們的形式API(用來便利和操作對象的一套系統(tǒng)調(diào)用安全模型(用來保護,隱藏何共享事物的方案實現(xiàn)(把邏輯模型同實際硬件聯(lián)系到一起的軟件博創(chuàng)科技嵌入互cblf普通文件

博創(chuàng)科技嵌入互Linux中的設(shè)備有2種類型:字符設(shè)備(無緩沖且只能順博創(chuàng)科技嵌入互一般來說,每個設(shè)備在/dev 可以通過cat/proc/devices在/dev下除了字符設(shè)備和塊設(shè)備節(jié)點之外還通常還會存在:FIFO管道、Socket、軟/硬連接、。這博創(chuàng)科技嵌入互設(shè)備文 簡要說01

0=為空設(shè)備號保留1=2=3=5=8=9=11=

任何對該文件的寫入都將作為printk的輸出博創(chuàng)科技嵌入互設(shè)備文 14

RAM0=1=0=1=

第1個RAMdiskinitrd只能使用第2個RAM4block 0=5 其他TTY0=1=

當前TTY7block 對回環(huán)設(shè)備的綁定由mount(8)或losetup(8)處理0=1=

第2博創(chuàng)科技嵌入互設(shè)備文 8 SCSI磁盤(0-0=16=32=

第1個SCSI磁盤(整個磁盤)第2個SCSI磁盤(整個磁盤)第3個SCSI磁盤(整個磁盤分區(qū)表示方法如下(以第3個SCSI磁盤為例33=34=

10 1 135 實時時鐘(RealTime1329

32=33=63=64=65=通用幀緩沖(framebuffer)0=1=

第2

博創(chuàng)科技嵌入互設(shè)備文 89

0=/dev/i2c-1=/dev/i2c-

第1個I2C適配器第2個I2C136- Unix98PTY方法是通過使用適當?shù)膍ount選項(通常是:mode=0620,gid=<"tty"組的將devpts文件系統(tǒng)掛載到 0=1=180 USB

第1個Unix98PTY第2個Unix98PTY96=111=180

USB塊設(shè)備(U盤之類0=8=16=

第1個USB塊設(shè)備第2個USB塊設(shè)備第3個USB塊設(shè)備博創(chuàng)科技嵌入互API創(chuàng)建打開讀寫I/O操作關(guān)閉博創(chuàng)科技嵌入互頭文定義intcreat(constchar*pathname,函數(shù)參數(shù)pathname指向欲建立的文件路徑字符串。creat()open()open(constchar*pathname返回creat()會返回新的文件描述詞,若有錯誤發(fā)生則會返回-1,并把錯誤代碼設(shè)給errno附加creat()無法建立設(shè)備文件,如果需要請使用mknod()博創(chuàng)科技嵌入互頭文定義intopen(constchar*pathname,intintopen(constchar*pathname,intflags,mode_t函數(shù)參數(shù)pathname指向欲打開的文件路徑字符串。下列是參數(shù)flags常用的旗標O_RDONLY以只讀方式打開O_WRONLY以只寫方式打開文O_RDWR以可讀寫方式列的旗標利用OR(|)O_CREAT若欲打開的文件O_TRUNC若文件存在并且以可寫的方式打開時,此旗標會令文件長度清為0,而原來存于該 O_APPEND當讀寫文件時會從文件尾開始移動,也就是所寫入的數(shù)據(jù)會以附加的方式加入到O_NONBLOCK以不可阻斷的方式打開文件,也就是無論有無數(shù) 或等待,都會立即回進程之中返回文件打開成功返回文件的描述符,失敗返回-博創(chuàng)科技嵌入互 ssize_tread(intfd,void*buf,size_tread()會把參數(shù)fd所指的文件傳送count個字節(jié)到buf指針所指的內(nèi)存中。若參數(shù)count為 如果順利read()會返回實際讀到的字節(jié)數(shù),最好能將返回值與參數(shù)count作比較,若返回的 博創(chuàng)科技嵌入互ssize_twrite(intfd,constvoid*buf,size_twrie()如果順利wri-ro中。博創(chuàng)科技嵌入互intioctl(intfd,intrequest,成動返回0。當有錯誤發(fā)生時則返回-1,錯誤代碼存入errno中博創(chuàng)科技嵌入互intclose(int當使用完文件后若已不再需要則可使用close()關(guān)閉該文件,二close()會讓數(shù)據(jù)寫回磁盤并釋放該文件所占用的資源。參數(shù)fd為先前由open()或creat()若文件順利關(guān)閉則返回0,發(fā)生錯誤時返回-1雖然在進程結(jié)束時,系統(tǒng)會自動關(guān)閉已打開的文件,但仍建議自行關(guān)閉文件值博創(chuàng)科技嵌入互博創(chuàng)科技嵌入互文 只讀權(quán)限表示只允許讀其內(nèi)容, 對其做任何的更改操作可執(zhí)行權(quán)限表示允許將該文件作為一個程序執(zhí)行根據(jù)需要把權(quán)限設(shè)置為需要的任何組合。博創(chuàng)科技嵌入互查看文 對文件來說,有三種不同類型的用戶可進行 當用ls-l命令顯示文件或 $ls-lsobsrc.-rw-r--r--1rootroot483997Ju1l517:3lsobsrc.博創(chuàng)科技嵌入互查看文 d:表示是一 ,事實上在ext2fs中 是一個特殊的件-:表示這是一個普l:表示這是一個符 文件,實際上它指向另一個文件 s、p:這些文件關(guān)系到系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)和管道到后9位就是文件的 博創(chuàng)科技嵌入互文 人(g)”、“其它人(o)”的讀(r)、寫(w)、執(zhí)行(x)的權(quán)對普通文件而言,“r”代表可以閱讀文件內(nèi)容,“w”代表對文件而言,"r"代表可以列出所包括的文件,"w"可以在內(nèi)創(chuàng)建或刪除文件(同時需要x權(quán)限),"x"表明可以做為活動。博創(chuàng)科技嵌入互文 組和其他用戶的權(quán)限。有時候,字符似乎過于麻煩,因此還有另法是以數(shù)字來r:對應(yīng)數(shù)值4w對應(yīng)數(shù)值2-:對應(yīng)數(shù)值數(shù)字設(shè)定的關(guān)鍵是mode的取值,將rwx1表示,沒有則用0表示,那么rwxr-xr--則可以表示成111101再將其每三位轉(zhuǎn)換成為一個十進制數(shù),就是754博創(chuàng)科技嵌入互改變文件 自 其他 可 轉(zhuǎn)換成二進制數(shù)就是110110100,再每三位轉(zhuǎn)換成為一個十進制數(shù),就得到664,因此我們執(zhí)行命令: od664按照上面的規(guī)則,rwx合起來就是4+2+1=7。 博創(chuàng)科技嵌入互在文本模式下,可執(zhí) od命令去改變文件 的權(quán)限。我們先執(zhí)行l(wèi)s-l看 內(nèi)的情況[root@localhost~]#ls--rw-r--r-18drwxr-xr-294-r--r--r-110 drwxr-xr-28-rwxr-xr-1115-rwxr-xr-1115-rwxr-xr-1115drwxr-xr-296可以看到當然文件conkyrc.sample文件的權(quán)限是644,然后把這個文件的權(quán)限改成777[root@localhost od777然后ls-l看一下執(zhí)行后的結(jié)果:[root@localhost~]lsl總用量368-18drwxr-xr-294-r--r--r-110 drwxr-xr-28-rwxr-xr-1115-rwxr-xr-1115-rwxr-xr-1115drwxr-xr-296可以看到conkyrc.sample文件的權(quán)限已經(jīng)修改為博創(chuàng)科技嵌入互實現(xiàn)虛擬文件系統(tǒng)ext3fs、ReiserFS、IBMJFS等CD-ROM:ISO嵌入式常用的文件系統(tǒng)博創(chuàng)科技嵌入互 MinixLinux的第一個文件系統(tǒng),有局限,的文件大小是64M字節(jié)19924Linux設(shè)計的文件系統(tǒng)--EXT(ExtendFileSystem)博創(chuàng)科技嵌入互 博創(chuàng)科技嵌入互博創(chuàng)科技嵌入互博創(chuàng)科技嵌入互博創(chuàng)科技嵌入互博創(chuàng)科技嵌入互文件系統(tǒng)VFS(virtualfilesystem)VFS允許Linux支持許多(通常是不同的)文件系統(tǒng),每一個都向VFS表現(xiàn)一個通用的軟件接口。Linux文件系統(tǒng)對于Linux 博創(chuàng)科技嵌入互博創(chuàng)科技嵌入互博創(chuàng)科技嵌入互Mediaext2-Linuxufs-fat-DOSvfat-winhpfs-minix-well….Isofs-CDROMsysv-SysvUnixhfs-Macintoshaffs-AmigaFastFSNTFS-NT’sFS

AFS-Andrewsmbfs-ncpfs-Specialprocfs-umsdos-Unixinuserfs-redirectorto博創(chuàng)科技嵌入互博創(chuàng)科技嵌入互當一個塊設(shè)備文件系統(tǒng)安裝的時候,(包括root文件系統(tǒng)),VFS必須 構(gòu),并把這些信息映射到一個VFS超級塊的數(shù)據(jù)結(jié)構(gòu)VFS博創(chuàng)科技嵌入互 ctionbetweenprocessesandVFS博創(chuàng)科技嵌入互Systemcall mount()umount()sysfs()statfs()fstatfs()ustat()chroot()pivot_root()chdir()fchdir()getcwd()mkdir()rmdir()getdents()readdir()link()unlink()rename()readlink()symlink()chown()fchown()lchown(od()f od()utime()stat()fstat()lstat()access()open()close()creat()umask()

Mount/unmountfilesystemsGetfilesysteminformationGetfilesystemstatisticsChangerootdirectoryManipulatecurrentdirectoryCreateanddestroydirectoriesManipulatedirectoryentriesManipulatedirectoryentriesManipulatesoftlinksModifyfileModifyfileattributesReadfilestatusOpenandclosefiles博創(chuàng)科技嵌入互Systemcall dup()dup2()fcntl()select()poll()truncate()ftruncate()lseek()_llseek()read()write()readv(writev()sendfile()readahead(pread()pwrite()mmap()munmap()madvise()mincore()fdatasync()fsync()sync()msync(flock(

ManipulatefiledescriptorsAsynchronousI/OnotificationChangefilesizeChangefileCarryoutfileI/OoperationsCarryoutfileI/OoperationsSeekfileandaccessitHandlefilememorymapHandlefilememorymapSynchronizefiledataManipulatefilelock博創(chuàng)科技嵌入互UNIXlinkhardlinks硬連–multipledirentrieswithsameinodeequalstatus;firstisnot"real"entryfiledeletedwhenlinkcountgoesto0can'thardlinktodirectories(avoidsoracrosssoftsymbolic)links軟(符號)連–littlefileswithjustaliasesforanothernorestrictions,cyclespossible,danglinglinks博創(chuàng)科技嵌入互?ln/a/os1.txt博創(chuàng)科技嵌入互ln–s/a/os1.txt博創(chuàng)科技嵌入互Linuxmust"knowabout"filesystembeforemultiple(mounted)instancesofeachtypespecial(virtual)filesystems(like/proc)structuringtechniquetotouchkerneldata/proc,/devsockfs,pipefs,tmpfs,rootfs,associatedwithfictitiousblockdevice(major#minor#distinguishesspecialfilesystem博創(chuàng)科技嵌入互 建立的時候,文件系統(tǒng)初始化代碼調(diào)用所有內(nèi)建的文件系的初始化例程當加載一個文件系統(tǒng)模塊的時候,它自身 登記,當卸載的候,它就注銷 個file_system_type數(shù)據(jù)結(jié)構(gòu)代表,這里面包括文件系統(tǒng)的名稱和一個指向它的VFS超級塊的 register_filesystem()/unregister_filesystemaddsfile_system_typeobjecttolinked-listfile_systems(head;kernelglobalvariable)file_systems_lock(rwspinlocktoprotectlist)參見fs/filesystems.cinclude/linux/fs.hfile_system_type博創(chuàng)科技嵌入互file_system_type

博創(chuàng)科技嵌入互檢查/proc/filesystems來查看登記了哪博創(chuàng)科技嵌入互第二代擴展文件系統(tǒng)ext2fs由ReyCard設(shè)計,其目標是為Linux提供一個強大的可擴文件支持標準unix持長文件名,255Configurableblocksizefrom1024to4096ConfigurablenumberofPartitionsblocksintogroups,wheredatablocksandarestoredinadjacentPre-allocatesdatablockstoregularfilesbeforetheyareusedSupports“fast”symboliclinksImplementedforrobustnesswhenupdatingdiskSupportsautomaticconsistencySupportsimmutableandappend-only博創(chuàng)科技嵌入互照塊取整。塊組…塊組…塊組博創(chuàng)科技嵌入互 1(擦除Flash就是把對 塊的內(nèi)容恢復為1),因此,一般情況,向Flash寫入內(nèi)容時,需要先擦除對應(yīng) 區(qū)間,這種擦除是塊(block)為單AFlashFlash2l在嵌入式Linux下,MTD(MemoryTechnologyDevice, 博創(chuàng)科技嵌入互Jffs2:日志閃存文件系統(tǒng)版本2(JournallingFlashFileSystemJFFS文件系統(tǒng)最早是由瑞典AxisCommunications公司基于Linux2.0的文件系統(tǒng),所以JFFS2也可以用在Linux,uCLinux中。 博創(chuàng)科技嵌入互yaffs:YetAnotherFlashFileyaffs/yaffs2是專為嵌入式系統(tǒng)使用NAND型閃存而設(shè)計的一種日型文件系統(tǒng)。與jffs2相比,它減少了一些功能(例如不支持數(shù)據(jù)壓yaffs/yaffs2自帶 的驅(qū)動,并且為嵌入式系統(tǒng)提供了直文件系統(tǒng)的API,用戶可以不使用Linux中的MTD與VFS,直對文件系統(tǒng)操作。當然,yaffs也可與MTD驅(qū)動程序配合使用yaffs與yaffs2的主要區(qū)別在于,前者僅支持小頁(512Bytes)在內(nèi)存空間占用 回收速度、讀/寫速度等方面均有大幅提升博創(chuàng)科技嵌入互由LinusTorvalds參與開發(fā)的小型只讀壓Inode、文件名稱 信息不壓單個文件最大為數(shù)據(jù)壓縮存適合不需要寫、且體積較大的文件系統(tǒng),如/lib,/opt與JFFS2、Cloop相比 速度壓縮率可以超過文件時,每 4k內(nèi)容,解壓縮到cacheii)#mkcramfs/liblib.cramfs#mkcramfs/usrusr.cramfs掛載文件系#mount–tcramfslib.cramfs/lib–o#mount–tcramfsusr.cramfs/usr–o博創(chuàng)科技嵌入互文件的大小為名修改參數(shù)值。如#echo2048>/proc/sys/shmmni,修 博創(chuàng)科技嵌入互 文件 該進程令行參博創(chuàng)科技嵌入互mountmount[-mount-a[-fFnrsvw][-tmount[-fnrsvw][-ooptionsdevice|mount[-fnrsvw][-tvfstype][-ooptions]device系統(tǒng)管理者或/etc/fstab中允許的使用者說明:博創(chuàng)科技嵌入互mount-t指定文件系統(tǒng)的-odefaults使用缺省rwsuiddev,exec,autonouser,-oro用只讀模式掛-orw用可讀寫模式掛-oloop=使用loop模式用來將一個文件當#mount-oloop/tmp/image.iso博創(chuàng)科技嵌入互umountumount[-umount-a[-f][-r][-n][-v][-tvfstypes][-Oumount[-f][-r][-n][-v]special|博創(chuàng)科技嵌入互df-a,包含所有的具0Blocks的文件-block-size={SIZE}{SIZE}大小的-h,--human-readable使用人可讀的-H,-h,但是1000為單位而不是-i,inode信息,不列出已使博創(chuàng)科技嵌入互-k,--kilobytes就像是--block--l,--local限制列出的文件-m,--megabytes--blockno-sync取得信息前sync(缺省值-P,--portabilityPOSIX輸出--sync在取得信息-t,--type=TYPE限制列出文件系統(tǒng)的-T,--print-type顯示文件系統(tǒng)的-x,--exclude-type=TYPE限制列出文件系統(tǒng)不要顯示--help顯示這個幫手並且--version 本信息並且離博創(chuàng)科技嵌入互mkfs使用方式:-V在/dev/hda5上建一個msdos的文件系統(tǒng),同時檢存在,並且將過程詳細列出來mkfs-V-tmsdos-c博創(chuàng)科技嵌入互博創(chuàng)科技嵌入互 引導加載程序使用的 設(shè)備文件及其他特殊文 系統(tǒng)配置文*home用戶 必要 庫,例如 庫、內(nèi)核模 臨時掛載的文件系統(tǒng) 在嵌入式Linux上為可選博創(chuàng)科技嵌入互 root用戶 必要的系統(tǒng)管理員 臨時文 大多數(shù)用戶使用的應(yīng) 程序和工具程序博創(chuàng)科技嵌入互庫 博創(chuàng)科技嵌入互庫我們這里討論Glibc 庫位于 下,其中包括實際的共 還需 動 器及其符 :Ld-博創(chuàng)科技嵌入互 Ld-

lbLIBRARY_NAME-博創(chuàng)科技嵌入互 ld:動 libBrokenLocale:修正進程,讓locale常執(zhí)行l(wèi)ibSegFault:用來捕捉內(nèi)存區(qū)段錯誤以及進行回溯libanl:異步名稱查詢libc:主 學庫,許多涉及認證的應(yīng)用程libdl:用來動態(tài)加載共享庫,使用了dlopen()libm:數(shù)學 libpthread:Linux的Posix1003.1c多線程libpthread_db:多線程調(diào)libutil:登錄管理博創(chuàng)科技嵌入互 博創(chuàng)科技嵌入互博創(chuàng)科技嵌入互例如#cd${TARGET_ROOTFS}/dev#mknod–m600memc11#mknod–m666nullc1#mknod–m666zeroc1#mknod–m644randomc1…博創(chuàng)科技嵌入互如果系統(tǒng)支持devfs,則可以在內(nèi)核配置的時候添加上博創(chuàng)科技嵌入互它通過在sysfs的/class/和/block/樹中查找一dev的文件,以確定所創(chuàng)建的設(shè)備節(jié)點文件的主在內(nèi)核配置的時候添加上sysfs及tmpfsudev軟件包,交叉編譯,然后 到目標根文件系中,最后配置好udev博創(chuàng)科技嵌入互 如果逐一交叉編譯這么多二進制文件是很花時間在嵌入式系統(tǒng)上,我們只需要將命令集濃縮成僅博創(chuàng)科技嵌入互S博創(chuàng)科技嵌入互在 博創(chuàng)科技嵌入互博創(chuàng)科技嵌入互BuildBuildBusyBoxasastaticbinary(noshared缺省配置為使 Build[*]DoyouwanttobuildBusyBoxwithaCross博創(chuàng)科技嵌入互ArchivalUtilitiesConsoleUtilitiesDebianFindingUtilitiesInitUtilitiesLogin/PasswordManagementMiscellaneousUtilitiesLinuxMo

溫馨提示

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

評論

0/150

提交評論