Linux內核編譯與基礎管理

準備工作:

  • 準備好開發環境
  • 獲取目標主機上硬件設備相關信息
  • 獲取目標主機系統功能的相關信息
  • 獲取內核源代碼
    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命令過程中,可能會提示缺少相應的依賴包組。只需將對應缺少的包組依次安裝即可

menuconfig 界面

上圖中”[ ]“ 里 * 表示打到核心里,M 是以模塊方式打到核心里,空白就表示不設置

上圖中選中General setup ,回車展開如下圖:

設置版本

在下圖中輸入內核的版本,以及編譯者信息,可以自己隨便設定:

版本信息

設置完內核選項后,按TAB建切換<Save> 保存然后退出

設置好的內核選項,可以查看已經設置的內容

設置參數內容.png

5、開始編譯,操作如下圖:

cpu.png

通過lscpu 命令看到有4個CPU,內核編譯支持多線程編譯,這里編寫for循環,編譯結束提示聲音。
make -j 4 && for i in {1..10} ;do echo -e “\a”;sleep 1 ;done

注意:編譯過程中,可能會提示缺少相應的依賴包組。只需將對應缺少的包組依次安裝即可

提示缺少包組信息.png

由于編譯過程比較長,此時我們可以打開多一個終端窗口,實時觀察編譯大小

[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目下

modules.png

8、重啟選擇linux-4.12的內核啟動加載。

uname.png

至此編譯內核安裝結束


編譯后續管理:

在已經執行過編譯操作后可對編譯后遺留的文件進行選擇性清理

  • 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文件下生成的配置文件
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容