centos源码编译安装新版本内核
centos源码编译安装新版本内核
在工作中,很多时候由于需要使用新的技术方案,需要较新版本的内核来支持新的功能,而centos系统自带的内核版本普遍都比较旧,因此我们需要对系统的内核进行升级,安装新版的内核。在此,以centos7系统为例,对编译安装最新版内核的过程做如下总结:
Linux 最新版本的内核可以通过 https://www.kernel.org/ 网站获取
1、下载最新稳定版本的内核源码包到 /usr/local/src ,并解压到当前目录
2、解压内核源码包
3、从 /boot 目录将现有版本的内核编译config配置文件拷过来到放到新的内核源码解压目录内并重命名为.config的隐藏文件
[root@localhost src]# cd linux-5.2.11
[root@localhost linux-5.2.11]# cp /boot/config-3.10.0-957.el7.x86_64 ./.config
从boot目录拷贝原内核的config文件过来主要是为了方便,这个文件保存了在安装系统时内核所安装的模块配置信息(否则需要重新手动指定每一个模块的编译配置)。
4、安装依赖包
安装开发工具包组
[root@localhost linux-5.2.11]# yum -y groupinstall "development tools"
安装ncurse-devel包 (make menuconfig 文本界面窗口依赖包)
[root@localhost linux-5.2.11]# yum -y install ncurses-devel
5、运行 make menuconfig,开启文本界面的编译选项菜单窗口,可以对内核加载的模块编译选项进行调整,如修改编译后的内核名称、新添加之前系统缺少的模块等。
修改内核名称:
General setup --->local version -append to kernel release
此处修改内核名称为 5.2.11-001.el7.x86_64
新添加NTFS文件系统支持模块:
File systems --->DOS/FAT/NT Filesystems --->NTFS file system support
建议选择以模块方式(M选项)编译。(*号则是以静态方式编译打包进内核文件中,如果新添加的模块较多,会导致内核文件体积增大)
6、编译内核
[root@localhost linux-5.2.11]# make -j 4 #根据CPU核数开启多线程编译以加快编译速度
开始漫长的编译过程,大概需要1-2小时左右,具体视CPU硬件的性能决定。
如果编译开始提示错误,则可能需要预先安装对应的组件包,例如:
[root@localhost linux-5.2.11]# yum -y install openssh-devel elfutils-libelf-devel bc
根据对应的错误提示,yum 方式安装对应的组件包,部分组件包在epel源,所以需要预先配置好epel源仓库。
7、编译安装模块
编译完成后执行make modules_install 安装内核模块
[root@localhost linux-5.2.11]# make modules_install
8、安装内核核心文件
[root@localhost linux-5.2.11]# make install
reboot重启
如需将新版本内核设置为默认启动内核,可以使用此命令
grub2-set-default 0 #0表示 /boot/grub2/grub.cfg 文件中排在第一位的 menuentry 段
重启进入系统后,查看一下内核版本,已经是最新的5.2.11版本
[root@localhost ~]# uname -r
5.2.11-001.el7.x86_64
至此,整个内核的编译安装过程完成。
原文地址:https://www.cnblogs.com/eddie1127/p/11439718.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Laravel 5.4前后台分离,通过不同的二级域名访问方法
- Yii框架数据库查询、增加、删除操作示例
- 在laravel5.2中实现点击用户头像更改头像的方法
- laravel 多图上传及图片的存储例子
- Laravel 添加多语言提示信息的方法
- Laravel框架表单验证操作实例分析
- Thinkphp5.0框架视图view的模板布局用法分析
- laravel5环境隐藏index.php后缀(apache)的方法
- php实现对文件压缩简单的方法
- laravel实现Auth认证,登录、注册后的页面回跳方法
- php 实现银联商务H5支付的示例代码
- Yii2.0框架behaviors方法使用实例分析
- laravel 去掉index.php伪静态的操作方法
- laravel 获取某个查询的查询SQL语句方法
- laravel dingo API返回自定义错误信息的实例