編譯內核前提:
1、準備開發環境。
2、獲取目標主機上硬件設備的相關信息。
3、獲取目標主機系統功能的相關信息,例如要啟用的文件系統。
4、獲取內核源代碼包:www.kernel.org
實驗環境:基于CentOS7.2進行
如何準備開發環境:
安裝開發包組
CentOS6:安裝Developmet Tools、Server Platform Development(服務器平臺開發)
CentOS7:安裝Developmet Tools、Server Platform Development(服務器平臺開發)
確?!眓curses”已安裝
如何獲取目標主機上硬件相關信息
CPU型號:
~]#/cat /proc/cpuinfo ~]#lscpu ~]#yum install -y x86info ~]#x86info -a
PCI設備:
顯卡、網卡、鍵盤、鼠標等
~]# lspci
-v
-vv
~]# lsusb ~]# lsblk
了解全部硬件信息:
]# hal-device
內核編譯過程
1、獲取較高版本的內核。如下載linux-3.10.67
2、解壓內核壓縮包至/usr/src目錄
3、當項目需要統一的名稱進行管理時,將帶有不同版本號的項目鏈接至統一名稱是一種比較好的解決方式。相較于直接修改不同版本號的項目為統一名稱,軟連接的方式能夠支持回滾。
4、開始編譯內核,使用make命令。在/usr/src目錄下
~]# make menuconfig #配置內核選項。若提示錯誤,可能需要安裝ncurses-devel包。 安裝之后在執行。 ~]# make #編譯內核,可是有-j指定編譯線程數量 ~]# make modules_intsall #安裝內核模塊 ~]# make install #安裝內
核
之后重啟系統,選擇使用新內核。
注:在遠程連接進行耗時較長的操作時,為避免因網絡異常導致連接中斷,從而影響正常操作,在進行操作時,應當進入scren操作
1)在/boot目錄,與名為config-Version-Release的文件,在編譯內核時,刻以此文件為模板進行編譯。如:config-3.10.0-327.el7.x86_64
cp /boot/config-3.10.0-327.el7.x86_64 /usr/src/linux/.config
2)配置內核選項。
a、支持“更新“配置,支持在已有的.config文件基礎之上進行”修改“配置。
(1)make config:基于命令行以遍歷的方式去配置內核中可配置的每個選項
(2)make menuconfig:基于ncurses-delve的文件配置窗口。
(3)make gconfig:基于GTK開發環境的窗口界面,需安裝“桌面平臺開發“
(4)make xconfig:基于QT開發環境的窗口界面
b、支持“全新配置“模式進行配置:
(1)make defconfig:基于內核為目標平臺提供的“默認“配置為模板進行配置,不再讀取.config文件
(2)make allnoconfig:所有選項均為“no”
在此使用:make menuconfig
2.1)在Processor type and features選項中的Processor family選項菜單中可以選擇當前的cpu類型
選擇對應的CPU類型即可
2.2)在General setup中的Local version菜單可以配置grub菜單中內核現實的信息
當然,一般添加的是系統版本信息,比如RHEL7,簡寫為-el7。第一次編譯的話寫為-1.el67。
2.3)
3) 編譯
3.1)支持多線程編譯:make –j #
3.2)僅編譯內核中的一部分代碼
a)只編譯某子目錄中的相關代碼
切換至內核源碼樹下:cd /usr/src/linux
make /path/to/dir
b)至編譯特定的模塊
cd /usr/src/linux
make /path/to/dir/file.ko #在該目錄下可能只存在file文件,但是在配置時要些微file.ko,若僅編譯一個模塊,需要將該模塊手動移動到 /lib/modules/Version-Release/kernel/對應的目錄下
c)交叉編譯
編譯的目標平臺與當前編譯操作的平臺不同。
#make ARCH=arch_name
如何獲取特定目標平臺的使用幫助
#make ARCH=arch_name help
如何在執行過編譯操作的內核源碼樹上做重新編譯:
事先清理操作:
make clean:清理編譯生成的絕大多數文件,但會保留.config和外部編譯所需要的文件
make mrproper:清理編譯生成的所有文件,包括配置生成的.config文件及某些配置文件
make distclean:相當于mrproper之外,再清理各種patches及編輯器備份文件。
在做make mrproper或make distclean之前,應該將.config文件備份
指定默認的內核版本:vim /etc/default/grub
原創文章,作者:M20-1鐘明波,如若轉載,請注明出處:http://www.www58058.com/46155