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