centos7.6 内核编译安装

一、背景

1.硬件环境

腾讯云服务器安装的CentOS7.6,内核版本为3.10.0-1160.11.1.e17.x86_64。
我要在当前系统上,编译、安装内核5.0.9(当然也可以根据自己的需要进行选择)。

2.内核下载网址

1)内核官网:http://www.kernel.org
2)清华大学镜像站:https://mirrors.tuna.tsinghua.edu.cn/kernel

二、实验内容

(1)从https://www.kernel.org/下载适宜版本的内核源码并解压;

(2)配置内核特性,编译内核;

(3)安装内核模块,并安装内核;

(4)验正并测试内核是否安装正确。

三、实验步骤

1.获取管理员root权限

2.安装依赖包

(可能还需要其他的软件包,根据实际情况安装。)

yum -y install gcc bc gcc-c++ ncurses ncurses-devel cmake elfutils-libelf-devel openssl-devel 

3.下载、解压内核 (以下步骤都在解压后的根目录下执行)

下载的源码包名称为linux-5.0.9.tar.xz,然后上传到云端(此处方法有很多,就不在列举了),CentOS7.6的内核源码都放在了/usr/src/kernels/下,所以我也将下载的源码解压到该路径下:

cd /usr/src/kernels/
sudo tar -zxvf ~/installer/linux/src/linux-5.0.9.tar.xz

下面的各项编译与设置操作,一定要在此目录中进行!

4.添加系统调用

1)加入系统调用函数

cd ./kernel
vim sys.c

添加如下内容:

centos7.6 内核编译安装_第1张图片
2)添加声明

cd ./arch/x86/include/asm
vim syscalls.h

添加如下内容:
centos7.6 内核编译安装_第2张图片
3)添加一个系统调用的ID

cd ./arch/x86/entry/syscalls
vim syscall_64.tbl

添加如下内容
在这里插入图片描述

5.配置内核

1)删除所有的编译生成文件、内核配置文件和各种备份文件

cd /usr/src/kernels/linux/linux-5.0.9
make mrproper

centos7.6 内核编译安装_第3张图片
2)删除前一次编译过程的残留数据

make clean

3)生成由scripts工具和Kconfig构成的图形配置界面

make menuconfig

建议联系时采用默认值

6.编译内核(有些耗时间!)

make -j4

其中,“-j4”是可选参数,表示允许4个任务同时进行,这样比较快,4是我机器中CPU核的个数的2倍。
这个过程通常比较慢长,跟选择编译的项目、硬件性能有关。单CPU大概需要2.5h。

7.安装内核

1)安装模块(进入解压目录安装模块,安装完毕后可以到/lib/modules目录下查看)

make modules_install

在这里插入图片描述

2)安装内核

make install

8.安装完成后修改默认内核启动项

cat /boot/grub2/grub.cfg | grep menuentry —>查看系统可用内核
grub2-set-default '新内核' —>修改开机默认使用的内核(不设置可在开启后选择)

执行结果

9.重启电脑查看内核版本

uname -r 新版本
执行结果

10.测试系统调用

源程序如下:

#include
 
#include
 
#include
 
#include
 
int main()
 
{
 
 
 
    long int  a = syscall(335);
 
    printf("System call sys_hellolinux return %ld\n ", a);
 
    return 0;
 
}

运行结果
centos7.6 内核编译安装_第4张图片

dmesg ##查看调用是否成功

运行结果
运行结果

调用成功!!!

11.查看内核版本

cat /proc/version

运行结果
运行结果

至此,内核编译实验结束

你可能感兴趣的:(centos,内核)