您现在的位置是:首页 >其他 >Linux系统:CentOS编译Linux内核网站首页其他

Linux系统:CentOS编译Linux内核

cronaldo91 2024-10-08 12:01:04
简介Linux系统:CentOS编译Linux内核

目录

一、实验

1.下载内核

2.解压内核源码

3.配置依赖的环境

4.进入源码目录,使用make menuconfig开启菜单选项,手动选择内核功能

5.编译内核

6.安装模块

7.安装内核

8.验证新内核版本


一、实验

1.下载内核

(1)官网下载

内核的源码的官方网站为 The Linux Kernel Archives,在此网站下载最新内核源码。

(2)进入页面

点击某一个版本对应的browse

Linux版本分为:mainline(主线版本)、stable(稳定版本)、longterm(长期演进版本) 

 进入之后,默认打开界面是tree型

 资源下载,选择summary,拉到最下方

 (3)网页下载

直接进入链接:​​​​​​  Index of /sites/ftp.kernel.org/pub/linux/kernel/ (sjtu.edu.cn),选择需要的版本,直接选择下载即可。

 

2.解压内核源码

(1)解压

tar -zxvf linux-6.3.7.tar.gz -C /usr/src/

(2)软链接

[root@centos2 src]# ln -sv linux-6.3.7 linux
"linux" -> "linux-6.3.7"

(3)查看当前目录

[root@centos2 src]# ls
debug  kernels  linux  linux-6.3.7

3.配置依赖的环境

(1)修改阿里镜像源

          备份

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

    下载新的CentOS-Base.repo

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

清除并更新缓存

yum clean all && yum makecache

(2)确保根分区可用空间在15G以上

(3)确保gcc版本在5.0以上

GCC依赖四个库:GMP、MPFR、MPC、ISL。GMP:计算任意精度的数学库, 包括支持整数,有理数和浮点。MPFR: 一个多精度高效的浮点计算C语言库, 基于GMP。MPC:一个支持高精度复数的算术运算的C库,并能正确的进行结果舍入。ISL:用于操作集合和线性约束下的整数点的关系的库,支持集合的交,并和补操作。

      其中,MPFR依赖GMP,MPC依赖GMP和MPFR,GCC依赖上面四个库,所以推荐的编译安装顺序是GMP->MPFR->MPC->ISL->GCC。

选择下载如下版本,且给出了下载地址:

GMP-6.2.1    https://ftp.gnu.org/gnu/gmp/gmp-6.2.1.tar.xz
MPFR-4.2.0  https://www.mpfr.org/mpfr-current/mpfr-4.2.0.tar.xz
MPC-1.3.1    https://ftp.gnu.org/gnu/mpc/mpc-1.3.1.tar.gz
ISL -0.24      http://ftp.tsukuba.wide.ad.jp/software/gcc/infrastructure/isl-0.24.tar.bz2
GCC-9.3.0    http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-9.3.0/gcc-9.3.0.tar.xz

表1 gcc版本升级

升级版本命令

升级到gcc 6.3

  1. yum -y install centos-release-scl 

  2. yum -y install devtoolset-6-gcc devtoolset-6-gcc-c++ devtoolset-6-binutils 

  3. scl enable devtoolset-6 bash

需要注意的是scl命令启用只是临时的,退出shell或重启就会恢复原系统gcc版本。
如果要长期使用gcc 6.3的话:

echo "source /opt/rh/devtoolset-6/enable" >>/etc/profile

这样退出shell重新打开就是新版的gcc了
以下其他版本同理,修改devtoolset版本号即可。

升级到gcc 7.3

  1. yum -y install centos-release-scl 

  2. yum -y install devtoolset-7-gcc devtoolset-7-gcc-c++ devtoolset-7-binutils 

  3. scl enable devtoolset-7 bash

需要注意的是scl命令启用只是临时的,退出shell或重启就会恢复原系统gcc版本。
如果要长期使用gcc 7.3的话:

echo "source /opt/rh/devtoolset-7/enable" >>/etc/profile

升级到gcc 8.3

  1. yum -y install centos-release-scl 

  2. yum -y install devtoolset-8-gcc devtoolset-8-gcc-c++ devtoolset-8-binutils 

  3. scl enable devtoolset-7 bash

需要注意的是scl命令启用只是临时的,退出shell或重启就会恢复原系统gcc版本。
如果要长期使用gcc 8.3的话:

echo "source /opt/rh/devtoolset-8/enable" >>/etc/profile

升级到gcc 9.3

  1. yum -y install centos-release-scl 

  2. yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils 

  3. scl enable devtoolset-9 bash

需要注意的是scl命令启用只是临时的,退出shell或重启就会恢复原系统gcc版本。
如果要长期使用gcc 9.3的话:

echo "source /opt/rh/devtoolset-9/enable" >>/etc/profile

配置好镜像源也可以直接升级到gcc 9.3:

[root@centos2 linux]# yum -y install centos-release-scl 
[root@centos2 linux]# yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils 
[root@centos2 linux]# scl enable devtoolset-9 bash

4.进入源码目录,使用make menuconfig开启菜单选项,手动选择内核功能

[root@centos2 linux]#  make menuconfig
  HOSTCC  scripts/basic/fixdep
  HOSTCC  scripts/kconfig/mconf.o
  HOSTCC  scripts/kconfig/lxdialog/checklist.o
  HOSTCC  scripts/kconfig/lxdialog/inputbox.o
  HOSTCC  scripts/kconfig/lxdialog/menubox.o
  HOSTCC  scripts/kconfig/lxdialog/textbox.o
  HOSTCC  scripts/kconfig/lxdialog/util.o
  HOSTCC  scripts/kconfig/lxdialog/yesno.o
  HOSTCC  scripts/kconfig/confdata.o
  HOSTCC  scripts/kconfig/expr.o
  LEX     scripts/kconfig/lexer.lex.c
  YACC    scripts/kconfig/parser.tab.[ch]
  HOSTCC  scripts/kconfig/lexer.lex.o
  HOSTCC  scripts/kconfig/menu.o
  HOSTCC  scripts/kconfig/parser.tab.o
  HOSTCC  scripts/kconfig/preprocess.o
  HOSTCC  scripts/kconfig/symbol.o
  HOSTCC  scripts/kconfig/util.o
  HOSTLD  scripts/kconfig/mconf

配置完成后会生成.config的隐藏文件,如果不知道该开启哪些功能也可以直接选用当前系统的配置文件,这里直接使用当前系统的配置文件。

 [root@centos2 linux]# cp /boot/config-3.10.0-693.el7.x86_64 ./.config
cp:是否覆盖"./.config"? yes

5.编译内核

"-j 8" 代表使用8颗cpu同时编译,这里可根据实际情况而定。

[root@centos2 linux]# make -j 8 

此步骤会对.config文件中的每一个选项再次确认,全部确认即可。

6.安装模块

[root@centos2 linux]# make modules_install

安装完成后在/lib/modules/目录下会生成一个同内核版本号的目录,目录下便是新内核的模块。

7.安装内核

 [root@centos2 linux]# make install

安装完后会在/boot目录下生成新的内核文件。

[root@centos2 linux]# ll /boot/

新内核会自动写入到引导文件中,直接重启系统,在选择内核的界面选中新的内核即可。

 [root@centos2 linux]# cat /boot/grub2/grub.cfg 

8.验证新内核版本

  [root@centos2 linux]# uname -a

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。