首頁 > 軟體

CentOS 6/7 上編譯安裝Linux核心

2020-06-16 17:03:07

小編以前寫過一篇軟體的原始碼編譯安裝,今天小編再給大家帶來一篇核心的編譯安裝。今天,就以CentOS 7 編譯安裝最新版本Linux 4.13.2 核心為例,給大家詳解。編譯安裝之前,檢查一下自己的磁碟空間,大約需10G左右。

一、去官網(www.kernel.org)下載最新版本4.13.2


① rz上傳
② 建立一個放核心的空目錄 /app/kernel4.13,mv linux-4.13.2.tar.xz /app/kernel4.13/
tar xvf linux-4.13.2.tar.xz 解包,解包之前大約只有100M,解包之後875M
④ 擴充套件小知識:for i in `find /app/linux-4.13.2 -name *.c |xargs -n1` ;do file=`cat $i |wc -l` ;let sum+=file ;done ;echo sum=$sum 可以查出以.c結尾的檔案有17233537行程式碼,還不是所有檔案,可知編寫一個核心有多麼難!!!

二、準備文字組態檔(選單): .config

以系統上原有的作業系統為模板,拷一個模板檔案到我們的目錄,並命名為.config的隱藏檔案
  cp /boot/config-3.10.0-514.el7.x86_64 /app/kernel4.13/linux-4.13.2/.config
這個檔案的作用:定義編譯核心時,功能的特性

=y:打到核心裡,以後放在 vmlinux中
=m:模組方式,以後就表現為 ko檔案
not set:該功能不啟用

三、安裝編譯安裝需要的包組

yum groupinstall "development tools" 

注意要加"",這個包組提供了編譯安裝所需要的工具
如果已安裝就無需再安裝

四、設定核心選項:make menuconfig

(1) cd /app/kernel4.13/linux-4.13.2/ 一定要進入自己的目錄檔案去完成後邊的執行
(2) make menuconfig 就相當於小編以前部落格中編譯安裝服務的.config指令碼類似的功能
執行後會發現出錯,因為缺包

  
(3) 缺什麼包,安裝什麼包
yum install ncurses-devel -y
  
(4) 繼續執行make menuconfig,成功後,會顯示這樣的視窗選單

  
(5) 視窗選單中的一些設定,迴車就進入子選單,在這個選單中,想要設定什麼功能,都可以自己設定

    按m,打到模組中,以後就表現為 ko檔案
    按y,打到核心裡,以後放在 vmlinux中
    空 ,就是關閉該功能

① General setup --->的子選單
   Local version - append to kernel release 進入這一項可以寫自己編譯安裝後的核心版本名
後續都是和硬體相關的,先不改了,按exit 退到上一層

② File systems ---> 檔案系統,ext4 xfs ntfs ... 裡邊有很多檔案系統
  DOS/FAT/NT Filesystems ---> 進入ntfs 的子選單,為了實驗後邊的證明,我們把這個功能開啟

③ Networking support ---> 網路的支援,有各種網路
   Wireless ---> 例如無線網路
④ Device Drivers ---> 裝置的驅動
......
(6)退到最後,會有彈框,選擇yes儲存退出

  
(7)這一步進行的所有操作都放入了.config中,為了驗證,我們剛才的操作儲存了,
grep -i ntfs .config 查詢ntfs,發現和我們修改的一樣

  

五、開始編譯:make

(1)因為這一步需要很長的時間,為了讓大家看到我花費的時間,我加了date,並且設定執行完成後提示10次警報提醒我
date >> /app/date.log ;make -j 8 ;date >> /app/date.log ;for i in {1..10} ;do echo -e "a" ;sleep 0.5 ;done
大家執行這一步,只需 make -j 8 就行
(2)初次執行,也會報錯,缺少包

  
(3)yum -y install openssl-devel 老方法,缺啥按啥
  
(4)繼續執行
date >> /app/date.log ;make -j 8 ;date >> /app/date.log ;for i in {1..10} ;do echo -e "a" ;sleep 0.5 ;done

編譯完成,我的機器設定較低,用時48分鐘,目錄大小變為: 9.2G

六、安裝模組:make modules_install

安裝完成後ls /lib/modules 會出現咱們自己編譯的核心

  

七、安裝核心相關檔案:make install

安裝完成後ls /boot 會出現咱們自己編譯的核心相關檔案
執行後,會有個報錯,不用管,不用終止,等它生產檔案

  

八、查詢grub的組態檔,看有沒有多新的選單

cat /boot/grub2/grub.cfg

reboot 重新啟動時,發現有咱們的核心新選單

到此,我們的編譯安裝核心就完成了!!!我們就可以愉快的用我們的新核心了。但是企業中應該很少會換核心,因為新的核心可能不適合自己的系統,有各種各樣的BUG,當然,我們還是要掌握這高大上的技術,因為可以出去裝B。。。
  

九、解除安裝核心

如果發現自己編譯安裝的核心版本不適合自己的系統,可以解除安裝,不能只會安裝。
1、cd /boot 刪除(自己安裝的版本eg:4.13)啟動的核心和核心映像檔案
2、cd /lib/modules/ 刪除不需要的核心庫檔案
3、cd/app (自己安裝原始碼的目錄) 刪除不需要的核心原始碼
4、vim /boot/grub/grub.conf 更改grub的組態檔,刪除不需要的核心啟動列表選單
這樣自己編譯安裝的核心就清乾淨了。

本文永久更新連結地址http://www.linuxidc.com/Linux/2017-11/148276.htm


IT145.com E-mail:sddin#qq.com