嵌入式Linux系統的構成

2022-09-08 17:18:17 字數 2688 閱讀 6685

乙個典型的嵌入式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...