內核源代碼下載:www.kernel.orglinux
Linux內核源代碼採用樹形結構進行組織,很是合理地把功能相關的文件都放在同一個子目錄下,使得程序更具可讀性。 windows
linux內核代碼最好不要在windows下解壓,由於同名(大小寫)會丟失一些code。網絡
source insight:添加彙編文件:option->Document option 添加.c、.h、.s、.Sspa
內核目錄:code
arch目錄 :內核所支持的每種CPU體系,在該目錄下都有對應的子目錄。每一個CPU的子目錄,又進一步分解爲boot,mm,kernel等子目錄,分別包含控制系統引導,內存管理,系統調用等 。
blog
documentation :內核的文檔
ip
drivers目錄:設備驅動程序。內存
作移植時:主要該arch和driver下。rem
include目錄 :內核所須要的頭文件。與平臺無關的頭文件在include/linux 子目錄下,與平臺相關的頭文件則放在相應的子目錄中
文檔
script:配置內核的腳本。
內核配置與編譯: 執行這些命令的位置是在內核代碼的頂層目錄下
linux內核具備可定製的優勢,具體步驟:
1.清除臨時文件、中間文件和配置文件(三種命令,刪掉不一樣的類型)
make clean:remove most generated files but keep the config
make mrproper:remove all generated files+config files
make distclean:mrproper+remove editor backup and patch files(最全的)
但不是最全的就是最好的,加入只編譯後,只須要刪除.o文件,不須要刪除配置文件,則make clean(根據須要來刪除)
2.肯定目標系統的軟硬件配置狀況,好比CPU的類型、網卡的型號、所需支持的網絡協議等。
3.配置內核:結果保存在.config文件中。
make config:基於文本模式的交互式配置。
make menuconfig:基於文本模式的菜單型配置 。(推薦使用)
特色:直觀高效,簡單。利用空格鍵,選取值。
make oldconfig:使用已有的配置文件(.config),但會詢問新增的配置選項。
make xconfig:圖形化配置(須要安裝圖形化系統,其它前面三個既能夠在文本模式下使用,也能夠在圖形化系統使用)
內核配置一般在一個已有的配置文件基礎上,經過修改獲得新的配置文件,linux內核提供了一系列可供參考的內核配置文件,位於ARCH/$CPU/configs
如:ARCH/ARM/configs下。。。把這個配置文件拷貝到內核的頂層文件下。
*:y ;空格:N
配置內核文件的原則:
找到一個能夠參考的結果文件,基於這個文件再調整。
4.內核編譯
make zImage
make bzImage
區別:在X86平臺,zImage只能用於小於512K的內核,在其餘平臺兩種方式是沒有區別的。
如須要獲取詳細編譯狀況,可以使用:
make zImage V=1
make bzImage V=1
編譯好的內核位於arch/$cpu/boot,
5.編譯內核模塊:
make modules
6.安裝內核模塊
make modules_install
將編譯好的內核模塊從內核源代碼目錄copy到/lib/modules下
7.製做init ramdisk
mkinitrd initrd-$version $version
initrd-$version :取名字
$version:內核的版本
注意:$version經過查詢/lib/modules下的目錄獲得。
安裝內核:1、cp arch/x86/boot/bzImage /boot/vmlinuz-$version //把內核.img拷貝出來
2、cp initrd-$version /boot/ //把ramdisk拷貝出來
3、修改/etc/grub.conf