1. 程式人生 > >Linux核心架構及核心裁剪

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/下

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