内核代码下载
官方下载地址:
https://mirrors.edge.kernel.org/pub/linux/kernel/
国内下载地址:
https://mirror.bjtu.edu.cn/kernel/linux/kernel/
国内网站下载速度相对较快,国外网站下载看命
查看当前内核版本信息
uname -a
拷贝目录到指定文件夹
将内核源代码拷贝到/usr/local/src目录下
开始编译安装过程
解压内核代码
tar xvf linux.xx.xx.tar.gz
生成内核编译配置文件
从现有的系统中拷贝,主要避免手动选择,最大限度和当前保持一致
现有的系统内核编译配置文件在boot目录下,查看对应的版本就可以了
配置内核编译文件
执行make menuconfig
编译环境构建
如上图,会有报错,不能打开编译配置界面,是因为缺少库,根据报错,少什么,装什么就可以
ncurse-devel (make menuconfig 文本界面窗口依赖包)
flex找不到
安装flex
bison 找不到
安装bison
gcc版本太老
查看gcc当前版本
升级gcc版本
centos7里面
devtoolset-3对应gcc4.x.x版本
devtoolset-4对应gcc5.x.x版本
devtoolset-6对应gcc6.x.x版本
devtoolset-7对应gcc7.x.x版本
devtoolset-8对应gcc8.x.x版本
devtoolset-9对应gcc9.x.x版本
devtoolset-10对应gcc10.x.x版本
centos8里面有修改名字
gcc-toolset-9对应gcc9.x.x版本
gcc-toolset-10对应gcc10.x.x版本
gcc-toolset-11对应gcc11.x.x版本
执行如下命令
yum install devtoolset-9
source /opt/rh/devtoolset-9/enable
gcc更新成功
配置内核编译配置文件
开启IPv6
这里并没有修改任何内容,退出保存后,如下:
编译内核
执行make就可以了
编译错误处理
centos7 没有 libssl-dev
方法一、直接安装
yum install openssl openssl-devel
方法二、下载源码编译安装
访问OpenSSL官网资源
官网资源地址:https://www.openssl.org/source
1、下载
wget https://www.openssl.org/source/old/1.1.1/openssl-1.1.1.tar.gz
2、解压并切换目录
tar -zxvf openssl-1.1.1.tar.gz
cd openssl-1.1.1
3、设定Openssl 安装,( --prefix )参数为欲安装之目录,也就是安装后的档案会出现在该目录下
./config --prefix=/usr/local/openssl
4、执行命令
./config -t
5、执行make、make install,编译Openssl
make & make install
编译命令
1、make
2、make module_install
make modules_install 是安装到/lib/modules/version下面, version就是新编译内核的版本,而且不会更新/lib下的文件
3、make install
make modules_install
是把编译好的模块拷贝到系统目录下(一般是/lib/modules/)。
也可自己指定ko安装路径:
make ARCH=arm64 modules_install INSTALL_MOD_PATH=yourpath
如:make ARCH=arm64 modules_install INSTALL_MOD_PATH=“modules_install_path”
在交叉编译的情况下,需要将ko模块安装到rootfs。
make install
安装内核二进制映像, 生成并安装boot初始化文件系统映像文件
启动新的Linux内核
修改内核启动顺序
centos7修改内核启动顺序
1、执行如下命令,查看系统内部有多少个内核。
cat /boot/grub2/grub.cfg |grep menuentry
2、参考如下命令,配置从默认内核启动。内核名称根据系统内部查到的实际名称来替换。
grub2-set-default “CentOS Linux (3.10.0-123.9.3.el7.x86_64) 7 (Core)”
3、执行如下命令,确认配置成功。
grub2-editenv list
centos6修改内核启动顺序
1、查看/etc/grub.conf文件,确认系统内核的情况,如下图所示系统存在2个内核的现象。
从上往下内核版本依次是2.6.32-573.18.1.el6.x86_64和2.6.32-431.23.3.el6.x86_64。
2、在grub.conf文件中决定开机使用哪个内核版本做启动的参数是default,默认值为0,代表从最新的内核启动。代表启动的内核版本从上往下依次是0、1、2等。
3、如果要选择从旧版内核,即系统最开始的内核启动,则把default值改为1 ,然后重启服务器从新的内核进行引导。
centos8修改内核启动顺序
1、查看默认内核
grubby --default-kernel
2、 查看所有内核
grubby --info=ALL
3、修改默认启动内核
grubby --set-default /boot/vmlinuz-4.18.0-80.11.2.el8_0.x86_64
Ubuntu修改内核启动顺序
1、查看当前内核的启动顺序
cat /boot/grub/grub.cfg |grep menuentry
2、修改grub文件
假设要修改为3.13.0-166内核启动, 修改文件/etc/default/grub
$ sudo vim /etc/default/grub
GRUB_DEFAULT=0 ##修改为
GRUB_DEFAULT=“Advanced options for Ubuntu>Ubuntu, with Linux 4.4.0-31-generic”
3、更新修改后的grub
update-grub
参考:https://cloud.tencent.com/developer/article/2086777
我们是centos7,所以参考上述文档
当前没有make install完成的情况,默认有两个启动选项
安装完成以后,有三个启动选项了:
开机后如下:选择5.12.10启动就可以了
进入系统后,uname -a结果如下,成功