rpm升级

# rpm的方式升级内核
1.载入内核公钥
[root@localhost ~]# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
2.安装内核 ELRepo
[root@localhost ~]# rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
3.载入elrepo-kernel元数据
[root@localhost ~]# yum --disablerepo=\* --enablerepo=elrepo-kernel repolist
4.查看可用的rpm包
[root@localhost ~]# yum --disablerepo=\* --enablerepo=elrepo-kernel list kernel* # 产品需求是4.14的内核,这里没有,只好去官方找安装包,进行编译升级
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* elrepo-kernel: mirrors.neusoft.edu.cn
Installed Packages
kernel.x86_64 3.10.0-957.el7 @anaconda
kernel-tools.x86_64 3.10.0-957.el7 @anaconda
kernel-tools-libs.x86_64 3.10.0-957.el7 @anaconda
Available Packages
kernel-lt.x86_64 4.4.235-1.el7.elrepo elrepo-kernel
kernel-lt-devel.x86_64 4.4.235-1.el7.elrepo elrepo-kernel
kernel-lt-doc.noarch 4.4.235-1.el7.elrepo elrepo-kernel
kernel-lt-headers.x86_64 4.4.235-1.el7.elrepo elrepo-kernel
kernel-lt-tools.x86_64 4.4.235-1.el7.elrepo elrepo-kernel
kernel-lt-tools-libs.x86_64 4.4.235-1.el7.elrepo elrepo-kernel
kernel-lt-tools-libs-devel.x86_64 4.4.235-1.el7.elrepo elrepo-kernel
kernel-ml.x86_64 5.8.7-1.el7.elrepo elrepo-kernel
kernel-ml-devel.x86_64 5.8.7-1.el7.elrepo elrepo-kernel
kernel-ml-doc.noarch 5.8.7-1.el7.elrepo elrepo-kernel
kernel-ml-headers.x86_64 5.8.7-1.el7.elrepo elrepo-kernel
kernel-ml-tools.x86_64 5.8.7-1.el7.elrepo elrepo-kernel
kernel-ml-tools-libs.x86_64 5.8.7-1.el7.elrepo elrepo-kernel
kernel-ml-tools-libs-devel.x86_64 5.8.7-1.el7.elrepo elrepo-kernel
# lt:long term support,长期支持版本;
# ml:mainline,主线版本;
5.安装最新版本的kernel
[root@localhost ~]# yum --disablerepo=\* --enablerepo=elrepo-kernel -y install kernel-ml.x86_64
6.删除旧版本工具包
[root@localhost ~]# yum -y remove kernel-tools-libs.x86_64 kernel-tools.x86_64
7.安装新版本工具包
[root@localhost ~]# yum --disablerepo=\* --enablerepo=elrepo-kernel -y install kernel-ml-tools.x86_64

编译升级

升级前

[root@localhost ~]# uname -r
3.10.0-957.el7.x86_64
[root@localhost ~]# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)

下载安装包

linux内核官网:https://www.kernel.org/
[root@localhost ~]# wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.14.196.tar.xz
链接:https://pan.baidu.com/s/1QSc_PeVsj6olE6vIrRScYQ 提取码:w1g2 # 有百度会员的,可以用网盘下载,没有的话,只能wget了,官方的服务器下载会比较慢,文件不大,只有97MB不到

编译内核

选择配置项的方式有以下几种,选择哪种都可以。
make config (基于文本的配置界面)
make menuconfig (基于文本菜单的配置界面)
make xconfig (基于图形窗口的配置界面)
make oldconfig (基于原来内核配置的基础上修改)
以上几种:
# make xconfig 最为友好,基于窗口操作,但是需要 Xwindow 的支持,CentOS 还好,若是使用其它没有图形界面的发行版就 GG 了。
# make menuconfig 相对比较友好,又是基于文本菜单,所有的发行版都可以使用,所以这里推荐使用 make menuconfig。 使用 make menuconfig 需要 ncurses-devel 的支持,如果之前没装过,需要执行下面的命令安装一下。
[root@localhost ~]# yum -y install ncurses-devel
[root@localhost ~]# tar xf linux-4.14.196.tar.xz -C /usr/local/
[root@localhost linux-4.14.196]# yum -y install gcc make elfutils-libelf-devel openssl-devel bc # 安装编译内核所需的依赖
[root@localhost ~]# cd /usr/local/linux-4.14.196/
[root@localhost linux-4.14.196]# make menuconfig
# 执行成功后,会显示下面的界面

Linux 内核所有的配置项都在这里,内核的编译分为两个部分,核心和模块,对于核心的部分,要编译进核心,可能以后会用到的部分,尽量编译成模块。
文本菜单选择界面,使用左(←)、右(→)箭头切换底部菜单,上(↑)、下(↓)箭头切换中间的配置项,空格键 选择配置项,部分配置项右边有 —> 标识,代表有下级子项,可以使用 Enter 进去选择。
同时每一项的前面都有以下标识,可以根据需要选择。
- <*>[*] 表示编译进核心
- <M> 表示编译成模块
- 空格 表示不选中此项
如果你只是看一下整个编译过程,不想深究每一项,执行上一步 make menuconfig 之后,直接保存退出就可以了,它会使用 CentOS 内部的配置文件作为这次编译的配置文件
# 配置项选完,config 配置文件生成之后,就可以开始编译了
# 编译时间比较长,如果上面你是自定义配置项,把不需要的配置都关闭,编译会快的多。我这使用的 CentOS 内部的配置文件,CentOS 为了大多数人的使用,开的配置项比较多,所以编译的时间比较长,也和你的电脑配置有关。我make了两个小时。
[root@localhost linux-4.14.196]# make
[root@localhost linux-4.14.196]# make modules_install # 安装模块
[root@localhost linux-4.14.196]# make install # 安装核心
[root@localhost linux-4.14.196]# ll /boot/ # 安装完成后,就可以看到4.14的内核文件了
total 201364
-rw-r--r--. 1 root root 151918 Nov 9 2018 config-3.10.0-957.el7.x86_64
drwxr-xr-x. 3 root root 17 Jun 30 18:04 efi
drwxr-xr-x. 2 root root 4096 Sep 9 14:06 extlinux
drwxr-xr-x. 2 root root 27 Jun 30 18:05 grub
drwx------. 5 root root 97 Sep 9 19:07 grub2
-rw-------. 1 root root 57430086 Jun 30 18:08 initramfs-0-rescue-502ad5c8bfc847fea2cacceff257adae.img
-rw-------. 1 root root 22417877 Jun 30 18:09 initramfs-3.10.0-957.el7.x86_64.img
-rw-------. 1 root root 98006427 Sep 9 19:07 initramfs-4.14.196.img
-rw-r--r--. 1 root root 314036 Nov 9 2018 symvers-3.10.0-957.el7.x86_64.gz
lrwxrwxrwx. 1 root root 25 Sep 9 19:04 System.map -> /boot/System.map-4.14.196
-rw-------. 1 root root 3543471 Nov 9 2018 System.map-3.10.0-957.el7.x86_64
-rw-r--r--. 1 root root 3498834 Sep 9 19:04 System.map-4.14.196
lrwxrwxrwx. 1 root root 22 Sep 9 19:04 vmlinuz -> /boot/vmlinuz-4.14.196
-rwxr-xr-x. 1 root root 6639904 Jun 30 18:08 vmlinuz-0-rescue-502ad5c8bfc847fea2cacceff257adae
-rwxr-xr-x. 1 root root 6639904 Nov 9 2018 vmlinuz-3.10.0-957.el7.x86_64
-rw-r--r--. 1 root root 7517472 Sep 9 19:04 vmlinuz-4.14.196

更新启动引导

[root@localhost linux-4.14.196]# awk -F \' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg     # 查看内核插入顺序,默认新内核是从头插入
0 : CentOS Linux (4.14.196) 7 (Core)
1 : CentOS Linux (3.10.0-957.el7.x86_64) 7 (Core)
2 : CentOS Linux (0-rescue-502ad5c8bfc847fea2cacceff257adae) 7 (Core)
[root@localhost linux-4.14.196]# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-4.14.196
Found initrd image: /boot/initramfs-4.14.196.img
Found linux image: /boot/vmlinuz-3.10.0-957.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-957.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-502ad5c8bfc847fea2cacceff257adae
Found initrd image: /boot/initramfs-0-rescue-502ad5c8bfc847fea2cacceff257adae.img
done

修改默认启动内核

[root@localhost ~]# grub2-editenv list    # 查看默认启动的内核
saved_entry=CentOS Linux (3.10.0-957.el7.x86_64) 7 (Core)
[root@localhost ~]# awk -F \' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg # 查看内核插入顺序
0 : CentOS Linux (4.14.196) 7 (Core)
1 : CentOS Linux (3.10.0-957.el7.x86_64) 7 (Core)
2 : CentOS Linux (0-rescue-502ad5c8bfc847fea2cacceff257adae) 7 (Core)
[root@localhost ~]# grub2-set-default 'CentOS Linux (4.14.196) 7 (Core)' # 设置默认启动的内核
[root@localhost ~]# grub2-editenv list # 查看默认启动的内核
saved_entry=CentOS Linux (4.14.196) 7 (Core)

重启之后验证

[root@localhost ~]# reboot
[root@localhost ~]# uname -r
4.14.196

CentOS 7 下编译安装 4.14 内核的更多相关文章

  1. CentOS 6下编译安装MySQL 5.6

    一:卸载旧版本 使用下面的命令检查是否安装有MySQL Server rpm -qa | grep mysql 有的话通过下面的命令来卸载掉 rpm -e mysql //普通删除模式 rpm -e ...

  2. CentOS 7 下编译安装lnmp之nginx篇详解

    一.安装环境 宿主机=> win7,虚拟机 centos => 系统版本:CentOS Linux release 7.5.1804 (Core),ip地址 192.168.1.168   ...

  3. CentOS 7 下编译安装lnmp之PHP篇详解

    一.安装环境 宿主机=> win7,虚拟机 centos => 系统版本:centos-release-7-5.1804.el7.centos.x86_64 二.PHP下载 官网 http ...

  4. CentOS 7 下编译安装lnmp之MySQL篇详解

    一.安装环境 宿主机=> win7,虚拟机 centos => 系统版本:centos-release-7-5.1804.el7.centos.x86_64 二.MySQL下载 MySQL ...

  5. 在CentOS 7下编译安装Nginx+PHP+MySQL环境

    本文转载自:http://www.softeng.cn/?p=156,本文已获得作者授权,未经作者同意,不可转载. 1.前言 本文适合于已经对Linux操作系统具有基本操作经验,并且能够在Linux或 ...

  6. CentOS Linux下编译安装MySQL

    本文参考张宴的Nginx 0.8.x + PHP 5.2.13(FastCGI)搭建胜过Apache十倍的Web服务器(第6版)[原创]完成.所有操作命令都在CentOS 6.4 64位操作系统下实践 ...

  7. centos 6 下编译安装 nginx

    下载nginx源码包,可以到nginx官方的下载文件归档里 http://nginx.org/download/ 下载 下载pcre源码,并编译安装,从pcre官方下载  ftp://ftp.csx. ...

  8. CentOS 7下编译安装Boost_1_57_0

    之前对库的理解太肤浅(现在也仍很肤浅),导致走了挺多的弯路,现记录以备后查. 现在可以从Boost官网下载到最新的Boost源代码boost_1_57_0.tar.gz. 现将步骤记录如下: 1. 解 ...

  9. Centos 7下编译安装Nginx

    一.下载源代码 百度云网盘下载地址:https://pan.baidu.com/s/19MQODvofRNnLV9hdAT-R6w 提取码:zi0u 二.安装依赖及插件 yum -y install ...

随机推荐

  1. 51 Nod 1134 最长递增子序列 (动态规划基础)

    原题链接:1134 最长递增子序列 题目分析:长度为  的数列  有多达  个子序列,但我们应用动态规划法仍可以很高效地求出最长递增子序列().这里介绍两种方法. 先考虑用下列变量设计动态规划的算法. ...

  2. 在pyqt5中展示pyecharts生成的图像

    技术背景 虽然现在很少有人用python去做一些图形化的界面,但是不得不说我们在日常大部分的软件使用中都还是有可视化与交互这样的需求的.因此pyqt5作为一个主流的python的GUI框架地位是非常重 ...

  3. [USB波形分析] 全速USB波形数据分析(三)

    前面的两篇文章介绍和分析了USB的一些基本知识,结合前面的介绍,今天用实例介绍USB的枚举过程. 1 | 概况 硬件基于EK-TMC123GXL开发板,软件是TI提供的USB批量传输的简单例子,在PC ...

  4. 【刷题-LeetCode】148 Sort List

    Sort List Sort a linked list in O(n log n) time using constant space complexity. Example 1: Input: 4 ...

  5. 【记录一个问题】云风的协程库 c conroutine无法在android下链接通过

    链接出现以下错误: coroutine.c:139: undefined reference to `getcontext' coroutine.c:146: undefined reference ...

  6. Collection类集

    1.Collection接口 Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements).一些Collection允许相同的 ...

  7. 676. Implement Magic Dictionary

    Implement a magic directory with buildDict, and search methods. For the method buildDict, you'll be ...

  8. Web安全防护(二)

    点击劫持 点击劫持,也称UI覆盖攻击 1.1 iframe覆盖攻击 黑客创建一个网页,用iframe包含了目标网站,并且把它隐藏起来.做一个伪装的页面或图片盖上去,且按钮与目标网站一致,诱导用户去点击 ...

  9. Android开发-记账本-实现记账功能选择

    制作GridView适配器,实现页面数据的变化 制作类型存储数据库,存储的主要是图片类型,类型被选中时的图片,类型未被选中时的图片. 数据库代码如下 package com.example.Utils ...

  10. numpy 矩阵在作为函数参数传递时的奇怪点

    numpy 矩阵在作为函数参数传递时的奇怪点 import numpy as np class simpleNet: def __init__(self): self.W = np.array([1, ...