乙個典型的嵌入式linux系統按照儲存空間的劃分通常包括引導區,核心區與檔案系統區,引導區存放boot loader與系統引數,核心區存放特定嵌入式平台的定製linux核心
檔案系統包括根檔案系統和建立與flash記憶體裝置之上的檔案系統。圖形介面系統和使用者應用程式就放在檔案系統區中
1:boot loader占用的空間一般都比較小,它後面緊挨著乙個啟動引數區,用來儲存linux核心啟動引數和使用者啟動配置。
2:boot loader程式是嵌入式系統的引導引導程式,是系統加電後執行的第一段軟體**。boot loader程式的主要任務就是初始化硬體裝置,建立記憶體空間的對映圖,從而將系統的
軟硬體環境帶到乙個合適的環境中,boot loader程式最重要的任務就是啟動linux核心
3:檔案系統是嵌入式linux系統占用空間最大的部分,它通常佔據了boot loader和核心之外的所有空間,linux啟動完畢之後會載入乙個根檔案系統,根檔案系統包含了系統必備
配置資訊,庫函式和shell直譯器以及核心目錄。其他的檔案系統則可以掛載在根檔案系統下面
『boot loader 一般通過jtag介面和**器燒寫到儲存器,而核心和檔案系統則可以通過串列埠和網口燒寫到儲存器。
linux核心主要由五個部分組成:程序排程,記憶體管理,檔案系統,網路子系統,以及裝置管理。
記憶體管理:(memory management) linux的記憶體管理支援虛擬記憶體,採取的是分頁機制,記憶體管理子系統允許多個程序安全的共享主記憶體區域。通過記憶體管理,linux可以支
持超過實際記憶體大小的記憶體位址,磁碟可以當作記憶體,磁碟與記憶體之間可以相互交換。
裝置管理:linux支援字元裝置,塊裝置,以及網路裝置三類硬體裝置,並提供與平台裝置的概念與sys檔案系統來管理各種裝置,linux的裝置驅動可以編譯進入核心,在系統啟
動時載入,也可以作為模組形式動態載入
linux的**結構
linux 2.6的核心**非常龐大,其中裝置驅動程式約佔一半
目錄arch 硬體平台相關**
block 塊裝置核心**
crypto 加密函式庫
documentation 有關核心各個部分通用解釋和注釋的文字檔案
drivers 裝置驅動相關**
fs 檔案系統相關**
include 核心標頭檔案
init 核心初始化**
ipc 系統程序間的通訊
kernel 核心核心部分:程序排程,中斷處理,訊號處理,模組
lib 通用核心函式
mm 記憶體管理
net 網路通訊協議**
samples 核心例子
security 系統安全相關**
sound 音訊體系**
編譯核心的幾個命令
1: make menuconfig //配置核心命令
2: make //編譯生成目標檔案,包括可載入模組
3:make zimage //編譯生成核心
4:make modules_install //安裝模組
為什麼要配置核心呢?
在編譯之前是肯定要配置核心的,make menuconfig,生成預設配置檔案.config,這個檔案是設定cpu體系,以及很多
比如 arch/arm/configs/ 下是 arm cpu 很多的預設配置,當然你也可以把你以前的 config 檔案拷貝到新核心目錄下。.config 是配置編譯核心的最初步驟
為何要重新編譯核心?
新的核心修訂了舊核心的bug,並增加了許多新的特性。如果使用者想要使用這些新特性,或想根據自己的系統度身定製乙個更高效,更穩定的核心,就需要重新編譯linux核心。通常,更新的核心會支援更多的硬體,具備更好的程序管理能力,執行速度更快、 更穩定,並且一般會修復老版本中發現的許多漏洞等,經常性地選擇公升級更新的系統核心是linux使用者的必要操作內容。
為了正確的合理地設定核心編譯配置選項,從而只編譯系統需要的功能的**,一般主要有下面四個考慮:
1:自己定製編譯的核心執行更快(具有更少的**)
2:系統將擁有更多的記憶體(核心部分將不會被交換到虛擬記憶體中)
3:不需要的功能編譯進入核心可能會增加被系統攻擊者利用的漏洞
4:將某種功能編譯為模組方式編譯進被核心的方式速度要慢一些
核心makefile
linux2.6核心的makefile分為4個組成部分
1:頂層makefile:在核心**最頂層。頂層的makefile檔案讀取.config檔案的內容,並總體上負責build核心和模組
2:config配置檔案:核心的配置檔案,一般在/arch/*/configs下
3:makefile 的通用規則:在/scripts/目錄下面的makefile.*
4:kbuild makefile 檔案:在各級目錄下面
obj-y +=foo.o 它表示由foo.c或foo.s檔案編譯得到foo.o並鏈結進核心,如果使用$(obj-m),則表示物件檔案編譯成可載入的核心模組~
嵌入式Linux系統的構成和啟動過程
在我們的周圍,大量的嵌入式裝置都是基於linux系統來構建的,嵌入式linux與主機linux相比有著自己的一些特點,本文就嵌入式linux系統的構成和啟動過程做一些總結。一 嵌入式linux系統構成 上圖是乙個嵌入式linux系統的典型結構,劃分成了4個區 1 bootloader區存放的是boo...
32位嵌入式系統和嵌入式Linux
32位嵌入式系統和嵌入式linux 嵌入式linux是一種開發原始碼 軟實時 多工的嵌入式作業系統,是標準linux的嵌入式系統移植版。眾所周知,linux能在pc中可靠地執行,正是因為當前的pc硬體已經全部採用了32位乃至64位系統,才會給象windows linux unix這些32位作業系統提...
嵌入式Linux系統漫談
嵌入式linux系統漫談 事物總有個核心,複雜的事物總可以模組化 層次化,嵌入式 linux 也如此。學習嵌入式 linux 困難,主要因為涉及知識和概念過多,即比較複雜,所以學習嵌入式 linux 的就需要找到核心,需要模組化,需要進行層次劃分。嵌入式linux 系統做模組化處理可劃分為 boot...