首页 > 系统相关 >CentOS 7编译Linux内核(6.5.7)详细步骤

CentOS 7编译Linux内核(6.5.7)详细步骤

时间:2023-11-11 15:24:00浏览次数:50  
标签:CentOS make sudo 编译 6.5 内核 Linux 安装

CentOS 7编译Linux内核(6.5.7)详细步骤

参考链接:

  1. 下载解压部分参考:Linux 内核动手编译实用指南 - LinuxEden
    比较详细,可用于了解原理,但没有给出针对CentOS 7的方案(实验室用到的openEuler基于CentOS,所以需要CentOS的方案)。
  2. 配置编译安装参考:CentOS 7 下编译安装 Linux 4.14 内核 - 知乎
    内核版本比较旧了,不过影响很小。

准备编译环境

如果运行过sudo yum update,则编译所需工具链大概率已经装好。可通过下列指令检验:
sudo yum install gcc g++ gdb make
提示Nothing to do.则表明已装好,否则会自动安装上述工具链。

下载和解压内核

下载内核

Linux内核官网:https://www.kernel.org。本文以6.5.7为例,下载到了~/Downloads文件夹。

解压内核

将下载的内核解压到CentOS7的内核源码文件夹/usr/src/kernels/

cd /usr/src/kernels/
sudo tar -xvf ~/Downloads/linux-6.5.7.tar.xz
# tar命令,-x表示解压,-v表示显示过程,-f表示后面接压缩包文件名

配置编译参数.config

进入解压好的目录:
cd /usr/src/kernels/linux-6.5.7/
这里将本机的CentOS 7的.config配置文件拷贝过来:
sudo cp /boot/config-3.10.0-1160.99.1.el7.x86_64 ./.config

注意:CentOS 7在进行下一步之前,需要安装较新的GCC版本,否则:

[zh@localhost linux-6.5.7]$ sudo make oldconfig
***
*** C compiler is too old.
***   Your GCC version:    4.8.5
***   Minimum GCC version: 5.1.0
***
scripts/Kconfig.include:44: Sorry, this C compiler is not supported.

弯路:原本想参考文章解决CentOS7中gcc编译器版本过低的问题,采用GCC最新稳定版(12.3.0)的清华源链接进行编译安装,结果发现make编译需要几十分钟到几小时!以后软件优先找直接安装的方法(如下),省时省力!

按照如下方法安装GCC 7.3.1(参考链接):

sudo yum install centos-release-scl
sudo yum install devtoolset-7
scl enable devtoolset-7 bash

安装完成后可查看当前GCC版本:

gcc --version
gcc (GCC) 7.3.1 20180303 (Red Hat 7.3.1-5)
Copyright (C) 2017 Free Software Foundation, Inc.

注意:如果系统重启,需要重新使用指令scl enable devtoolset-7 bash以开启GCC7.3.1。

接下来即可进行编译参数的配置,主要分为以下4种:

  1. make config (基于文本的配置界面)
  2. make menuconfig (基于文本菜单的配置界面)
  3. make xconfig (基于图形窗口的配置界面)
  4. make oldconfig (基于原来内核配置的基础上修改)

make menuconfig

下面以menuconfig为例,首先安装前置插件:
sudo yum install ncurses-devel

然后运行配置命令:
sudo make menuconfig

如果只是看一下编译过程,不想深究每一项,执行make menuconfig 之后直接保存退出(双击Esc)即可。

make oldconfig(如已做过menuconfig则跳过此项)

sudo make oldconfig
之后将会提示一连串选项(下面是第1条选项),只要全程按住回车即可配置完成。
Compile also drivers which will not load (COMPILE_TEST) [N/y/?] (NEW)

编译源码

配置项选完,.config配置文件生成之后,就可以开始编译了,编译需要 elfutils-libelf-devel的支持,执行下面的命令安装:
sudo yum install elfutils-libelf-devel

为了避免编译过程中提示 致命错误:openssl/opensslv.h:没有那个文件或目录 ,预先执行下列指令安装依赖:
sudo yum install openssl-devel

执行make即可开始编译,不过更建议使用如下命令:
sudo make -j$(nproc) 2>&1 | tee log
参数-j$(nproc)表示“使用与(本机CPU线程数)相同的(并行编译任务数)”,提高效率。可通过cat /proc/cpuinfo查看本机的CPU线程数。
参数2>&1 | tee log表示将make过程输出到log文件,如编译过程遇到错误,可通过grep Error log查看。(注:提示tee指令没有权限,此问题尚未解决,影响很小)

编译时间比较长,需要耐心等待。我的i5-12400F(分配给虚拟机8核)只要15分钟左右就完成了。

安装模块

sudo make modules_install

安装核心

sudo make install

更新引导

sudo grub2-mkconfig -o /boot/grub2/grub.cfg

后记

思路总结:下载解压源码 - 配置参数 - 编译源码 - 安装模块 - 安装核心 - 更新引导。

尽管重启之后看到编译好的新内核了,但运行此系统时提示Failed to insert module 'autofs4'
找了解决方案修改了配置重新编译,启动界面如下:
启动界面
但又出现了新的报错(SMbus host controller not enabled):
新的报错

问题难以解决,因为报错信息一闪而过就自动转为CentOS 7启动了,没有在原系统输入指令的机会!当然肯定有办法解决,但路漫漫其修远兮,只好今后有精力再探索了。

标签:CentOS,make,sudo,编译,6.5,内核,Linux,安装
From: https://www.cnblogs.com/EndPoem-ZH/p/17825933.html

相关文章

  • CentOS7安装Java8
    1.卸载系统自带的OpenJDK以及相关的java文件 键入命令java-version  键入命令rpm-qa|grepjava  把带openjdk的都删除  rpm-e--nodeps 验证是否删干净   2.解压java8到相应目录配置JDK环境变量键入命令 vim/etc/profile修改配置文件,记得要在root权限下修改e......
  • 【CentOS】CentOS7安装PostgreSQL
    1、安装PostgreSQL使用以下命令安装PostgreSQL:sudoyuminstallpostgresql-serverpostgresql-contrib 2、初始化数据库执行以下命令来初始化PostgreSQL数据库:sudopostgresql-setupinitdb 3、启动PostgreSQL服务启动PostgreSQL服务&& 设置PostgreSQL......
  • Linux卡死的解决方法记录
    本人在使用Linux时突然卡死,检索解决方法及相关知识后总结进行记录。解决方法1.尝试进入tty若Linux在桌面中卡死,可以尝试按下快捷键组合ctrl+alt+F3进入tty3(类似的可以按下快捷键组合ctrl+alt+F4进入tty4,可扩展到tty6),在tty中先通过top命令获取高cpu占用进程,再通过pk......
  • Linux 内核 6.6 版本莅临,带来诸多变化
    导读笔记本的支持得到了提升,服务器性能得到了改进,更多内容一一揭晓。又到了迎接 Linux 内核新版本发布的时刻!Linux内核6.6的发布,是一次大规模更新,针对各类笔记本、网络硬件、处理器等提供了大量全方位的改良。LinusTorvalds 表示:各种各样的修复散布各处,除了针......
  • centos7 扩展硬盘
    新增硬盘后       注意,我这里用的xfs!!!注意,文件夹不能已存在的!!尽量不要把多个硬盘挂载在同一个文件夹上!!!  vi/etc/fstab 注意,用00即可  查看uuid=>blkid/dev/sdb1  df-h ......
  • 转 问题解决:记录一次Linux服务器根目录突然爆满
    一般跟目录满了,可以重点关注/var这个目录 一、出问题了过了个双休来到公司,同时发现Linux终端的服务器状态中根目录空间直接爆满100%,周五走之前根目录仅仅使用了59%,同时项目服务的后台不停的有日志打印,而且测试的小伙伴说系统登录不上去了。下面记录一下个人排查并解决这个问题......
  • 性能测试复习准备——linux环境下安装jdk8
     先在根目录下创建目录: /soft/jdk8  ——用于放上传进来的软件包;       然后通过左边的上传按钮,把包上传到 /soft/jdk8下面; 然后在根目录下面创建/evir/jdk8目录,用户放解压后的软件包;tar-zxvffile.tar.gz-C/path/to/destination   tar......
  • Linux后台进程管理以及ctrl+z(挂起)、ctrl+c(中断)、ctrl+\(退出)和ctrl+d(EOF)介绍
    一、后台进程管理命令fg、bg、jobs、&、ctrl+z、ctrl+c、ctrl+\、ctrl+d1、&加在一个命令的最后,可以把这个命令放到后台执行,如firefox&, 2、ctrl+z可以将一个正在前台执行的命令放到后台,并且处于暂停状态,不可执行 3、jobs查看当前有多少在后台运行的......
  • Linux常用命令——tar文件的压缩与解压缩
    tar   选项   包名    文件名tar本身没有压缩功能,只有打包功能,但是tar可以调用压缩工具;以下是常用命令:-c  创建归档文件-v  显示过程-x  展开归档文件-f  操作归档文件-C  指定解压路径-z  调用gzip压缩工具-j  调用bzip2压缩工具-J......
  • Linux虚拟化安装相关信息
    此处内容均是关于使用VMwareWorkstation安装Linux操作系统的相关知识:CentOS镜像(*.iso):可以从阿里云提供的各种镜像列表下载:https://developer.aliyun.com/mirror/下的OS镜像,根据弹窗选择对应的镜像类型和版本,根据下载链接下载Markdown语法:···上述为"``` ",表示 ......