Linux核心架構及核心裁剪
Linux系統分為核心空間和使用者空間;
使用者空間主要包括:使用者應用程式和基本的庫檔案
核心空間主要包括:
系統呼叫介面SCI:系統封裝給使用者空間的應用函式呼叫介面
程序管理PM:管理程序排程
虛擬檔案系統VFS:針對各種檔案系統封裝的統一呼叫介面層
記憶體管理MM :與CPU無關的記憶體管理程式碼,與CPU相關的在ARCH路徑下
網路協議棧NS:網口多層協議棧相關程式碼
裝置驅動程式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/下
重啟,即可啟動自己製作的系統。