yum和编译两种方式升级or降级Centos内核
http://blog.51cto.com/renzhiyuan/1882599
今天探讨用yum和编译两种方式升级或者降级内核版本:
升级:比如玩kvm,docker等虚拟化,centos内核则升级尤为重要(虽然2.6.x内核通过加载模块也可以玩,但是效果不如3.x)
降级:如果发现内核在危险漏洞列,降级内核则显得尤为重要。当然如果有特殊需求,也可以降级内核。
1、yum方式升级内核版本
1.1)查看当前系统内核版本
|
1
2
3
4
5
|
[root@node4 ~]# cat /etc/redhat-release CentOS release 6.6 (Final)[root@node4 ~]# uname -r2.6.32-504.el6.x86_64[root@node4 ~]# |
1.2)准备yum源,并安装
|
1
2
3
4
5
6
7
8
9
10
11
|
#http://elrepo.org/linux/kernel/el6/x86_64/RPMS/(网址)#导入key如果已经修改了repo的gpgcheck=0也可以不导入keyrpm --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 |

查看boot分区:

附加:查看指定的内核版本:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
[root@node4 ~]# yum --enablerepo=elrepo-kernel list |grep kernel* * elrepo-kernel: hkg.mirror.rackspace.comdracut-kernel.noarch 004-356.el6 @anaconda-CentOS-201410241409.x86_64/6.6kernel.x86_64 2.6.32-504.el6 @anaconda-CentOS-201410241409.x86_64/6.6kernel-firmware.noarch 2.6.32-504.el6 @anaconda-CentOS-201410241409.x86_64/6.6kernel-headers.x86_64 2.6.32-573.18.1.el6 @updates kernel-lt.x86_64 3.10.104-1.el6.elrepo @elrepo-kernelabrt-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引导顺序
|
1
|
[root@node4 ~]# cp /etc/grub.conf /etc/grub.conf.bak |
注意:养成实时备份的习惯,技术修改有问题,也可以进去单用户或者救援模式修复。
vim/etc/grub.conf
设置default值(从0开始),一般新安装的内核在第一个位置,所以设置default=0。
|
1
2
|
#default=1default=0 |
1.4)重启使其生效:
|
1
|
[root@node4 ~]# shutdown -r now |
1.5)查看检测:

|
1
2
3
4
5
|
[root@node4 ~]# cat /etc/redhat-release CentOS release 6.6 (Final)[root@node4 ~]# uname -r3.10.104-1.el6.elrepo.x86_64[root@node4 ~]# |
评价:yum方式比较简单并且快,但是如果想要自己定义其内核路径,则显得力不从心。
2、编译升级内核(降级不测试)
eg:工作碰到需要修改内核配置,编译驱动,调节相关参数等,则需要定制内核。
官网:https://www.kernel.org/pub/linux/kernel/
2.1)下载指定版本并安装配置
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
[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总用量 96336drwxrwxr-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 #在菜单模式下选择需要编译的内核模块 |
|
1
|
make menuconfig(出现图形) |

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

|
1
2
3
4
5
6
7
8
|
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。
|
1
2
|
#default=1default=0 |
2.3)重启使其生效:
|
1
|
[root@node4 ~]# shutdown -r now |
2.4)查看检测:
|
1
2
3
4
5
|
[root@node4 ~]# cat /etc/redhat-release CentOS release 6.6 (Final)[root@node4 ~]# uname -r3.2.4[root@node4 ~]# |
评价:慢!而且需要一定经验,最好配置前查看官方手册。
3、yum方式降级内核版本
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
dracut-kernel.noarch 004-356.el6 @anaconda-CentOS-201410241409.x86_64/6.6kernel.x86_64 2.6.32-504.el6 @anaconda-CentOS-201410241409.x86_64/6.6kernel-firmware.noarch 2.6.32-504.el6 @anaconda-CentOS-201410241409.x86_64/6.6kernel-headers.x86_64 2.6.32-573.18.1.el6 @updates kernel-lt.x86_64 3.10.104-1.el6.elrepo @elrepo-kernelabrt-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)查看

3.2)截止目前有四个不同版本内核:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
[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_64drwxr-xr-x. 3 root root 1024 2月 23 2016 efidrwxr-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.imgdrwx------. 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.gzlrwxrwxrwx 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.oldlrwxrwxrwx 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=5splashimage=(hd0,0)/grub/splash.xpm.gzhiddenmenutitle 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 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-2.6.32-642.11.1.el6.x86_64.imgtitle 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.imgtitle 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 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.10.104-1.el6.elrepo.x86_64.imgtitle CentOS 6 (2.6.32-504.el6.x86_64) root (hd0,0) |
3.3)重启使其生效:
|
1
|
[root@node4 ~]# shutdown -r now |

|
1
2
3
4
5
|
[root@node4 ~]# cat /etc/redhat-release CentOS release 6.6 (Final)[root@node4 ~]# uname -r2.6.32-642.11.1.el6.x86_64[root@node4 ~]# |
4、总结:
1、内核的升级和降级要有完整的流程,不可直接操作,注意升级或者降级中文件的备份
2、yum和编译升级和降级要根据环境具体而定,yum方便,编译定制麻烦。
3、centos6和centos7是有区别的,比如grub的引导文件,centos7(/boot/grub2)
yum和编译两种方式升级or降级Centos内核的更多相关文章
- Linux下安装mysql(yum和源码编译两种方式)
这里介绍Linux下两种安装mysql的方式:yum安装和源码编译安装. 1. yum安装 (1)首先查看centos自带的mysql是否被安装: # yum list installed |grep ...
- 对Java代码加密的两种方式,防止反编译
使用Virbox Protector对Java项目加密有两种方式,一种是对War包加密,一种是对Jar包加密.Virbox Protector支持这两种文件格式加密,可以加密用于解析class文件的j ...
- 设备程序远程升级采用两种方式(优先采用IP方式)
设备程序远程升级采用两种方式(优先采用IP方式): 采用应急广播TS流传输技术规范的消息内容表携带升级包数据.当辅助数据类型值为44时,消息内容表传输的数据为程序升级包. 采用IP方式传输升级包数据. ...
- 自学Linux Shell9.2-基于Red Hat系统工具包存在两种方式之一:RPM包
点击返回 自学Linux命令行与Shell脚本之路 9.2-基于Red Hat系统工具包存在两种方式之一:RPM包 本节主要介绍基于Red Had的系统(测试系统centos) 1. 工具包存在两种方 ...
- 制作Docker镜像的两种方式
此文已由作者朱笑天授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 一.使用docker commit命令制作docker镜像 1. pull一个centos6.6的基础镜像, ...
- 配置 yum 源的两种方法
配置 yum 源的两种方法 由于 redhat的yum在线更新是收费的,如果没有注册的话不能使用,如果要使用,需将redhat的yum卸载后,重启安装,再配置其他源,以下为详细过程: 1.删除red ...
- Linux 安装 Nodejs 的两种方式
Linux 安装 Nodejs 的两种方式 目录 Linux 安装 Nodejs 的两种方式 一.压缩包安装 Nodejs 二.源码编译安装 Nodejs 一.压缩包安装 Nodejs 下载 Node ...
- CSharpGL(18)分别处理glDrawArrays()和glDrawElements()两种方式下的拾取(ColorCodedPicking)
CSharpGL(18)分别处理glDrawArrays()和glDrawElements()两种方式下的拾取(ColorCodedPicking) 我在(Modern OpenGL用Shader拾取 ...
- linux内核分析作业4:使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用
系统调用:库函数封装了系统调用,通过库函数和系统调用打交道 用户态:低级别执行状态,代码的掌控范围会受到限制. 内核态:高执行级别,代码可移植性特权指令,访问任意物理地址 为什么划分级别:如果全部特权 ...
随机推荐
- Vuejs2.0学习(Render函数,createElement,vm.$slots)
直接来到进阶部分, Render函数 直接来到Render,本来也想跳过,发现后面的路由貌似跟它还有点关联.先来看看Render 1.1 官网一开始就看的挺懵的,不知道讲的是啥,动手试了一下,一开头讲 ...
- ios表单上传图片或文件
http://www.cocoachina.com/bbs/read.php?tid-89985-page-1.html http://www.jianshu.com/p/44629e5bf986 h ...
- linux下关于PCL(point cloud library)库的安装,三行命令错误的问题
最近想再看看PCL,所以进行了安装,在之前的接触的过程中,由于之前的网络存在问题,导致以下三个命令: sudo add-apt-repository ppa:v-launchpad-jochen-sp ...
- vue中七牛插件使用
<template> <div id="cxUpload" class="cx-upload"> <button id=" ...
- 配置JAVA 环境变量
首先 下载好JDK后 打开环境变量配置 配置JAVA_HOME: C:\Program Files\Java\jdk1.8.0_144(也就是jdk下载后的文件夹) 之后配置PATH:这时用到%J ...
- Centos7安装vsftpd
1.安装vsftpd yum install vsftpd 2.添加一个ftp用户,一个不能登录系统用户,只用来登录ftp服务,这里如果没设置用户目录.默认是在home下. useradd ftpac ...
- Spring Boot 揭秘与实战(二) 数据存储篇 - Redis
文章目录 1. 环境依赖 2. 数据源 2.1. 方案一 使用 Spring Boot 默认配置 2.2. 方案二 手动创建 3. 使用 redisTemplate 操作4. 总结 3.1. 工具类 ...
- AMAZON数据集
http://snap.stanford.edu/data/amazon/productGraph/categoryFiles/
- iOS常用的代码块整理
strong @property (nonatomic,strong) <#Class#> *<#object#>; weak @property (nonatomic,wea ...
- 手机端touch事件封装
var touchEvent={ /*单次触摸事件*/ tap:function(element,fn){ var startTx, startTy; element.addEventListener ...