準備工作:
- 準備好開發環境
- 獲取目標主機上硬件設備相關信息
- 獲取目標主機系統功能的相關信息
- 獲取內核源代碼
www.kernel.org
開發環境準備
包組(Centos 7):Development Tools
yum grouplist 查看包組信息
目標主機硬件設備相關信息:
CPU: cat /proc/cpuinfo
lscpu
PCI設備:
lspci (-v|-vv)
lsusb (-v|-vv)
lsblk 塊設備
由于是在虛擬環境下進行,我們可以將cpu設置成最大使用核心數,已到達加速編譯的目的
步驟如下:
1、下載源碼文件:linux-4.12.tat;并解壓縮至當/root下或/usr/src
[root@CentOS7 ~]#tar xvf linux-4.12.tar
2、安裝對應開發包組
[root@CentOS7 ~]#yum groupinstall “Development Tools”
3、準備編譯內核配置文件,將系統現有的config配置文件復制并命名為.config
cp /boot/config-$(uname -r) ./.config
4、配置內核選項,基于curses的文本窗口界面來定義內核參數
注意:運行 #make menucofig命令過程中,可能會提示缺少相應的依賴包組。只需將對應缺少的包組依次安裝即可
上圖中”[ ]“ 里 * 表示打到核心里,M 是以模塊方式打到核心里,空白就表示不設置
上圖中選中General setup ,回車展開如下圖:
在下圖中輸入內核的版本,以及編譯者信息,可以自己隨便設定:
設置完內核選項后,按TAB建切換<Save> 保存然后退出
設置好的內核選項,可以查看已經設置的內容
5、開始編譯,操作如下圖:
通過lscpu 命令看到有4個CPU,內核編譯支持多線程編譯,這里編寫for循環,編譯結束提示聲音。
make -j 4 && for i in {1..10} ;do echo -e “\a”;sleep 1 ;done
注意:編譯過程中,可能會提示缺少相應的依賴包組。只需將對應缺少的包組依次安裝即可
由于編譯過程比較長,此時我們可以打開多一個終端窗口,實時觀察編譯大小
[root@CentOS7 ~/linux-4.12.10]#watch -n 5 du -sh linux-4.12.10
6、編譯完成后,執行如下操作:
[root@CentOS7 ~/linux-4.12.10]#make modules_install
安裝模塊,生成到/lib/modules目下
8、重啟選擇linux-4.12的內核啟動加載。
至此編譯內核安裝結束
編譯后續管理:
在已經執行過編譯操作后可對編譯后遺留的文件進行選擇性清理
- make clean :清理大多數編譯生成的文件,但會保留
config 文件等 - make mrproper: 清理所有編譯生成的文件、config 及某
些備份文件 - make distclean :mrproper 、patches 以及編輯器備份
文件
如果編譯后有錯誤,或不需要使用當前編譯好后的內核的話,也可進行刪除內核操作,只需將上述編譯生成的文件目錄刪除即可
- rm -rf /lib/modules/VERSIONS-NAME/
- rm -rf /boot/4.12
- 刪除/boot/grub2/grub.conf文件下生成的配置文件