首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux升级内核--编译安装

Linux升级内核--编译安装

原创
作者头像
大大刺猬
修改2020-12-14 15:20:33
6.9K0
修改2020-12-14 15:20:33
举报
文章被收录于专栏:大大刺猬大大刺猬

读前须知:

有的新功能只有新版的linux内核才支持. 所以我们可能会遇到升级内核的情况

目前最新的稳定版本是5.9.14, 但是编译该版本的内核需要高版本的gcc, 生产环境gcc尽量保持与发行版本一致

所以我们本次环境以5.5.9为例

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

kernel-5.5.9国内地址:https://mirrors.tuna.tsinghua.edu.cn/kernel/v5.x/linux-5.5.9.tar.gz

1.下载kernel并解压

得提前准备14GB的空间, 解压内核要1G, 编译之后要占12GB

wget https://mirrors.tuna.tsinghua.edu.cn/kernel/v5.x/linux-5.5.9.tar.gz
tar -xvf linux-5.5.9.tar.gz -C /usr/local
cd /usr/local/linux-5.5.9

2. 设置环境

主要是安装一些常用的依赖, 现在不安装,等编译时候报错再安装也一样的. 因为我安装过的, 所以知道有哪些依赖

yum install elfutils-libelf-devel bc ncurses-devel flex bison -y

3.配置内核

3.1

我们编译内核的原因是因为我们要定制它, 但是有好几千个选项, 我们不可能一个个去选, 我们可以参考其它发行版本的配置,做一点点修改

cp -p  /boot/config-3.10.0-1127.el7.x86_64 /usr/local/linux-5.5.9/.config  #版本要换成你自己的

3.2 编辑内核配置

CONFIG_XXX=y 的表示直接编译到二进制文件里的,

CONFIG_XXX=m 是编译为模块的

3.2.1 方法1 图形化

我们可以用make menuconfig配置

make menuconfig
大概就是这样子,看不清楚的下载下来看,或者翻译一下
大概就是这样子,看不清楚的下载下来看,或者翻译一下

我们本次环境就简单点, 修改个透明大页就是了

Memory Management options --> Transparent Hugepage Support 设置为空

有很多选项的, 自己慢慢去研究, 我这里讲不了多少
有很多选项的, 自己慢慢去研究, 我这里讲不了多少
修改完了记得保存啊,也就是选中save,敲回车
修改完了记得保存啊,也就是选中save,敲回车

3.2.2 方法二 编辑文件

觉得麻烦的也可以直接修改 .config 文件

我再演示下修改.confg文件吧....

用vim或者sed或者edit之类的工具编辑 .config 文件即可, 为方便给命令我就使用sed了

sed -i '/CONFIG_LOCALVERSION=/cCONFIG_LOCALVERSION="ddcw__modifid_kernel"' .config  #我修改的名字而已,表面这玩意是我改的

还有很多参数(没得的就表示不支持, 没有选中的功能,一般会用注释说明的):

如透明大页: CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS

硬件厂商应该也有.config的例子, 毕竟内核要跑在他们的硬件上.

4. 编译内核 和 安装内核 和 安装模块

4.1 编译内核

编译内核非常慢, 我的环境配置还行,我就用12线程跑,结果还是跑了半小时.

make -j 12
M就表示编译为模块了,此过程非常慢, 毕竟编译之后12GB啊
M就表示编译为模块了,此过程非常慢, 毕竟编译之后12GB啊

4.2安装模块

就是刚才编译的那些模块

make modules_install

安装后/usr/lib 目录增大了很多,主要是驱动太大.

4.3 安装内核

make install

至此安装结束, 接下来就是测试了

5.测试并设置默认启动内核

5.1测试

就直接重启,重启的时候选择我们刚才编译的内核

选择我们编译的内核,然后回车
选择我们编译的内核,然后回车

5.1.1 检查内核版本

[root@ddcw ~]# uname -r
5.5.9ddcw__modifid_kernel
这个名字有点不好看, 下次可以换个名字
这个名字有点不好看, 下次可以换个名字

5.1.2 验证透明大页功能

[root@ddcw ~]# cat /sys/kernel/mm/transparent_hugepage/enabled   #这是centos的透明大页位置,redhat有点名字区别
cat: /sys/kernel/mm/transparent_hugepage/enabled: No such file or directory
[root@ddcw ~]# 
没得这个功能了
没得这个功能了

5.2 没得问题的话, 就设置为默认启动就行

5.2.1查看当前有哪些可选启动项

[root@ddcw ~]# grep 'menuentry ' /boot/grub2/grub.cfg 
menuentry 'CentOS Linux (5.5.9ddcw__modifid_kernel) 7 (Core)' --class centos --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-3.10.0-1127.el7.x86_64-advanced-0c09efad-a4bf-4385-b564-8bef37062843' {
menuentry 'CentOS Linux (3.10.0-1127.el7.x86_64) 7 (Core)' --class centos --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-3.10.0-1127.el7.x86_64-advanced-0c09efad-a4bf-4385-b564-8bef37062843' {
menuentry 'CentOS Linux (0-rescue-4420387e65d64ba29fe9cbc54731d59f) 7 (Core)' --class centos --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-0-rescue-4420387e65d64ba29fe9cbc54731d59f-advanced-0c09efad-a4bf-4385-b564-8bef37062843' {
[root@ddcw ~]# 

5.2.2 设置默认启动内核

grub2-set-default 'CentOS Linux (5.5.9ddcw__modifid_kernel) 7 (Core)'  #也可以修改/etc下的配置文件,但是太麻烦
grub2-editenv list  #列出当前默认启动内核
#然后再重启一下,默认就是我们设置的内核了

6. 内核rpm包

编译安装太麻烦,

也可以去下载编译好的rpm包来升级,

也可以自己编译好了做成RPM包,

也可以直接tar打包然后拷贝到模板环境再安装都是可行的

做RPM包的时候最好是参考官网给的SRPM来做

发行版本官网一般都有SRPM目录来放RPM源码包的

如centos7.8的内核SRPM包: https://archive.kernel.org/centos-vault/7.8.2003/os/Source/SPackages/kernel-3.10.0-1127.el7.src.rpm

感兴趣的可以自己去整整, 也可以参考我之前写的nginx制作为RPM包 ,虽然不够专业,但是够简单

特别说明: 生产环境尽量别升级内核, 除非你很想要某个新功能. 稳定大于一切!!!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.下载kernel并解压
  • 2. 设置环境
  • 3.配置内核
    • 3.1
      • 3.2 编辑内核配置
        • 3.2.1 方法1 图形化
        • 3.2.2 方法二 编辑文件
    • 4. 编译内核 和 安装内核 和 安装模块
      • 4.1 编译内核
        • 4.2安装模块
          • 4.3 安装内核
          • 5.测试并设置默认启动内核
            • 5.1测试
              • 5.1.1 检查内核版本
              • 5.1.2 验证透明大页功能
            • 5.2 没得问题的话, 就设置为默认启动就行
              • 5.2.1查看当前有哪些可选启动项
              • 5.2.2 设置默认启动内核
          • 6. 内核rpm包
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档