close

 

What is kernel?

kernel是作業系統的核心元件,負責處理應用程式和硬體之間的溝通[1]。在Linux系統中kernel是主要組成部分,它的功能幾乎表示整個系統的功能,它支援全部系統裝置、S/W 協定和整個系統管理,然而有限記憶體空間不能允許我們把全部的kernel功能放入系統內,幸好GCC提供一種聰明的編譯方法來建立必要的功能,如果在編譯之前,不要選取不需要的項目,便會將這些項目忽略而不進行編譯。

 

Linux kernel支援很多種不同的處理器,因應不同需求的平台,必須選擇相對應的版本。如:x86、ARM、PowerPC、MIPS、SuperH、M68K等,以下是各版本的官方網站連結。

 

x86

http://www.kernel.org/

ARM

http://www.arm.linux.org.uk/developer/

PowerPC

http://penguinppc.org/

MIPS

http://www.linux-mips.org/

SuperH

http://linuxsh.sourceforge.net/

M68k

http://www.linux-m68k.org/

 

在kernel的source tree中,Makefile檔案是必須且很重要的。它包含建立所有kernel image程序、kernel內容選項和設定。使用者需要使用make指令執行makefile的設定內容,包括清除所有目的檔案和執行選單化的kernel設定,在make指令之後,將產生一個叫做“zImage”的kernel映像檔。在我們透過Makefile 來建立kernel 之前,需要使用“make menuconfig” 針對目標平台對整個系統和裝置進行必要的設定,我們在menuconfig 應用工具中選擇需要的項目,這個應用程式將產生一個".config"檔,然後make 指令再依“.config”內容去編譯所有必要的C 原始碼檔案,在把全部需要目的檔連結在一起之後,便會產生kernel image 檔案[2]。


參考資料:

[1]       http://opencsl.openfoundry.org/Lab02_kernel.rst.html

[2]       陳家揚,“嵌入式系統應用及其實現”,國立台灣科技大學電子工程系碩士論文,2006。

arrow
arrow
    全站熱搜

    flykof 發表在 痞客邦 留言(0) 人氣()