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...