国产第页,国产精品视频一区二区三区,国产精品网站夜色,久久艹影院,精品国产第一页,欧美影视一区二区三区,国产在线欧美日韩精品一区二区

linux使用的文件系統(tǒng)有 Linux文件系統(tǒng)初探

發(fā)布時間:2020-02-16 來源: 短文摘抄 點擊:

  摘要:由于嵌入式設(shè)備存儲介質(zhì)的特殊性、電源供給的不穩(wěn)定性和移動存儲的安全性等要求,嵌入式文件系統(tǒng)在嵌入式操作系統(tǒng)中的重要性愈加明顯。本文首先結(jié)合具體實驗平臺的一個嵌入式Linux操作系統(tǒng),提出了一種嵌入式Linux文件系統(tǒng)的總體架構(gòu),并討論了在這個嵌入式系統(tǒng)下,文件系統(tǒng)的移植和實現(xiàn)方法。希望這些實踐經(jīng)驗可以為今后的研究提供有益的幫助和良好的技術(shù)支持。
  關(guān)鍵詞:虛擬文件系統(tǒng);內(nèi)存技術(shù)設(shè)備;日志文件系統(tǒng)
  中圖分類號:TP316 文獻標識碼:A
  
  嵌入式產(chǎn)品已經(jīng)滲透到人們生活的方方面面,特別是在數(shù)字信息技術(shù)和網(wǎng)絡(luò)技術(shù)高速發(fā)展的今天,手持信息產(chǎn)品正拓展著一片越來越大的市場。PDA、手機、掌上電腦、信息家電等各式手持產(chǎn)品已擁有了龐大的用戶群。手持信息產(chǎn)品所運用的最關(guān)鍵的核心技術(shù)就是嵌入式操作系統(tǒng)。Linux以其開源的內(nèi)核和免費的應(yīng)用程序、能夠自由地移植和開發(fā)的優(yōu)勢,更迎合了嵌入式市場的需求。
  嵌入式Linux的開發(fā)大致可分為三個層次:引導裝載內(nèi)核、構(gòu)造文件系統(tǒng)和圖形用戶界面。作為操作系統(tǒng)重要組成部分的文件系統(tǒng),它決定了操作系統(tǒng)本身的信息和用戶的數(shù)據(jù)在存儲設(shè)備上的組織形式。對嵌入式文件系統(tǒng)的研究、設(shè)計和開發(fā)也逐漸成為嵌入式系統(tǒng)研究領(lǐng)域的一個方向。
  
  1 嵌入式Linux文件系統(tǒng)
  
  1.1 簡介
  文件系統(tǒng)是指在一個物理設(shè)備上的任何文件組織和目錄,它構(gòu)成了Linux系統(tǒng)上所有數(shù)據(jù)的基礎(chǔ)。Linux程序、庫、系統(tǒng)文件和用戶文件都駐留其中,因此它是系統(tǒng)中龐大復雜且又是最為基本和重要的資源。值得提出的是,Linux系統(tǒng)中的文件不僅包括普通的文件和目錄,每個和設(shè)備相關(guān)的實際實體也都被映射為一個文件,例如磁盤、打印機、終端等。這樣的設(shè)備文件又稱為特殊文件。所以,Linux下的文件是操作系統(tǒng)服務(wù)和設(shè)備的簡單而又統(tǒng)一的接口。從某種意義上可以說,Linux里的一切事物都是文件。
  在Linux中,文件系統(tǒng)的結(jié)構(gòu)是基于樹狀的,根在頂部,各個目錄和文件從樹根向下分支。
  目錄樹的最頂端被稱為根目錄(/)。在后面介紹的所構(gòu)造文件系統(tǒng)結(jié)構(gòu)圖(圖1)即顯示了樹狀的文件系統(tǒng)。Linux操作系統(tǒng)由一些目錄和許多文件組成。
  由于Linux是一個多任務(wù)、多用戶的操作系統(tǒng),因此它里面的文件還都被賦予了一定的權(quán)限,來決定誰能讀、寫或執(zhí)行一個文件,以及這個文件的類型和如何執(zhí)行。例如下面的文件列表:
  -rw-r-r- 1 root root 1756 Sep 9 2005 inittab
  其表示:這個名為inittab的文件是普通文件;所有者有讀寫的權(quán)限;所在組和其他人都只有讀的權(quán)限;它的連接數(shù)為1;所有者及文件所屬的組都是root 文件中字節(jié)數(shù)為1756;文件創(chuàng)建日期是2005年9月9日?梢酝ㄟ^對文件屬性的設(shè)置,來滿足文件在不同用戶組、不同用戶操作下的不同狀態(tài)。
  1.2 特點
  由于嵌入式設(shè)備的一些特殊性,使得嵌入式文件系統(tǒng)除了滿足一般文件系統(tǒng)的基本要求外,還有一些自身的特性:文件系統(tǒng)面對的存儲介質(zhì)特殊;文件系統(tǒng)有快速恢復的特殊要求;物理文件系統(tǒng)的多樣性和動態(tài)可裝配性;需要文件系統(tǒng)具有跨操作平臺的安全性;文件系統(tǒng)要能滿足整個系統(tǒng)的實時性要求。
  
  2 文件系統(tǒng)的設(shè)計
  
  2.1 實驗主機和目標平臺的連接
  實驗主機和目標平臺的連接有兩種方法:一種是以太網(wǎng)連接,這種連接方式可以進行內(nèi)核文件、根文件系統(tǒng)映像文件的下載;另一種是串口連接,這樣的連接方式可以供調(diào)試之用。
  2.2 構(gòu)建文件系統(tǒng)
  構(gòu)造基本目錄首先建立一個文件系統(tǒng)的工作空間。創(chuàng)建目錄/home/work,所構(gòu)造的文件系統(tǒng)就在work這個目錄中。建立基本目錄,如bin、dev、etc、lib、mnt、proc、sbin、tmp、usr、vat、tools。具體結(jié)構(gòu)見圖l。
  
  其中,tools是便于開發(fā)而創(chuàng)建的目錄。因為整個系統(tǒng)要求盡量小,所以應(yīng)只包含一些必須的二進制程序。開發(fā)過程中需要用到的命令就放在tools中。/etc目錄下只包含了一些啟動過程的配置文件。/ l i b 目錄下的modules子目錄包含了可動態(tài)加載到核心的各種模塊。另外,目錄var下還應(yīng)創(chuàng)建兩個子目錄log和run,負責記錄系統(tǒng)的日志和運行狀態(tài)。整個文件系統(tǒng)中除了tmp和var 目錄放在SDRAM內(nèi)以外,其他所有目錄都放在Flash中,因為trap和var中的內(nèi)容需要經(jīng)常寫入,所以放在可讀寫的RAM里。 當在目標平臺實現(xiàn)了一個嵌入式Linux之后,為了很好地管理操作系統(tǒng)和用戶的數(shù)據(jù)文件,引入了文件系統(tǒng)。物理文件系統(tǒng)是JFFS2,考慮到擴充物理文件系統(tǒng)的要求,保留了Linux的VFS層次?紤]到存儲設(shè)備擴充的要求,在Linux內(nèi)核中加入了對MTD設(shè)備的支持。根據(jù)上面的敘述,可給出整個文件系統(tǒng)的體系結(jié)構(gòu)圖,如圖2所示。
  
  構(gòu)建文件系統(tǒng)最基本的要求就是系統(tǒng)能夠在此基礎(chǔ)上啟動運行起來,所以,/sbin下的init程序必不可少。init程序是引導過程完成后內(nèi)核運行的第一個程序,它能啟動全部其他程序。只要init完成運行全部必要的程序,該系統(tǒng)就開始建立并開始運行。當程序開始啟動時,init讀取一個配置文件inittab,這個文件位于/etc下,它確定了init在啟動和關(guān)機時的工作特性。在開發(fā)的這個嵌入式系統(tǒng)中,所有的文件內(nèi)容只需保留與開發(fā)要求有關(guān)的必須部分。所以inittab的內(nèi)容根據(jù)需要重新寫入。
  這個系統(tǒng)運行單用戶模式啟動,啟動后立即運行rc.sysinit腳本,進行系統(tǒng)初始化動作。rc.sysinit腳本也進行了精簡,只保留了以讀寫的方式重新加載(mount)根文件系統(tǒng)的操作(內(nèi)核啟動時只以只讀的方式加載了根文件系統(tǒng))。具體rc.sysinit腳本中的內(nèi)容如下:
  # Remount the root filesystem read-write
  # mount -n -o remount.rw /mount -o remount.rw -n /dev/mtdblock2/mount -a
  為了在開發(fā)過程中讓用戶與系統(tǒng)能進行交互需要,啟動/bin/bash 這個命令解釋器。用戶在鍵盤上輸入某些命令,bash將讀取輸入加以解析然后執(zhí)行該程序。/tools中的telnetd和/sbin中的pppd分別是遠程登陸和串口通訊的后臺程序,加入它們也是為了方便開發(fā)。另外,為了盡量精簡內(nèi)核,程序都以動態(tài)鏈接庫文件的方式編譯,即當程序運行到所需庫文件時才動態(tài)加載。為確保運行各種程序都能在/lib目錄中找到合適的庫文件,就干脆對/lib中的庫文件不作任何刪減,而完整的/lib目錄(含子目錄及全部庫文件)也不過2MB大小。
  2.3 進一步開發(fā)
  按照上一部份給出的文件系統(tǒng)體系結(jié)構(gòu),文件系統(tǒng)的實現(xiàn)主要在VFS層、物理文件系統(tǒng)層和MTD層。下面給出在MTD層Linux的源代碼做的一些修改,同時介紹JFFS2物理文件系統(tǒng)映像文件的生成。
  
  3 支持MTD設(shè)備
  
  對MTD設(shè)備的支持要經(jīng)過配置內(nèi)核、編寫設(shè)備驅(qū)動程序和建立MTD設(shè)備這幾個步驟。
  第一步,配置內(nèi)核參數(shù)。選中Memory Technology Devices(MTD)support,下面的子項中至少要選擇MTD partitioning support、Direct Char device access to M TD devices和Caching block device access to MTD devices這三項。其他的有關(guān)NFTL、CFI的支持根據(jù)需要選取。
  第二步,編寫針對目標平臺Flash設(shè)備的MTD驅(qū)動程序,主要實現(xiàn)創(chuàng)建MTD 分區(qū)和刪除MTD分區(qū)的函數(shù)。創(chuàng)建分區(qū)的流程見圖3所示。刪除分區(qū)的函數(shù)比較簡單,如果存在MTD分區(qū),就調(diào)用del_mtd_partitions(struct mtd info*)刪除分區(qū),并且刪除為MTD設(shè)備創(chuàng)建的映射表。
  
  第三步,將修改過的MTD驅(qū)動文件作為內(nèi)核文件的補丁,并給內(nèi)核文件打上這個補丁, 最后,編譯生成內(nèi)核文件。
  第四步,使用mknod命令建立MTD設(shè)備。mknod命令的格式如下:
  mknodc 90 //MTD字符設(shè)備
  mknodb 31 //MTD塊設(shè)備
  4 網(wǎng)卡設(shè)置方法
  首先需要Linux kernel 2.6.1+,其次需要在編譯內(nèi)核的時候選上CONFIG_NET_RADIO。
  安裝hostap-driver:
  tar zxvf hostap-driver-0.1.3.tar.gz
  cd hostap-driver-0.1.3
  然后,用任意編輯器打開該目錄下的Makefile文件,將第三行的KERNEL_PATH=加上你的內(nèi)核source地址,保存。
  然后Make
  make install
  接下來,先加載sysfs。修改/etc/fstab,加一行none /sys sysfs defaults 0 0。
  在/etc/sysconfig/network-scripts/下建立一個ifcfg-eth1文件,內(nèi)容如下:
  DEVICE=eth1
  ONBOOT=yes
  BOOTPROTO=dhcp
  TYPE=Wireless
  WIRELESS_ENC_KEY=“你的WEP加密字符串”
  WIRELESS_ESSID=“AP網(wǎng)絡(luò)名”
  WIRELESS_CHANNEL=“”
  WIRELESS_MODE=“”
  這樣就行了,其他的參數(shù)應(yīng)該會自動從服務(wù)端獲取。除了enc,還有幾個常用的參數(shù),essid mode channel nick,其他參數(shù)請用iwconfig-help或者man iwconfig查看。
  啟動你的無線網(wǎng)卡,需要啟動hostap和ipw2100這兩個模塊。找到/etc/modprobe.preload
  在文件的最后依此加上:hostapipw2100,保存后退出。
  
  5 小結(jié)
  
  我們構(gòu)造了一個嵌入式版本的Linux文件系統(tǒng),它使得內(nèi)核在系統(tǒng)盡量精簡的情況下能夠運行起來,并滿足產(chǎn)品和系統(tǒng)各方面的要求。在這個嵌入式文件系統(tǒng)中,引入了VFS的支持,雖然犧牲了一些空間,但是大大方便了今后各種物理文件系統(tǒng)的動態(tài)加載。
  
  參考文獻
  [1]Karim Yaghmour著.韓存兵等譯.構(gòu)建嵌入式Linux系統(tǒng)[M].北京:中國電力出版社,2004.
  [2]鄭樺.嵌入式Linux文件系統(tǒng)的設(shè)汁與實現(xiàn)[M].武漢:武漢理工大學,2004.
  [3]鄭良辰,孫玉芳.日志文件系統(tǒng)在嵌入式存儲設(shè)備上的實現(xiàn)[J].計算機科學,2002,(2).
  [4]Cliff Brake, Jef Sutherland.Flash Filesystem for Embedded Linux System[DB/OL]. http://www.省略.

相關(guān)熱詞搜索:初探 文件系統(tǒng) Linux Linux文件系統(tǒng)初探 linux文件系統(tǒng)格式 linux文件系統(tǒng)結(jié)構(gòu)

版權(quán)所有 蒲公英文摘 www.huhawan.com