【1】-x86架構內核的配置和編譯

X86-內核

查看內核版本:

1.uname -r

2.cat   /proc/version

系統架構:1.用戶空間, 2.內核空間

將其分爲兩部分空間的原因:ARM系統中有多種使用模式,將 系統架構分爲兩個空間可以使操作系統得到充分的保護,使用戶程序和內核程序在不同的空間上運行,互不干擾。

以串口中斷爲例

 


廣義內核架構

 

SCI:實現系統調用函數的接口(open等)                                                                     

PM:進程管理(進程調度等)  

MM:內存管理                                                                                                     

ARCH:體系架構相關的代碼(與CPU相關的代碼)                                                      

VFS:虛擬文件管理系統(隱藏各種文件系統的具體細節爲文件操作提供統一的接口)      

NS:網絡協議棧                                                                                                        

DD:設備驅動(佔絕大部分的內核代碼,佔內核代碼的大約70%)

虛擬文件系統(VFS):

 

內核源代碼

下載地址:www.kernel.org

管理方式:樹狀管理方式

內核源代碼目錄解析

arch:內核所支持的每種CPU體系,在該目錄下都有對應的子目錄

documentation:內核的文檔

driver:設備驅動文檔

include:內核所需要的頭文件,與平臺無關的頭文件在include/linux子目錄下

fs:存放各種文件系統的實現代碼,每個子目錄對應一種文件系統的實現

net:存放網絡協議的實現代碼


Linux內核的配置與編譯

1.如何配置內核

1.1爲什麼要配置內核?

答:因爲內核源代碼過於龐大,只有通過配置內核,選擇所需要的功能才能使內核 變小;


make config:基於文本模式的交互式配置,配置過程中一問一答

make menuconfig:基於文本模式的菜單型配置,圖像化界面

<*>【運行在內存中的內核】:A ->  A.c->A.o->ZImage/bzImage->內存

<M>【內核模塊】:A ->A.c->A.o->文件夾【.ko文件】->需要時導入內存,不需要時從內存中刪除

<>:不選擇該功能

內核的配置文件作爲隱藏文件保存着,需使用ls -a 來查看,在配置linux內核時可以load已有的內核配置文件,並在其基礎上修改

2.如何編譯內核

2.1編譯內核<*>

a)make zImage (V = 1):在X86平臺下,只能用於小於512KB的內核(查看詳細的編譯選項)

b)make bzImage (V = 1):(查看詳細的編譯選項)

c)編譯好的文件存放在arch/<cpu>/boot目錄下

2.2編譯內核模塊<M>

a)make modules:編譯內核模塊,編譯完的模塊散落在內核中的各個部分

b)make modules_install:將散落在內核中各個部分的模塊放置到lib/modules中,方便之後的打包

2.3製作init ramdisk(將內核模塊打包)

a)mkinitrd  initrd-$version(目標文件)  $version(源文件/夾)

3.安裝內核

1.cp arch/x86<cpu>/boot/bzImage/    /boot/vmlinuz-$version

2.cp initrd-$version   /boot/

3.修改/etc/grub.conf(添加linux內核文件,修改linux內核的映像名稱,修改內核模塊包名稱[initrd])

4.清理內核

1. make clean:清理內核源文件中的*.o

2. make distclean:清理內核源文件中*.o和配置文件.config

Tips:

1.修改了內核,其中的文件並不會改變,因爲內核中核心的部分是運行在內存中的,修改內核不過是修改內存中的一段程序,並不會改變文件系統(用戶空間)的內容。

2./boot/目錄是linux啓動時去讀取的一個文件夾

 

遇到的問題:

1.在第一次更新完內核後重啓,出現Error 13 Invalid or 。。。。,找不到問題出在哪裏,重新編譯完後,在按上述過程走一遍後,內核正常啓動了。

 

 

 

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章