小編以前寫過一篇軟體的源碼編譯安裝,今天小編再給大家帶來一篇內核的編譯安裝。 今天,就以centos7 編譯安裝最新版本4.13.2 內核為例,給大家詳解。編譯安裝之前,檢查一下自己的磁碟空間,大約需10G左右。 一、去官網(www.kernel.or ...
小編以前寫過一篇軟體的源碼編譯安裝,今天小編再給大家帶來一篇內核的編譯安裝。
今天,就以centos7 編譯安裝最新版本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的配置文件,刪除不需要的內核啟動列表菜單
這樣自己編譯安裝的內核就清乾凈了。