準備工作:
- 準備好開發(fā)環(huán)境
- 獲取目標主機上硬件設備相關信息
- 獲取目標主機系統(tǒng)功能的相關信息
- 獲取內核源代碼
www.kernel.org
開發(fā)環(huán)境準備
包組(Centos 7):Development Tools
yum grouplist 查看包組信息
目標主機硬件設備相關信息:
CPU: cat /proc/cpuinfo
lscpu
PCI設備:
lspci (-v|-vv)
lsusb (-v|-vv)
lsblk 塊設備
由于是在虛擬環(huán)境下進行掠械,我們可以將cpu設置成最大使用核心數,已到達加速編譯的目的
步驟如下:
1、下載源碼文件:linux-4.12.tat;并解壓縮至當/root下或/usr/src
[root@CentOS7 ~]#tar xvf linux-4.12.tar
2聂宾、安裝對應開發(fā)包組
[root@CentOS7 ~]#yum groupinstall “Development Tools”
3、準備編譯內核配置文件闲勺,將系統(tǒng)現有的config配置文件復制并命名為.config
cp /boot/config-$(uname -r) ./.config
4旬蟋、配置內核選項,基于curses的文本窗口界面來定義內核參數
注意:運行 #make menucofig命令過程中敬肚,可能會提示缺少相應的依賴包組毕荐。只需將對應缺少的包組依次安裝即可
上圖中”[ ]“ 里 * 表示打到核心里,M 是以模塊方式打到核心里,空白就表示不設置
上圖中選中General setup 艳馒,回車展開如下圖:
在下圖中輸入內核的版本憎亚,以及編譯者信息,可以自己隨便設定:
設置完內核選項后弄慰,按TAB建切換<Save> 保存然后退出
設置好的內核選項虽填,可以查看已經設置的內容
5、開始編譯曹动,操作如下圖:
通過lscpu 命令看到有4個CPU斋日,內核編譯支持多線程編譯,這里編寫for循環(huán)墓陈,編譯結束提示聲音恶守。
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仔拟、編譯完成后衫樊,執(zhí)行如下操作:
[root@CentOS7 ~/linux-4.12.10]#make modules_install
安裝模塊,生成到/lib/modules目下
8利花、重啟選擇linux-4.12的內核啟動加載科侈。
至此編譯內核安裝結束
編譯后續(xù)管理:
在已經執(zhí)行過編譯操作后可對編譯后遺留的文件進行選擇性清理
- 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文件下生成的配置文件