yum和编译两种方式升级or降级Centos内核

   2016-12-23 0
核心提示:今天探讨用yum和编译两种方式升级或者降级内核版本:升级:比如玩kvm,docker等虚拟化,centos内核则升级尤为重要(虽然2.6.x内核通过加载模块也可以玩,但是效果不如3.x)降级:如果发现内核在危险漏洞列,降级内核则显得尤为重要。当然如果有特殊需求,也可

今天探讨用yum和编译两种方式升级或者降级内核版本:

升级:比如玩kvm,docker等虚拟化,centos内核则升级尤为重要(虽然2.6.x内核通过加载模块也可以玩,但是效果不如3.x)

降级:如果发现内核在危险漏洞列,降级内核则显得尤为重要。当然如果有特殊需求,也可以降级内核。

1、yum方式升级内核版本

1.1)查看当前系统内核版本

[root@node4 ~]# cat /etc/redhat-release 
CentOS release 6.6 (Final)
[root@node4 ~]# uname -r
2.6.32-504.el6.x86_64
[root@node4 ~]#

1.2)准备yum源,并安装

#http://elrepo.org/linux/kernel/el6/x86_64/RPMS/(网址)
#导入key如果已经修改了repo的gpgcheck=0也可以不导入key
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
#安装elrepo的yum源
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
#安装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

yum和编译两种方式升级or降级Centos内核

查看boot分区:

yum和编译两种方式升级or降级Centos内核

附加:查看指定的内核版本:

[root@node4 ~]# yum --enablerepo=elrepo-kernel  list  |grep kernel*
 * elrepo-kernel: hkg.mirror.rackspace.com
dracut-kernel.noarch                    004-356.el6               @anaconda-CentOS-201410241409.x86_64/6.6
kernel.x86_64                           2.6.32-504.el6            @anaconda-CentOS-201410241409.x86_64/6.6
kernel-firmware.noarch                  2.6.32-504.el6            @anaconda-CentOS-201410241409.x86_64/6.6
kernel-headers.x86_64                   2.6.32-573.18.1.el6       @updates      
kernel-lt.x86_64                        3.10.104-1.el6.elrepo     @elrepo-kernel
abrt-addon-kerneloops.x86_64            2.0.8-40.el6.centos       base          
dracut-kernel.noarch                    004-409.el6_8.2           updates       
erlang-kernel.x86_64                    R14B-04.3.el6             epel          
kernel.x86_64                           2.6.32-642.11.1.el6       updates       
kernel-abi-whitelists.noarch            2.6.32-642.11.1.el6       updates       
kernel-debug.x86_64                     2.6.32-642.11.1.el6       updates       
kernel-debug-devel.i686                 2.6.32-642.11.1.el6       updates       
kernel-debug-devel.x86_64               2.6.32-642.11.1.el6       updates       
kernel-devel.x86_64                     2.6.32-642.11.1.el6       updates       
kernel-doc.noarch                       2.6.32-642.11.1.el6       updates       
kernel-firmware.noarch                  2.6.32-642.11.1.el6       updates       
kernel-headers.x86_64                   2.6.32-642.11.1.el6       updates       
kernel-lt-devel.x86_64                  3.10.104-1.el6.elrepo     elrepo-kernel 
kernel-lt-doc.noarch                    3.10.104-1.el6.elrepo     elrepo-kernel 
kernel-lt-firmware.noarch               3.10.104-1.el6.elrepo     elrepo-kernel 
kernel-lt-headers.x86_64                3.10.104-1.el6.elrepo     elrepo-kernel 
kernel-ml.x86_64                        4.9.0-1.el6.elrepo        elrepo-kernel 
kernel-ml-devel.x86_64                  4.9.0-1.el6.elrepo        elrepo-kernel 
kernel-ml-doc.noarch                    4.9.0-1.el6.elrepo        elrepo-kernel 
kernel-ml-firmware.noarch               4.9.0-1.el6.elrepo        elrepo-kernel 
kernel-ml-headers.x86_64                4.9.0-1.el6.elrepo        elrepo-kernel 
libreport-plugin-kerneloops.x86_64      2.0.9-32.el6.centos       base          
perf.x86_64                             4.9.0-1.el6.elrepo        elrepo-kernel 
php-symfony-http-kernel.noarch          2.3.42-1.el6              epel          
[root@node4 ~]#

1.3)编辑grub.conf文件,修改Grub引导顺序

[root@node4 ~]# cp /etc/grub.conf /etc/grub.conf.bak

注意:养成实时备份的习惯,技术修改有问题,也可以进去单用户或者救援模式修复。

vim/etc/grub.conf

设置default值(从0开始),一般新安装的内核在第一个位置,所以设置default=0。

#default=1
default=0

1.4)重启使其生效:

[root@node4 ~]# shutdown -r now

1.5)查看检测:

yum和编译两种方式升级or降级Centos内核

[root@node4 ~]# cat /etc/redhat-release 
CentOS release 6.6 (Final)
[root@node4 ~]# uname -r
3.10.104-1.el6.elrepo.x86_64
[root@node4 ~]#

评价:yum方式比较简单并且快,但是如果想要自己定义其内核路径,则显得力不从心。

2、编译升级内核(降级不测试)

eg:工作碰到需要修改内核配置,编译驱动,调节相关参数等,则需要定制内核。

官网: https://www.kernel.org/pub/linux/kernel/

2.1)下载指定版本并安装配置

[root@node4 ~]# wget --no-check-certificate   https://www.kernel.org/pub/linux/kernel/linux-3.2.4.tar.gz
[root@node4 ~]# du -sh linux-3.2.4.tar.gz 
95M	linux-3.2.4.tar.gz
[root@node4 ~]#
#yum -y install gcc ncurses-devel(依赖包)
[root@node4 ~]# tar xf linux-3.2.4.tar.gz 
[root@node4 ~]# ll
总用量 96336
drwxrwxr-x 23 root root     4096 2月   4 2012 linux-3.2.4
-rw-r--r--  1 root root 98642809 2月   4 2012 linux-3.2.4.tar.gz
[root@node4 ~]#
[root@node4 ~]# cd linux-3.2.4
#[root@node4 linux-3.2.4]# make --help
# make mrproper  #清除环境变量,即清除配置文件
# make menuconfig  #在菜单模式下选择需要编译的内核模块
make menuconfig(出现图形)

yum和编译两种方式升级or降级Centos内核

大致意思:

箭头键导航菜单。<输入>选择子菜单- - >。高亮显示的字母是热键。按< Y >包括< N >│
│排除,< M >模块化特性。按退出< Esc > < Esc >,< ?>,< / >搜索。传说:[*]内置[]排除│
│< M > < >模块能力

yum和编译两种方式升级or降级Centos内核

make clean #确保所有东西均保持最新状态.
make bzImage #生成内核文件
make modules #编译模块
make modules_install #安装模块
make install #安装
#make all
#make modules_install #安装模块
#make install

2.2)编辑grub.conf文件,修改Grub引导顺序

vim/etc/grub.conf

设置default值(从0开始),一般新安装的内核在第一个位置,所以设置default=0。

#default=1
default=0

2.3)重启使其生效:

[root@node4 ~]# shutdown -r now

2.4)查看检测:

[root@node4 ~]# cat /etc/redhat-release 
CentOS release 6.6 (Final)
[root@node4 ~]# uname -r
3.2.4
[root@node4 ~]#

评价:慢!而且需要一定经验,最好配置前查看官方手册。

3、yum方式降级内核版本

dracut-kernel.noarch                    004-356.el6               @anaconda-CentOS-201410241409.x86_64/6.6
kernel.x86_64                           2.6.32-504.el6            @anaconda-CentOS-201410241409.x86_64/6.6
kernel-firmware.noarch                  2.6.32-504.el6            @anaconda-CentOS-201410241409.x86_64/6.6
kernel-headers.x86_64                   2.6.32-573.18.1.el6       @updates      
kernel-lt.x86_64                        3.10.104-1.el6.elrepo     @elrepo-kernel
abrt-addon-kerneloops.x86_64            2.0.8-40.el6.centos       base          
dracut-kernel.noarch                    004-409.el6_8.2           updates       
erlang-kernel.x86_64                    R14B-04.3.el6             epel          
kernel.x86_64                           2.6.32-642.11.1.el6       updates       
kernel-abi-whitelists.noarch            2.6.32-642.11.1.el6       updates       
kernel-debug.x86_64                     2.6.32-642.11.1.el6       updates       
kernel-debug-devel.i686                 2.6.32-642.11.1.el6       updates       
kernel-debug-devel.x86_64               2.6.32-642.11.1.el6       updates       
kernel-devel.x86_64                     2.6.32-642.11.1.el6       updates       
kernel-doc.noarch                       2.6.32-642.11.1.el6       updates       
kernel-firmware.noarch                  2.6.32-642.11.1.el6       updates       
kernel-headers.x86_64                   2.6.32-642.11.1.el6       updates       
kernel-lt-devel.x86_64                  3.10.104-1.el6.elrepo     elrepo-kernel 
kernel-lt-doc.noarch                    3.10.104-1.el6.elrepo     elrepo-kernel 
kernel-lt-firmware.noarch               3.10.104-1.el6.elrepo     elrepo-kernel 
kernel-lt-headers.x86_64                3.10.104-1.el6.elrepo     elrepo-kernel 
kernel-ml.x86_64                        4.9.0-1.el6.elrepo        elrepo-kernel 
kernel-ml-devel.x86_64                  4.9.0-1.el6.elrepo        elrepo-kernel 
kernel-ml-doc.noarch                    4.9.0-1.el6.elrepo        elrepo-kernel 
kernel-ml-firmware.noarch               4.9.0-1.el6.elrepo        elrepo-kernel 
kernel-ml-headers.x86_64                4.9.0-1.el6.elrepo        elrepo-kernel 
libreport-plugin-kerneloops.x86_64      2.0.9-32.el6.centos       base          
perf.x86_64                             4.9.0-1.el6.elrepo        elrepo-kernel 
php-symfony-http-kernel.noarch          2.3.42-1.el6              epel          
[root@node4 ~]#

eg:降级到指定版本(需要yum源支持指定版本的内核)

#yum install kernel-2.6.32-642.11.1.el6

3.1)查看

yum和编译两种方式升级or降级Centos内核

3.2)截止目前有四个不同版本内核:

[root@node4 ~]# ll /boot/
总用量 94418
-rw-r--r--. 1 root root   106308 10月 15 2014 config-2.6.32-504.el6.x86_64
-rw-r--r--  1 root root   108108 11月 19 03:30 config-2.6.32-642.11.1.el6.x86_64
-rw-r--r--  1 root root   142778 10月 21 22:56 config-3.10.104-1.el6.elrepo.x86_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-2.6.32-504.el6.x86_64.img
-rw-------  1 root root 21406778 12月 14 13:55 initramfs-2.6.32-642.11.1.el6.x86_64.img
-rw-------  1 root root 17744666 3月  25 2016 initramfs-3.10.104-1.el6.elrepo.x86_64.img
-rw-------  1 root root  6086742 12月 14 13:05 initramfs-3.2.4.img
drwx------. 2 root root    12288 2月  23 2016 lost+found
-rw-r--r--. 1 root root   200191 10月 15 2014 symvers-2.6.32-504.el6.x86_64.gz
-rw-r--r--  1 root root   215530 11月 19 03:30 symvers-2.6.32-642.11.1.el6.x86_64.gz
-rw-r--r--  1 root root   258396 10月 21 22:57 symvers-3.10.104-1.el6.elrepo.x86_64.gz
lrwxrwxrwx  1 root root       22 12月 14 13:04 System.map -> /boot/System.map-3.2.4
-rw-r--r--. 1 root root  2544748 10月 15 2014 System.map-2.6.32-504.el6.x86_64
-rw-r--r--  1 root root  2618532 11月 19 03:30 System.map-2.6.32-642.11.1.el6.x86_64
-rw-------  1 root root  2928610 10月 21 22:56 System.map-3.10.104-1.el6.elrepo.x86_64
-rw-r--r--  1 root root  2407430 12月 14 13:04 System.map-3.2.4
-rw-r--r--  1 root root  2407430 12月 14 13:02 System.map-3.2.4.old
lrwxrwxrwx  1 root root       19 12月 14 13:04 vmlinuz -> /boot/vmlinuz-3.2.4
-rwxr-xr-x. 1 root root  4152336 10月 15 2014 vmlinuz-2.6.32-504.el6.x86_64
-rwxr-xr-x  1 root root  4269936 11月 19 03:30 vmlinuz-2.6.32-642.11.1.el6.x86_64
-rwxr-xr-x  1 root root  4865424 10月 21 22:56 vmlinuz-3.10.104-1.el6.elrepo.x86_64
-rw-r--r--  1 root root  4023040 12月 14 13:04 vmlinuz-3.2.4
-rw-r--r--  1 root root  4023040 12月 14 13:02 vmlinuz-3.2.4.old
[root@node4 ~]#

default=0
#default行,是指grub启动时默认菜单项。0表示第一项,如果是多系统可以修改此选项改变默认光标停留位置。
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.32-642.11.1.el6.x86_64)
        root (hd0,0)
        kernel /vmlinuz-2.6.32-642.11.1.el6.x86_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_CN.UTF-8 rd_LVM_LV=vg_node4/lv_root  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
        initrd /initramfs-2.6.32-642.11.1.el6.x86_64.img
title CentOS (3.2.4)
        root (hd0,0)
        kernel /vmlinuz-3.2.4 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-3.2.4.img
title CentOS (3.10.104-1.el6.elrepo.x86_64)
        root (hd0,0)
        kernel /vmlinuz-3.10.104-1.el6.elrepo.x86_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_CN.UTF-8 rd_LVM_LV=vg_node4/lv_root  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
        initrd /initramfs-3.10.104-1.el6.elrepo.x86_64.img
title CentOS 6 (2.6.32-504.el6.x86_64)
        root (hd0,0)

3.3) 重启使其生效:

[root@node4 ~]# shutdown -r now

yum和编译两种方式升级or降级Centos内核

[root@node4 ~]# cat /etc/redhat-release 
CentOS release 6.6 (Final)
[root@node4 ~]# uname -r
2.6.32-642.11.1.el6.x86_64
[root@node4 ~]#

4、总结:

1、内核的升级和降级要有完整的流程,不可直接操作, 注意升级或者降级中文件的备份

2、yum和编译升级和降级要根据环境具体而定,yum方便,编译定制麻烦。

3、centos6和centos7是有区别的,比如grub的引导文件,centos7(/boot/grub2)

如有不妥,可联系博主,欢迎指正!

本文出自 “永不放弃! 任志远” 博客,转载请与作者联系!

 
标签: Centos Yum
反对 0举报 0 评论 0
 

免责声明:本文仅代表作者个人观点,与乐学笔记(本网)无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
    本网站有部分内容均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,若因作品内容、知识产权、版权和其他问题,请及时提供相关证明等材料并与我们留言联系,本网站将在规定时间内给予删除等相关处理.

  • 用Xshell设置CentOS密钥登录
    用Xshell设置CentOS密钥登录
    今天带来设置X shell 密钥登录  因为用的中文x shell 所以按照中文设置很简单1.点击工具(Tools)------新建用户密钥生成向导(New User key Wizard)(附图)2.然后出现下图时,记得密钥类型 选择RSA.其实选择DSA ,也能实现,二者其实是不同的算法。(我用的R
    03-08
  • 如何在 CentOS 7 / RHEL 7 终端服务器上安装 KVM
    如何在 CentOS 7 / RHEL 7 终端服务器上安装 KV
    如何在 CnetOS 7 或 RHEL 7(Red Hat 企业版 Linux)服务器上安装和配置 KVM(基于内核的虚拟机)?如何在 CentOS 7 上设置 KVM 并使用云镜像 / cloud-init 来安装客户虚拟机?基于内核的虚拟机(KVM)是 CentOS 或 RHEL 7 的虚拟化软件。KVM 可以将你的服务
    03-08
  • centOS下安装Adobe Flash Player
    centOS下安装Adobe Flash Player
    centOS下安装Adobe Flash Player  2009-10-09 11:29:33|  分类:linux|  标签: |订阅 写出来就这么简单几步,当初刚接触Linux的时候搜索了很长时间,找了很多资料,总是出现这样那样的问题,最后终于摸索出最简单最有效的安装的方法。 随便打开一个带
    03-08
  • Red Hat Linux、rhel 和 Fedora Core 以及 Cent
    Red Hat Linux、rhel 和 Fedora Core 以及 Centos 区别与联系1. Red Hat LinuxLinux是GNU/Linux的缩写,通常指各种Linux发行版的通称,Red Hat Linux是redhat最早发行的个人版本的linux, 其1。0版本于1994年11月3日发行。虽然其历史不及其它linux发行
    02-10
  • CentOS 下的apache服务器配置与管理
    一、WEB服务器与Apache1、web服务器与网址2、Apache的历史3、补充http://www.netcraft.com/可以查看apache服务器的市场占有率同时必须注意的是ngnix,正处于强势增长的上升时期,大有和apache一争天下的感觉,真是后生可畏~~~二、Apache服务器的管理命令1、命
    02-10
  • 如何在Fedora或CentOS上使用Samba共享
    如何在Fedora或CentOS上使用Samba共享
    如今,无论在家里或者是办公场所,不同的电脑之间共享文件夹已不是什么新鲜事了。在这种趋势下,现代操作系统通过网络文件系统的方式使得电脑间数据的交换变得简单而透明。如果您工作的环境中既有微软的Windows又有Linux,那么,一个共享文件及目录的方式便是
    02-10
  • CentOS 6.9下KVM虚拟机网络Bridge(网桥)方式与NAT方式详解(转)
    CentOS 6.9下KVM虚拟机网络Bridge(网桥)方式
    摘要:KVM虚拟机网络配置的两种方式:NAT方式和Bridge方式。Bridge方式的配置原理和步骤。Bridge方式适用于服务器主机的虚拟化。NAT方式适用于桌面主机的虚拟化。NAT的网络结构图:Bridge的网络结构见图:一、Bridge方式问题客户机安装完成后,需要为其设置网
    02-10
  • 使用KVM的命令行方式安装centos7虚拟机
    使用KVM的命令行方式安装centos7虚拟机
    1.宿主机上已经安装KVM软件,参考网址:https://www.cnblogs.com/sanduzxcvbnm/p/15538881.html2.已经上传centos7镜像到宿主机里非必要前提条件,可做可不做1.kvm修改默认存储路径2.kvm设置桥接网络挂载U盘,把U盘里存放的iso系统镜像挂载到宿主机里[root@nkgt
    02-10
  • 部署Node.js项目(CentOS) node项目搭建
    部署Node.js项目(CentOS) node项目搭建
    操作步骤步骤 1:创建ECS实例选择操作系统为公共镜像CentOS7.2。使用root用户登录Linux实例。步骤2:部署Node.js环境—二进制文件安装该部署过程使用的安装包是已编译好的二进制文件,解压之后,在bin文件夹中就已存在node和npm,无需手工编译。安装步骤:1、
    02-10
  • centos安装python与jdk centos安装python3.7
    centos安装python与jdk centos安装python3.7
    安装python#压缩包安装[root@china ~]# yum -y install zlib*Loaded plugins: fastestmirror, refresh-packagekit, securityLoading mirror speeds from cached hostfile * base: mirrors.aliyun.com * extras: mirrors.aliyun.com * updates: mirrors.aliyun
    02-10
点击排行