uclinux目錄結(jié)構(gòu)解析
隨著現(xiàn)代計算機技術(shù)的飛速發(fā)展和互聯(lián)網(wǎng)技術(shù)的廣泛應(yīng)用,從PC時代過渡到了以個人數(shù)字助理、手持個人電腦和信息家電為代表的3C(計算機、通信、消費電子)一體的后PC時代。后PC時代里,嵌入式系統(tǒng)扮演了越來越重要的角色,被廣泛應(yīng)用于信息電器、移動設(shè)備、網(wǎng)絡(luò)設(shè)備和工控仿真等領(lǐng)域。
從20世紀(jì)80年代起,國際上就有一些IT組織、公司,云鼎娛樂場開始進(jìn)行商用嵌入式操作系統(tǒng)和專用操作系統(tǒng)的研發(fā)。這其中涌現(xiàn)了一些著名的嵌入式操作系統(tǒng),如Microsoft公司的WinCE和WindRiver System公司的VxWorks就分別是非實時和實時嵌入式操作系統(tǒng)的代表。但是商用產(chǎn)品的造價都十分昂貴,用于一般用途會提高產(chǎn)品成本從而失去競爭力。
uClinux 的源代碼組織成以下列結(jié)構(gòu):根目錄是uClinux-xxx( 例如: uClinux-Samsung)。 其中,內(nèi)核放在linux-xxx 下,(xxx 是版本號,2.0.x 或2.4.x)。 一些應(yīng)用程序放在user 目錄下,根文件系統(tǒng)放在romfs 下, 預(yù)編譯好的linux映像放在images 下,包括在RAM 和ROM中運行的映像。 系統(tǒng)的啟動代碼放在boot 目錄下。 下面重點描述一下內(nèi)核的組織結(jié)構(gòu):
arch/armnommu : 與架構(gòu)和平臺相關(guān)的代碼都放在arch 目錄下, 針對ARM的uClinux, 有一個子目錄和它相對應(yīng)—armnommu 。如果你要把uClinux移植到另外一個ARM板子, 大
部分的工作就是修改這個目錄下的一些文件,例如kernel/head-arm-atmel.S ,kernel/setup.c
drivers: 這個目錄下包含了所有的設(shè)備驅(qū)動程序。 驅(qū)動程序又被分成’block’, ’char’, ‘net’等幾種類型,
fs: 這里有支持多種文件系統(tǒng)的源代碼,幾乎一個目錄就是一個文件系統(tǒng),如MSDOS,VFAT, proc,ext2等。虛擬文件系統(tǒng)(VFS)給所有各式各樣的文件系統(tǒng)提供了一個統(tǒng)一的接口。文件系統(tǒng)是放在塊設(shè)備上的,這些塊設(shè)備由塊設(shè)備驅(qū)動程序來提供支持。
include:相關(guān)的頭文件。他們被分成通用和平臺專用兩部分。 目錄‘asm-$(ARCH)’包含了平臺相關(guān)的頭文件,在它下面進(jìn)一步分成‘arch-$(MACHINE)’,’arch-$(PROCESSOR)’等子目錄。與板子相關(guān)的頭文件放在arch-$(MACHINE)’下,與CPU相關(guān)的頭文件放在’arch-$(PROCESSOR)’下。例如,對于ARM7TDMI ,‘proc-armv’ 子目錄就會被用到。對于EV40,應(yīng)為用的是Atmel40800,所以‘arch-atmel’用來存放硬件相關(guān)的定義。
init: 含一些啟動kernel所需做的所有初始化動作,里面有一個main.c針對kernel 作初始化動作,設(shè)置一些參數(shù)等,對外圍設(shè)備初始化。
ipc: 提供近程間通訊機制的源代碼,如信號量,消息隊列,管道等。
kernel: 包含進(jìn)程調(diào)度算法的源代碼,以及與內(nèi)和相關(guān)的處理程序,例如系統(tǒng)調(diào)用。
mmnommu: 在標(biāo)準(zhǔn)linux中有一個mm目錄,用來存放內(nèi)存管理的源代碼,包括MMU。 而這個目錄是來替換mm的, 僅僅包含簡單的內(nèi)存分頁管理的源代碼。
net: 支持網(wǎng)絡(luò)相關(guān)的協(xié)議源代碼。
lib: 包含內(nèi)核要用到的一些常用函數(shù)。例如,字符串操作,格式化輸出等。
script: 這個目錄中包含了在配置和編譯內(nèi)核時要用到的腳本文件。
附:
目錄 存放內(nèi)容
bin 基本命令執(zhí)行文件
boot boot loader 的靜態(tài)鏈接文件
dev 設(shè)備文件
etc 主機特定的系統(tǒng)配置
home 用戶目錄
lib 基本共享庫以及內(nèi)核模塊
media 用于移動介質(zhì)的掛載點
mnt 用于臨時掛載文件系統(tǒng)
proc 系統(tǒng)信息的虛擬目錄(2.4 和 2.6 內(nèi)核)
root root 用戶的目錄
sbin 基本系統(tǒng)命令執(zhí)行文件
sys 系統(tǒng)信息的虛擬目錄(2.6 內(nèi)核)
tmp 臨時文件
usr 第二級目錄
var 不斷變化的數(shù)據(jù)
srv 系統(tǒng)提供的用于 service 的數(shù)據(jù)
opt 附加的應(yīng)用程序軟件包
根分區(qū)/ 必須總是物理地包含 /etc、/bin、/sbin、/lib 和 /dev,否則您將不能啟動系統(tǒng)。典型的根分區(qū)/需要 150–250MB 大小空間。
/usr:包含所有的用戶程序(/usr/bin),庫文件(/usr/lib),文檔(/usr/share/doc),等等。這是文件系統(tǒng)中耗費空間最多的部分。您需要提供至少 500MB 磁盤空間???cè)萘繒罁?jù)您要安裝的軟件包數(shù)量和類型增長。寬松的工作站或服務(wù)器安裝應(yīng)該需要 4–6GB。
/var:所有的可變數(shù)據(jù),如新聞組文章、電子郵件、網(wǎng)站、數(shù)據(jù)庫、軟件包系統(tǒng)的緩存等等,將被放入這個目錄。 這個目錄的大小取決于您計算機的用途,但是對大多數(shù)人來說,將主要用于軟件包系統(tǒng)的管理工具。如果您準(zhǔn)備一次性地做一個全面的安裝,包含Debian 提供的所有程序, /var下面 2~3GB 的空間應(yīng)該夠用。如果您準(zhǔn)備逐個安裝(也就是說,安裝服務(wù)程序和工具,然后是文本處理工具,然后是 X,…),您準(zhǔn)備 300–500 MB 就行。要是硬盤空間很緊張,并且不準(zhǔn)備做主版本的系統(tǒng)升級,可以為其準(zhǔn)備 30 或 40MB 大小。
/tmp: 程序創(chuàng)建的臨時數(shù)據(jù)大都存到這個目錄。通常 40–100 MB 應(yīng)該足夠。一些應(yīng)用程序 (包括歸檔處理程序、CD/DVD 制作工具和多媒體軟件)可能會使用 /tmp 臨時保存映像文件。如果要使用這些程序,應(yīng)該相應(yīng)地調(diào)整 /tmp 目錄的大小。
/home:每個用戶將放置他的私有數(shù)據(jù)到這個目錄的子目錄下。其大小取決于將有多少用戶使用系統(tǒng),以及有什么樣文件放在他們的目錄下。根據(jù)規(guī)劃的用途,應(yīng)該為每個用戶準(zhǔn)備 100MB 空間,不過應(yīng)該按您的需求調(diào)整。假如您在 home 目錄下計劃保存大量的多媒體文件(圖片、MP3、電影),該預(yù)備更多的空間。