色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 嵌入式Linux文件系統(tǒng)的構(gòu)建

          嵌入式Linux文件系統(tǒng)的構(gòu)建

          作者: 時間:2016-10-08 來源:網(wǎng)絡(luò) 收藏

          插圖2: 文件系統(tǒng)體系結(jié)構(gòu)

          構(gòu)建文件系統(tǒng)最基本的要求就是系統(tǒng)能夠在此基礎(chǔ)上啟動運行起來,所以,/sbin下的init程序必不可少。init程序是引導(dǎo)過程完成后內(nèi)核運行的第一個程序,它能啟動全部其他程序。只要init完成運行全部必要的程序,系統(tǒng)就開始建立并開始運行。當(dāng)程序開始啟動時,init讀取一個配置文件inittab,這個文件位于/etc下,它確定了init在啟動和關(guān)機時的工作特性。在我們開發(fā)的這個嵌入式系統(tǒng)中,所有的文件內(nèi)容只需保留與開發(fā)要求有關(guān)的必須部分。

          這個系統(tǒng)運行單用戶模式啟動:啟動后立即運行rc.sysinit腳本,進(jìn)行系統(tǒng)初始化動作。rc.sysinit腳本也進(jìn)行了精簡,只保留了以讀寫的方式重新加載(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)能進(jìn)行交互,啟動了/bin/bash這個命令解釋器。用戶在鍵盤上輸入某些命令,bash將讀取輸入加以解析然后執(zhí)行該程序。/tools中的telnetd和/sbin中的pppd分別是遠(yuǎn)程登陸和串口通訊的后臺程序,加入它們也是為了方便開發(fā)。

          另外,為了盡量精簡內(nèi)核,程序都以動態(tài)鏈接庫文件的方式編譯,即當(dāng)程序運行到所需庫文件時才動態(tài)加載。所以保證庫文件的完整性就顯得相當(dāng)重要。為確保運行各種程序都能在/lib目錄中找到合適的庫文件,就干脆對/lib中的庫文件不作任何刪減,而完整的/lib目錄(含子目錄及全部庫文件)也不過2MB 大小。

          ● 配置文件系統(tǒng)用戶

          這一步驟的實現(xiàn),體現(xiàn)了該嵌入式操作系統(tǒng)的一大特色---安全性。為了防止系統(tǒng)中的文件被誤改或被惡意破壞,我們設(shè)置組和用戶,讓只有隸屬于特定組的特定用戶才能對特定的程序進(jìn)行合法操作。/etc目錄中沒有列入管理組的group文件和管理用戶的pass wd文件,所以在設(shè)置文件或目錄的所有權(quán)時,全部用id號來代替組名和用戶名。用chown命令來改變文件的所有權(quán),如chown 0.0 i nittab(前一個“0”代表屬組,后一個“0”代表用戶),修改后的inittab文件的詳細(xì)信息為:-rw-r-r-- 1 0 0 237 Jul 26 l0:30 inittab

          將系統(tǒng)中所有的文件和目錄按照其具體類型和要求,為其設(shè)定特定的組和用戶對它的所有權(quán)。例如,/etc中的module.conf配置文件的所有權(quán)是module組和module用戶。那么只有組和用戶同為module的程序(比如/lib/modules/中的程序)才有權(quán)查看module.c onf文件,其他非root用戶的程序都打不開這個文件。這樣,除了root用戶,其他不具有操作權(quán)限的用戶就不可能對那些特殊文件, 如有關(guān)網(wǎng)絡(luò)、安全等重要信息進(jìn)行執(zhí)行和修改。而擁有root用戶權(quán)限的文件只有init和bash兩個。init用于完成系統(tǒng)的初始化過程,并不涉及對其他文件和程序的操作;bash是開發(fā)過程中用戶與系統(tǒng)交互的需要,便于對文件系統(tǒng)進(jìn)行修改,開發(fā)完成后的實際系統(tǒng)并不需要bash,可刪除。這樣,各個文件和程序均在自己所屬的組和用戶中運行,不會互相干擾。使得整個系統(tǒng)有條不紊,不會發(fā)生程序越權(quán)誤操作的現(xiàn)象。保證了操作系統(tǒng)本身的安全性,也讓試圖竊取或破壞數(shù)據(jù)的攻擊者無機可乘。

          根據(jù)需要,在基本文件系統(tǒng)上添加應(yīng)用程序基本文件系統(tǒng)完成后,再根據(jù)開發(fā)的實際要求,在上面再構(gòu)筑一些應(yīng)用和服務(wù)。例如,對于所需求的網(wǎng)絡(luò)功能,我們在/bin 中加入netstat、ping,在/sbin中加入ifconfig、route、xinetd等網(wǎng)絡(luò)程序:為了將一些服務(wù)以模塊的方式加載,以緩解內(nèi)核的負(fù)擔(dān) ,我們在/sbin中加入了insmod、lsmod、modprobe、depmod、rmmod等有關(guān)操作模塊的命令。還有,為了搭建開發(fā)過程的交叉編譯的環(huán)境,需要用到串口通訊,所以在/sbin中加入pppd的命令,在/etc中加入PPP目錄及其配置文件等等。

          到此,一個滿足系統(tǒng)需求的嵌入式Linux文件系統(tǒng)就基本構(gòu)造完成。為了系統(tǒng)能在特定的嵌入式硬件設(shè)備上運行,系統(tǒng)中所有的二進(jìn)制文件都必須是經(jīng)過特定的嵌入式開發(fā)編譯工具編譯,將編譯好的文件系統(tǒng)燒至嵌入式系統(tǒng)的開發(fā)板中,調(diào)通串口,就可以進(jìn)行調(diào)試和進(jìn)一步的開發(fā)了。

          嵌入式Linux 文件系統(tǒng)的進(jìn)一步開發(fā)

          按照上一部份給出的文件系統(tǒng)體系結(jié)構(gòu),文件系統(tǒng)的實現(xiàn)主要在VFS層、物理文件系統(tǒng)層和MTD層。在Linux 2.4以后的版本中,JFFS2已經(jīng)作為一種標(biāo)準(zhǔn)的文件系統(tǒng)被支持,所以使得Linux的VFS支持JFFS2并不是一件難事,在源代碼中也不用做修改。下面給出在MTD層,Linux的源代碼做的一些修改。另外,敘述JFFS2物理文件系統(tǒng)映像文件的生成。

          支持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 MTD devices和Caching block device access to MTD devices這三項。其他的有關(guān)NFTL,CFI的支持根據(jù)需要選取。

          第二步,編寫針對目標(biāo)平臺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)建的映射表。

          插圖3: 創(chuàng)建MTD分區(qū)

          第三步,將修改過的MTD驅(qū)動文件作為內(nèi)核文件的補丁,并給內(nèi)核文件打上這個補丁,最后,編譯生成內(nèi)核文件。

          第四步,使用mknod命令建立MTD設(shè)備。

          JFFS2映象文件的生成

          首先,需要內(nèi)核支持JFFS2,因此在配置內(nèi)核參數(shù)時,選中File Systems下的Journaling Flash File System v2(JFFS2)support。假設(shè)從一個RAMDISK的文件系統(tǒng)中得到建立根文件系統(tǒng)所需的全部文件和系統(tǒng)所有的設(shè)備等信息。制作步驟如下:



          關(guān)鍵詞:

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉