天天看點

linux-核心-核心基礎/核心源碼/核心配置和編譯

大綱:

1.linux系統構成

2.linux系統劃分

3.核心空間和使用者空間互動

4.linux核心構成

5.linux核心源碼下載下傳和安裝步驟

6.linux核心目錄結構

7.linux核心編譯和配置

一.Linux系統如何構成的?

linux-核心-核心基礎/核心源碼/核心配置和編譯

二.為什麼linux系統會被劃分成使用者空間和核心空間?

為了提高安全性

ARM實作了7種模式:

使用者模式(usr),快速中斷(fiq),外部中斷(irq),管理模式(svc)

資料通路終止(abt),系統模式(sys),未定義指令異常(und)

x86實作了4個級别:ring0-ring3

ring0:可執行特權指令可通路IO口,ring3則有很多限制

三.核心空間和使用者空間怎麼切換

通過系統調用和硬體中斷可以從使用者空間轉移到核心空間

四.linux核心如何構成?

system call interface(SCI)系統調用接口(提供一套标準的系統調用函數來通路linux核心)

process management(PM)程序管理(建立程序,程序排程,停止程序,程序通信…)

virtual File system(VFS)虛拟檔案系統,隐藏各種檔案系統具體細節,為操作檔案提供統一接口

memory management(MM)記憶體管理(虛拟位址和位位址轉換,記憶體配置設定,記憶體回收…)

arch體系結構相關的代碼(與CPU相關)

device driver驅動程式

network stack網絡棧(支援網絡協定多)

linux-核心-核心基礎/核心源碼/核心配置和編譯

五.linux核心源代碼下載下傳位址www.kernel.org

1.下載下傳路徑

1).官方下載下傳https://www.kernel.org/pub/linux/kernel/

2).最好使用pcb開發商提供的核心源碼

這裡我選擇的是第二種方式

2.從本地pc傳入linux伺服器,利用ssh服務,前面有介紹過,這裡就不贅述啦

3.解壓tar -jxvf linux-imx-emmc-160721.tar.bz2

linux-核心-核心基礎/核心源碼/核心配置和編譯

六.linux目錄結構

linux-核心-核心基礎/核心源碼/核心配置和編譯

1)arch 核心所支援的每種cpu體系,在該目錄下都有對用的子目錄,每個cpu的子目錄又進一步分解為boot,mm,kernel等子目錄,分别包含控制系統引導,

記憶體管理,系統調用等

2)block部分塊裝置驅動程式

3)crypto加密壓縮,crc校驗算法

4)documentation核心文檔

5)drivers裝置驅動程式

6)fs存放各種檔案系統

7)include核心所需頭檔案

8)lib庫代碼

9)mm記憶體管理和體系結構無關

10)net 網絡協定的實作代碼

11)Samples一些核心程式設計範例

12)script核心配置的腳本

13)security Selinux的子產品

14)sound音頻裝置驅動程式

15)usr cpio指令實作

16)virt 核心虛拟機

七.linux核心配置和編譯(linux核心具有可定制的優點)

1.清除臨時檔案,中間檔案和配置檔案

1)make clean

remove most generated file but keep the config

2)make mrproper

remove all generated file +configfiles

3)make distclean

mrproper+remove deitor backup and patch file

例:将核心源碼linux-imx.tar.bz2拷貝到/home/imx6目錄下

解壓#tar -jxvf linux-imx.tar.bz2

進入核心源碼目錄#cd linux-imx_share

進行清除操作#make…

2.确定目标系統的硬體配置情況,比如cpu類型,網卡型号,所支援的網絡協定等

3.使用如下指令之一配置核心

1)make config基于文本模式的互動配置

2)make menuconfig基于文本模式的菜單型配置(菜單在script目錄下産生)

3)make oldconfig使用已有配置檔案(.config)但是會詢問新增加的配置項

4)make xconfig:圖形化的配置(必須圖形化系統)

4.核心編譯步驟

1)make zImage X86上,隻能用于小于512k核心

2)make bzImage

如果需要擷取詳細資訊

make zImage/bzmage V=1

編譯好的核心位于arch/<cpu>/boot下
           

例:

将核心源碼拷貝到linux-imx.tar.bz2拷貝到/home/imx6目錄下

解壓#tar -jxvf linux-imx.tar.bz2

進入核心源碼目錄#cd linux-imx_share

核心配置#make ARCH=arm menuconfig

核心編譯#./build.sh生成的zimage就是做需要的鏡像檔案

5.編譯核心子產品

make modules

6.安裝核心子產品

make modules_install将編譯好的核心子產品從核心源代碼目錄下copy到/lib/modules下

7.制作init ramdisk

mkinitrd initrd - version version($version可以通過查詢/lib/modules下目錄得到)

繼續閱讀