因爲跑內核程序需要特定的內核,所以需要特定的內核版本,整理一下網絡的教程~
1.準備
1.1下載特定的內核版本號
更多詳細的內核版本: https://www.kernel.org/pub/linux/kernel/
或者用 wget 指令 :wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.11.6.tar.xz
1.2解壓
tar xf linux-xxx.tar.xz
1.3 更新當前系統
sudo yum update
sudo yum upgrade
1.4 安裝必要軟件
sudo yum groupinstall "Development Tools" # 一口氣安裝編譯時所需的一切工具
sudo yum install ncurses-devel #必須這樣才能讓 make *config 這個指令正確地執行。
sudo yum install qt-devel #如果你沒有 X 環境,這一條可以不用
sudo yum install hmaccalc zlib-devel binutils-devel elfutils-libelf-devel #創建 CentOS-6 內核時需要它們
2 配置文件
2.1 查看當前系統內核
uname -r
2.6.32-358.11.1.el6.x86_64
2.2 將當前系統的配置文件拷貝到當前目錄
cp /boot/config-2.6.32-358.11.1.el6.x86_64 .config
2.3 使用舊內核配置,並自動接受每個新增選項的默認設置
sh -c 'yes "" | make oldconfig'
make oldconfig
會讀取當前目錄下的.config
文件,在.config
文件裏沒有找到的選項則提示用戶填寫,然後備份.config
文件爲.config.old
,並生成新的.config
文件,參考 http://stackoverflow.com/questions/4178526/what-does-make-oldconfig-do-exactly-linux-kernel-makefile
3 編譯
sudo make -j200 bzImage #生成內核文件
sudo make -j200 modules #編譯模塊
sudo make -j200 modules_install #編譯安裝模塊
要嚴格按照這個先後順序進行編譯
-j
後面的數字是線程數,用於加快編譯速度,一般的經驗是,有多少G內存,就填寫那個數字,例如有8G內存,則爲-j8
。
編譯過程會比較漫長。大概1-2小時
4 安裝
sudo make install
如果出現了 ERROR: modinfo: could not find module xxx
,數量少的話,可以忽略。
5 修改Grub引導順序
安裝完成後,需要修改Grub引導順序,讓新安裝的內核作爲默認內核。
編輯 grub.conf
文件,
sudo vim /etc/grub.conf
centos7 grub在:
/boot/grub2
數一下剛剛新安裝的內核在哪個位置,從0開始,然後設置default爲那個數字,一般新安裝的內核在第一個位置,所以設置default=0
。
6 重啓
重啓後,看一下當前內核版本號,
uname -r
7 如果失敗,則重新循環
如果失敗,重新開始的話,要清理上次編譯的現場
make mrproper #清理上次編譯的現場
然後轉到第2步,重新開始。
參考自:http://www.linuxidc.com/Linux/2014-01/95511.htm