內(nèi)核移植簡介_第1頁
已閱讀1頁,還剩5頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、Linux內(nèi)核移植所謂Linux內(nèi)核移植就是把Linux操作系統(tǒng)針對具體的目標(biāo)機(jī)做必要裁剪之后,安裝到目標(biāo)機(jī)使其正確的運(yùn)行起來。這個概念目前在嵌入式開發(fā)領(lǐng)域流傳比較廣泛。嵌入式Linux移植是指對Linux經(jīng)過小型化裁剪后,能夠固化在容量只有幾K字節(jié)或幾十K字節(jié)的存儲器芯片或單片機(jī)中,應(yīng)用于特定嵌入式場合的專用Linux操作系統(tǒng)。選擇Linux內(nèi)核內(nèi)核(kernel)是所有Linux系統(tǒng)的主要軟件組件。內(nèi)核既是操作系統(tǒng)的心臟,也是它的大

2、腦,因?yàn)閮?nèi)核控制著基本的硬件。內(nèi)核是操作系統(tǒng)的核心,具有很多最基本功能,如虛擬內(nèi)存、多任務(wù)和TCPIP網(wǎng)絡(luò)等功能。Linux內(nèi)核本身并不是操作系統(tǒng),它是一個完整操作系統(tǒng)的組成部分。RedHat、Novell、Debian和Gentoo等Linux發(fā)行商都采用Linux內(nèi)核,然后加入更多的工具、庫和應(yīng)用程序來構(gòu)建一個完整的操作系統(tǒng)。Linux內(nèi)核移植前準(zhǔn)備對于嵌入式Linux系統(tǒng)來說,有各種體系結(jié)構(gòu)的處理器和硬件平臺,并且用戶需要根據(jù)需求

3、自己定制硬件板。只要是硬件平臺發(fā)生變化,即使非常小,可能也需要做一些移植工作。內(nèi)核移植是嵌入式Linux系統(tǒng)中最常見的一項(xiàng)工作。當(dāng)然,移植嵌入式Linux系統(tǒng)并不意味著該內(nèi)核使用了任何特定的鏈接庫或用戶工具,建立嵌入式系統(tǒng)并不需要特別的內(nèi)核。嵌入式系統(tǒng)中使用的內(nèi)核與工作站或服務(wù)器上使用的內(nèi)核主要的不同在于內(nèi)核的配置方面。Linux內(nèi)核移植是在Linux原內(nèi)核基礎(chǔ)上,通過對平臺的選擇設(shè)計(jì)來實(shí)現(xiàn)針對特定系統(tǒng)的內(nèi)核版本。Linux內(nèi)核的移植包

4、含啟動代碼的修改、內(nèi)核的鏈接及裝入、參數(shù)傳遞、內(nèi)核引導(dǎo)幾個部分。其基本過程如下:(1)首先,獲取某一版本的Linux內(nèi)核源碼,根據(jù)具體目標(biāo)平臺對源碼進(jìn)行必要的改寫(主要是修改體系結(jié)構(gòu)相關(guān)部分);(2)然后添加一些外設(shè)的驅(qū)動(如網(wǎng)卡驅(qū)動,USB驅(qū)動),打造一款適合于目標(biāo)平臺(可以是嵌入式便攜設(shè)備也可以是其它體系結(jié)構(gòu)的PC機(jī))的新操作系統(tǒng),也就是常說的內(nèi)核配置或內(nèi)核定制;(3)對該系統(tǒng)進(jìn)行針對目標(biāo)平臺的交叉編譯,生成一個內(nèi)核映象文件(如zI

5、mage,uImage,bzImage);(4)最后通過一些手段(如TFTP)把該映象文件燒寫到目標(biāo)平臺中。個目錄下的各個體系結(jié)構(gòu)目錄中。init:內(nèi)核初始化代碼。包括main函數(shù)也是在這個目錄下實(shí)現(xiàn)的。ipc:進(jìn)程間通信的代碼。kernel:內(nèi)核的最核心部分,包括進(jìn)程調(diào)度、定時器等,和平臺相關(guān)的一部分代碼放在archkernel目錄下。lib:各種庫文件代碼。mm:內(nèi)存管理代碼,和平臺相關(guān)的一部分代碼放在archmm目錄下。:網(wǎng)絡(luò)相關(guān)

6、代碼,實(shí)現(xiàn)了各種常見的網(wǎng)絡(luò)協(xié)議。s:用于配置內(nèi)核文件的腳本文件。security:主要是一個SELinux的模塊。sound:常用音頻設(shè)備的驅(qū)動程序等。usr:用戶的代碼。在以上布局中,linux內(nèi)核主要分為特定于體系結(jié)構(gòu)的部分和與體系結(jié)構(gòu)無關(guān)的部分。在Linux啟動的第一階段,內(nèi)核與體系結(jié)構(gòu)相關(guān)部分(arch目錄下)首先執(zhí)行,在這部分它要做的工作有:內(nèi)核解壓縮、解壓縮內(nèi)核重定位;內(nèi)存硬件初始化檢測;參數(shù)表的分析;初始化頁表目錄的制作等

7、工作,然后把控制權(quán)轉(zhuǎn)給內(nèi)核中與系統(tǒng)結(jié)構(gòu)無關(guān)部分。所以操作系統(tǒng)內(nèi)核移植中要改動的代碼主要集中在與體系結(jié)構(gòu)相關(guān)的啟動初始化部分。從上面的目錄結(jié)構(gòu)介紹可知,如果要添加新的開發(fā)板或者尋找體系結(jié)構(gòu)相關(guān)的文件首先就是到arch目錄下去尋找。在arch目錄中我們可以看到有許多子目錄,它們往往是用芯片命名的,表示是針對該芯片體系結(jié)構(gòu)的代碼。為ARM系列芯片編譯內(nèi)核,就應(yīng)修改ARM目錄下的相關(guān)文件。內(nèi)核配置及方法Linux內(nèi)核源代碼支持二十多種體系結(jié)構(gòu)的

8、處理器,還有各種各樣的驅(qū)動程序等選項(xiàng)。因此,在編譯之前必須根據(jù)特定平臺配置內(nèi)核源代碼。Linux內(nèi)核有上千個配置選項(xiàng),配置相當(dāng)復(fù)雜,所以,Linux內(nèi)核源代碼組織了一個配置系統(tǒng)。配置系統(tǒng)主要包含Makefile、Kconfig和配置工具。它可以生成內(nèi)核配置菜單,方便內(nèi)核配置。配置界面是通過工具來生成的,工具通過Makefile編譯執(zhí)行,選項(xiàng)則是通過各級目錄的Kconfig文件定義。頂層目錄的Makefile是整個內(nèi)核配置編譯的核心文件,

9、整體管理Linux內(nèi)核的配置編譯,負(fù)責(zé)組織目錄樹中子目錄的編譯管理,其定義了配置和編譯的規(guī)則,還可以設(shè)置體系結(jié)構(gòu)和版本號等。Kconfig文件是Linux2.6內(nèi)核引入的配置文件,是內(nèi)核配置選項(xiàng)的源文件。內(nèi)核源碼中的Documentationkbuildkconfiglanguage.txt文檔有詳細(xì)說明。對內(nèi)核進(jìn)行配置的方法有好幾種,而且配置時需要對許多選項(xiàng)進(jìn)行選擇。不管用哪種方法來配置,或者選擇哪些配置選項(xiàng),在配置好之后,內(nèi)核都會產(chǎn)

溫馨提示

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

評論

0/150

提交評論