小編之前寫過一篇軟件的源碼編譯安裝,今天小編再給你們帶來一篇內核的編譯安裝。
今天,就以centos7 編譯安裝最新版本4.13.2 內核爲例,給你們詳解。編譯安裝以前,檢查一下本身的磁盤空間,大約需10G左右。linux
① 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行代碼,還不是全部文件,可知編寫一個內核有多麼難!!!vim
以系統上原有的操做系統爲模板,拷一個模板文件到咱們的目錄,並命名爲.config的隱藏文件
cp /boot/config-3.10.0-514.el7.x86_64 /app/kernel4.13/linux-4.13.2/.config
這個文件的做用:定義編譯內核時,功能的特性centos
=y:打到核內心,之後放在 vmlinux中 =m:模塊方式,之後就表現爲 ko文件 not set:該功能不啓用
yum groupinstall "development tools"
注意要加"",這個包組提供了編譯安裝所須要的工具
若是已安裝就無需再安裝網絡
(1) cd /app/kernel4.13/linux-4.13.2/ 必定要進入本身的目錄文件去完成後邊的執行
(2) make menuconfig
就至關於小編之前博客中編譯安裝服務的.config腳本相似的功能
執行後會發現出錯,由於缺包
(3) 缺什麼包,安裝什麼包
yum install ncurses-devel -y
(4) 繼續執行make menuconfig,成功後,會顯示這樣的窗口菜單
(5) 窗口菜單中的一些設置,回車就進入子菜單,在這個菜單中,想要設置什麼功能,均可以本身設置app
按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,發現和咱們修改的同樣
less
(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工具
安裝完成後ls /lib/modules
會出現我們本身編譯的內核
centos7
安裝完成後ls /boot
會出現我們本身編譯的內核相關文件
執行後,會有個報錯,不用管,不用終止,等它生產文件
操作系統
cat /boot/grub2/grub.cfg
reboot 重啓時,發現有我們的內核新菜單
3d
到此,咱們的編譯安裝內核就完成了!!!咱們就能夠愉快的用咱們的新內核了。可是企業中應該不多會換內核,由於新的內核可能不適合本身的系統,有各類各樣的BUG,固然,咱們仍是要掌握這高大上的技術,由於能夠出去裝B。。。
若是發現本身編譯安裝的內核版本不適合本身的系統,能夠卸載,不能只會安裝。
一、cd /boot 刪除(本身安裝的版本eg:4.13)啓動的內核和內核映像文件
二、cd /lib/modules/ 刪除不須要的內核庫文件
三、cd/app (本身安裝源碼的目錄) 刪除不須要的內核源碼
四、vim /boot/grub/grub.conf 更改grub的配置文件,刪除不須要的內核啓動列表菜單
這樣本身編譯安裝的內核就清乾淨了。