準(zhǔn)備工作
1. 下載源碼包
Linux內(nèi)核版本有兩種:穩(wěn)定版和開發(fā)版 窖壕,Linux內(nèi)核版本號由3個數(shù)字組成:r.x.y
r: 主版本號
x: 次版本號危彩,偶數(shù)表示穩(wěn)定版本;奇數(shù)表示開發(fā)中版本咙好。
y: 修訂版本號 辑莫, 表示修改的次數(shù)
去 http://www.kernel.org 首頁,可以看到有stable, longterm等版本,longterm是比stable更穩(wěn)定的版本茸苇,會長時間更新排苍,因此我選擇 3.10.28,
wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.10.28.tar.xz
2. 解壓
tar -xf linux-3.10.28.tar.xz
3. 更新當(dāng)前系統(tǒng)
sudo yum update
sudo yum upgrade
4. 安裝編譯內(nèi)核所需要的軟件包
sudo yum groupinstall "Development Tools" # 一口氣安裝編譯時所需的一切工具
sudo yum install ncurses-devel #必須這樣才能讓 make *config 這個指令正確地執(zhí)行学密。
sudo yum install qt-devel #如果你沒有 X 環(huán)境淘衙,這一條可以不用
sudo yum install hmaccalc zlib-devel binutils-devel elfutils-libelf-devel #創(chuàng)建 CentOS-6 內(nèi)核時需要它們
配置文件
1. 查看當(dāng)前系統(tǒng)內(nèi)核
uname -r
2.6.32-358.11.1.el6.x86_64
2. 將當(dāng)前系統(tǒng)的配置文件拷貝到當(dāng)前目錄
cd linux-3.10.28
cp /boot/config-2.6.32-358.11.1.el6.x86_64 .config
3. 使用舊內(nèi)核配置,并自動接受每個新增選項的默認(rèn)設(shè)置
sh -c 'yes "" | make oldconfig'
make oldconfig會讀取當(dāng)前目錄下的.config文件腻暮,在.config文件里沒有找到的選項則提示用戶填寫幔翰,然后備份.config文件為.config.old,并生成新的.config文件
編譯
sudo make -j8 bzImage #生成內(nèi)核文件
sudo make -j8 modules #編譯模塊
sudo make -j8 modules_install #編譯安裝模塊
要嚴(yán)格按照這個順序進行編譯西壮,不能合并成一句遗增,sudo make -j8 bzImage modules modules_install。
-j后面的數(shù)字是線程數(shù)款青,用于加快編譯速度做修,一般的經(jīng)驗是,有多少G內(nèi)存抡草,就填寫那個數(shù)字饰及,例如有8G內(nèi)存,則為-j8康震。
安裝
sudo make install
如果出現(xiàn)了 ERROR: modinfo: could not find module xxx燎含,數(shù)量少的話,可以忽略腿短。
修改Grub引導(dǎo)順序
安裝完成后屏箍,需要修改Grub引導(dǎo)順序,讓新安裝的內(nèi)核作為默認(rèn)內(nèi)核橘忱。
編輯 grub.conf文件赴魁,
sudo vim /etc/grub.conf
數(shù)一下剛剛新安裝的內(nèi)核在哪個位置,從0開始钝诚,然后設(shè)置default為那個數(shù)字颖御,一般新安裝的內(nèi)核在第一個位置,所以設(shè)置default=0凝颇。
重啟
sudo reboot
重啟后潘拱,看一下當(dāng)前內(nèi)核版本號,
uname -r
3.10.28
成功啦E÷浴芦岂!