今天探討用yum和編譯兩種方式升級或者降級內核版本:
升級:比如玩kvm,docker等虛擬化,centos內核則升級尤爲重要(雖然內核通過加載模塊也可以玩,但是效果不如)
降級:如果發現內核在危險漏洞列,降級內核則顯得尤爲重要。當然如果有特殊需求,也可以降級內核。
1、yum方式升級內核版本
)查看當前系統內核版本
[root@node4 ~]# cat /etc/redhat-release CentOS release (Final) [root@node4 ~]# uname -r -_64 [root@node4 ~]#
)準備yum源,並安裝
#/linux/kernel/el6/x86_64/RPMS/(網址) #導入key如果已經修改了repo的gpgcheck=0也可以不導入key rpm --import /RPM-GPG-KEY- #安裝elrepo的yum源 rpm -Uvh /elrepo-release-- #安裝kernel-lt(lt=long-term) yum --enablerepo=elrepo-kernelinstallkernel-lt -y 你也可以裝kernel-ml(ml=mainline) yum --enablerepo=elrepo-kernelinstallkernel-ml -y #ml(mainline)爲最新版本的內核,lt爲長期支持的內核。 [root@node4 ~]# yum --enablerepo=elrepo-kernel install kernel-lt -y
查看boot分區:
附加:查看指定的內核版本:
[root@node4 ~]# yum --enablerepo=elrepo-kernel list |grep kernel* * elrepo-kernel: dracut- 004- @anaconda-CentOS-_64/ _64 - @anaconda-CentOS-_64/ kernel- - @anaconda-CentOS-_64/ kernel-_64 - @updates kernel-_64 - @elrepo-kernel abrt-addon-_64 - base dracut- 004-_ updates erlang-_64 R14B- epel _64 - updates kernel-abi- - updates kernel-_64 - updates kernel-debug- - updates kernel-debug-_64 - updates kernel-_64 - updates kernel- - updates kernel- - updates kernel-_64 - updates kernel-lt-_64 - elrepo-kernel kernel-lt- - elrepo-kernel kernel-lt- - elrepo-kernel kernel-lt-_64 - elrepo-kernel kernel-_64 - elrepo-kernel kernel-ml-_64 - elrepo-kernel kernel-ml- - elrepo-kernel kernel-ml- - elrepo-kernel kernel-ml-_64 - elrepo-kernel libreport-plugin-_64 - base _64 - elrepo-kernel php-symfony-http- - epel [root@node4 ~]#
)編輯文件,修改Grub引導順序
[root@node4 ~]# cp /etc/ /etc/
注意:養成實時備份的習慣,技術修改有問題,也可以進去單用戶或者救援模式修復。
vim/etc/
設置default值(從0開始),一般新安裝的內核在第一個位置,所以設置default=0。
#default=1 default=0
)重啓使其生效:
[root@node4 ~]# shutdown -r now
)查看檢測:
[root@node4 ~]# cat /etc/redhat-release CentOS release (Final) [root@node4 ~]# uname -r -_64 [root@node4 ~]#
評價:yum方式比較簡單並且快,但是如果想要自己定義其內核路徑,則顯得力不從心。
2、編譯升級內核(降級不測試)
eg:工作碰到需要修改內核配置,編譯驅動,調節相關參數等,則需要定製內核。
官網:/pub/linux/kernel/
)下載指定版本並安裝配置
[root@node4 ~]# wget --no-check-certificate /pub/linux/kernel/linux- [root@node4 ~]# du -sh linux- 95M linux- [root@node4 ~]# #yum -y install gcc ncurses-devel(依賴包) [root@node4 ~]# tar xf linux- [root@node4 ~]# ll 總用量 96336 drwxrwxr-x 23 root root 4096 2月 4 2012 linux- -rw-r--r-- 1 root root 98642809 2月 4 2012 linux- [root@node4 ~]# [root@node4 ~]# cd linux- #[root@node4 linux-]# make --help # make mrproper #清除環境變量,即清除配置文件 # make menuconfig #在菜單模式下選擇需要編譯的內核模塊
make menuconfig(出現圖形)
大致意思:
箭頭鍵導航菜單。<輸入>選擇子菜單-
- >。高亮顯示的字母是熱鍵。按< Y >包括< N >│
│排除,< M >模塊化特性。按退出< Esc > < Esc >,< ?>,< / >搜索。傳說:[*]內置[]排除│
│< M > < >模塊能力
make clean #確保所有東西均保持最新狀態. make bzImage #生成內核文件 make modules #編譯模塊 make modules_install #安裝模塊 make install #安裝 #make all #make modules_install #安裝模塊 #make install
)編輯文件,修改Grub引導順序
vim/etc/
設置default值(從0開始),一般新安裝的內核在第一個位置,所以設置default=0。
#default=1 default=0
)重啓使其生效:
[root@node4 ~]# shutdown -r now
)查看檢測:
[root@node4 ~]# cat /etc/redhat-release CentOS release (Final) [root@node4 ~]# uname -r [root@node4 ~]#
評價:慢!而且需要一定經驗,最好配置前查看官方手冊。
3、yum方式降級內核版本
dracut- 004- @anaconda-CentOS-_64/ _64 - @anaconda-CentOS-_64/ kernel- - @anaconda-CentOS-_64/ kernel-_64 - @updates kernel-_64 - @elrepo-kernel abrt-addon-_64 - base dracut- 004-_ updates erlang-_64 R14B- epel _64 - updates kernel-abi- - updates kernel-_64 - updates kernel-debug- - updates kernel-debug-_64 - updates kernel-_64 - updates kernel- - updates kernel- - updates kernel-_64 - updates kernel-lt-_64 - elrepo-kernel kernel-lt- - elrepo-kernel kernel-lt- - elrepo-kernel kernel-lt-_64 - elrepo-kernel kernel-_64 - elrepo-kernel kernel-ml-_64 - elrepo-kernel kernel-ml- - elrepo-kernel kernel-ml- - elrepo-kernel kernel-ml-_64 - elrepo-kernel libreport-plugin-_64 - base _64 - elrepo-kernel php-symfony-http- - epel [root@node4 ~]#
eg:降級到指定版本(需要yum源支持指定版本的內核)
#yum install kernel--
)查看
)截止目前有四個不同版本內核:
[root@node4 ~]# ll /boot/ 總用量 94418 -rw-r--r--. 1 root root 106308 10月 15 2014 config--_64 -rw-r--r-- 1 root root 108108 11月 19 03:30 config--_64 -rw-r--r-- 1 root root 142778 10月 21 22:56 config--_64 drwxr-xr-x. 3 root root 1024 2月 23 2016 efi drwxr-xr-x. 2 root root 1024 12月 14 13:55 grub -rw-------. 1 root root 16139633 2月 23 2016 initramfs--_ -rw------- 1 root root 21406778 12月 14 13:55 initramfs--_ -rw------- 1 root root 17744666 3月 25 2016 initramfs--_ -rw------- 1 root root 6086742 12月 14 13:05 initramfs- drwx------. 2 root root 12288 2月 23 2016 lost+found -rw-r--r--. 1 root root 200191 10月 15 2014 symvers--_ -rw-r--r-- 1 root root 215530 11月 19 03:30 symvers--_ -rw-r--r-- 1 root root 258396 10月 21 22:57 symvers--_ lrwxrwxrwx 1 root root 22 12月 14 13:04 -> /boot/- -rw-r--r--. 1 root root 2544748 10月 15 2014 --_64 -rw-r--r-- 1 root root 2618532 11月 19 03:30 --_64 -rw------- 1 root root 2928610 10月 21 22:56 --_64 -rw-r--r-- 1 root root 2407430 12月 14 13:04 - -rw-r--r-- 1 root root 2407430 12月 14 13:02 - lrwxrwxrwx 1 root root 19 12月 14 13:04 vmlinuz -> /boot/vmlinuz- -rwxr-xr-x. 1 root root 4152336 10月 15 2014 vmlinuz--_64 -rwxr-xr-x 1 root root 4269936 11月 19 03:30 vmlinuz--_64 -rwxr-xr-x 1 root root 4865424 10月 21 22:56 vmlinuz--_64 -rw-r--r-- 1 root root 4023040 12月 14 13:04 vmlinuz- -rw-r--r-- 1 root root 4023040 12月 14 13:02 vmlinuz- [root@node4 ~]# default=0 #default行,是指grub啓動時默認菜單項。0表示第一項,如果是多系統可以修改此選項改變默認光標停留位置。 timeout=5 splashimage=(hd0,0)/grub/ hiddenmenu title CentOS (-_64) root (hd0,0) kernel /vmlinuz--_64 ro root=/dev/mapper/vg_node4-lv_root rd_NO_LUKS rd_NO_MD rd_LVM_LV=vg_node4/lv_swap crashke rnel=auto LANG=zh_-8 rd_LVM_LV=vg_node4/lv_root KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet initrd /initramfs--_ title CentOS () root (hd0,0) kernel /vmlinuz- ro root=/dev/mapper/vg_node4-lv_root rd_NO_LUKS rd_NO_MD rd_LVM_LV=vg_node4/lv_swap crashkernel=auto LANG=zh_CN. UTF-8 rd_LVM_LV=vg_node4/lv_root KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet initrd /initramfs- title CentOS (-_64) root (hd0,0) kernel /vmlinuz--_64 ro root=/dev/mapper/vg_node4-lv_root rd_NO_LUKS rd_NO_MD rd_LVM_LV=vg_node4/lv_swap crash kernel=auto LANG=zh_-8 rd_LVM_LV=vg_node4/lv_root KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet initrd /initramfs--_ title CentOS 6 (-_64) root (hd0,0)
)重啓使其生效:
[root@node4 ~]# shutdown -r now
[root@node4 ~]# cat /etc/redhat-release CentOS release (Final) [root@node4 ~]# uname -r -_64 [root@node4 ~]#
4、總結:
1、內核的升級和降級要有完整的流程,不可直接操作,注意升級或者降級中文件的備份
2、yum和編譯升級和降級要根據環境具體而定,yum方便,編譯定製麻煩。
3、centos6和centos7是有區別的,比如grub的引導文件,centos7(/boot/grub2)
如有不妥,可聯繫博主,歡迎指正!