Linux核心架構及核心裁剪

2021-08-17 09:00:24 字數 1754 閱讀 9822

linux系統分為核心空間和使用者空間;

使用者空間主要包括:使用者應用程式和基本的庫檔案

核心空間主要包括:

系統呼叫介面sci:系統封裝給使用者空間的應用函式呼叫介面

程序管理pm:管理程序排程

虛擬檔案系統vfs:針對各種檔案系統封裝的統一呼叫介面層

記憶體管理mm :與cpu無關的記憶體管理**,與cpu相關的在arch路徑下

裝置驅動程式dd:裝置驅動程式

cpu相關**arch :

核心源**目錄結構:

arch:核心支援**各種cpu架構。

block:塊驅動程式

crypto:加密壓縮crc加密演算法

documention:核心文件

driver:裝置驅動程式

fs:各種檔案系統實現**,每個子目錄一種檔案系統

include:核心需要的標頭檔案

lib:庫檔案

mm:記憶體管理與cpu無關

net:網路協議棧

核心裁剪:

1.清除臨時檔案

make clean 刪除大多數的編譯生成檔案, 但是會保留核心的配置檔案.config, 還有足夠的編譯支援來建立擴充套件模組

make distclean mrproper刪除的檔案, 加上編輯備份檔案和一些補丁檔案。

make mrproper 刪除所有的編譯生成檔案, 還有核心配置檔案, 再加上各種備份檔案。

2.分析系統硬體結構和軟體需求;得出核心需求模組

3.生成配置檔案

make config:基於文字模式,挨個配置選擇y/n

make menuconfig:基於選單模式,核取方塊都會有預設選項。

make oldconfig:使用已有的配置檔案

make xconfig:需要安裝圖形化系統

得到系統原始檔下的config 檔案。

4.生成映象

make iimage :是vmlinux經過objcopy gzip壓縮後的檔案, objcopy實現由vmlinux的elf檔案拷貝成純二進位制資料檔案。

make bzimage :bz表示「big zimage」,不是用bzip2壓縮的。兩者的不同之處在於,zimage解壓縮核心到低端記憶體(第乙個640k),bzimage解壓縮核心到高階記憶體(1m以上)。如果核心比較小,那麼採用zimage或bzimage都行,如果比較大應該用bzimage。 

如果編譯過程中出現巨集定義錯誤,可以進入到相關的報錯目錄下將巨集定義新增到extra_cflags後面。

initrd   是「initial ramdisk」的簡寫。一般被用來臨時的引導硬體到實際核心vmlinuz能夠接管並繼續引導的狀態。

一般情況下都在生成 vmlinux 後,再對核心進行壓縮成為 zimage,壓縮的目錄是  kernel/arch/arm/boot。

ramdisk是一種記憶體虛擬磁碟技術,實質上並不是一種檔案系統,它使用的檔案系統時ext2檔案系統。
製作ramdisk:makeitrd initrd_2.6.29 2.6.29
5.安裝
修改/etc/grub.config檔案參照現有的系統 新增需要安裝的系統ramdisk

將映象放到/boot/下

重啟,即可啟動自己製作的系統。

Linux核心裁剪

通過編寫驅動,從應用層,核心層,再到底層硬體之間的關係。明白核心驅動的意義。現在開始才是重頭戲,前面的都是鋪墊。正式編寫驅動前,要先了解linux核心 的組成。linux主要是由五個子系統組成 程序排程,記憶體管理,檔案系統,網路介面以及程序間通訊。linux源 用來實現這些功能,linux原始碼包...

Linux核心裁剪的具體步驟

在menuconfig中配置 詳細介紹核心配置選項及刪改情況 第一部分 全部刪除 code maturity level options 成熟等級選項 prompt for development and or incomplete code drivers 預設情況下是選擇的,這將會在設定介面中顯...

Linux系統核心公升級與裁剪

1 公升級前準備 1 確認目前版本,避免重複公升級 root free root uname r 3 了解硬體環境,知道自己的計算機內究竟安裝了哪些介面裝置,每項硬體資源所使用的系統資源,尤其是介面卡 控制卡使用的irq dma以及i o address。4 解壓核心檔案,以linux 2.6.40...