内核:4.18.0-147.8.1.el7.aarch64
实现过程:在鲲鹏arm服务器完成

1.官网下载部分源码rpm包kernel-alt-4.14.0-115.el7a.0.1.src.rpm

2.编译内核之前,必须安装编译内核基本工具链,如未安装可能遇到如下问题:

   error: Failed build dependencies:
   xmlto is needed by kernel-alt-4.14.0-115.el7.0.1.aarch64
   asciidoc is needed by kernel-alt-4.14.0-115.el7.0.1.aarch64
   newt-devel is needed by kernel-alt-4.14.0-115.el7.0.1.aarch64
   pciutils-devel is needed by kernel-alt-4.14.0-115.el7.0.1.aarch64
执行命令安装:
   `yum install –y xmlto asciidoc newt-devel pciutils-devel`
安装要求的工具链:
   yum install rpm-build redhat-rpm-config asciidoc hmaccalc perl-ExtUtils-Embed pesign xmlto
   yum install audit-libs-devel binutils-devel elfutils-devel elfutils-libelf-devel
   yum install ncurses-devel newt-devel numactl-devel pciutils-devel python-devel zlib-deve

3.编译之前确保mockbuild用户和mockbuild所属的组有效

   groupadd mockbuild
   radd mockbuild -g mockbuild

4.安装rpm 包,此rpm 包实际为rpmbuild 构建工程

rpm -ivh kernel-alt-4.14.0-115.el7a.0.1.src.rpm
安装完成,rpm构建工程自动部署在
/root/rpmbuild/SPECS
/root/rpmbuild/SOURCES

5.rpmbuild 构建,会自动下载全量内核代码(包括补丁合入)

cd /root/rpmbuild/SPECS
rpmbuild -bp --target=$(uname -m) kernel-alt.spe

6.构建完成后,可以获取到全量内核源码

路径为:
cd /root/rpmbuild/BUILD/kernel-alt-4.14.0-115.el7a/linux-4.14.0-115.el7.0.1.aarch64

7.进入编译 make menuconfig也可直接更改.congfig

CONFIG_SLUB_DEBUG=y
CONFIG_KASAN=y
  1. Make 编译时会有两个选项
    make -j 64
    make modules_install 驱动安装(可选)
    Make install 内核安装(可选)
    选择第一个,而后选择M模块编译

    Kasan实现原理以及实现过程
    Kasan实现原理以及实现过程

9.编译完成后查看/boot下会多出一个内核Kasan实现原理以及实现过程

10.查询本系统内有几个内核

cat /etc/grub2-efi.cfg |grep menuentry
新编译的内核会有显示(如果未显示就重启,reboot)

Kasan实现原理以及实现过程

11.设置更改后的内核为首选项启动并查询是否更改

grub2-set-default "CentOS Linux (4.14.0) 7 (AltArch)";
grub2-editenv list

Kasan实现原理以及实现过程

12.测试是否成功

Linux 内核的源码中已经包含了针对 Kasan 的测试代码,其位置在 lib/test_kasan.c。编译内核或者单独编译 lib 模块的时候,会生成 test_kasan.ko 模块。当向内核插入该模块的时候,就会执行测试代码,编译过就会生成.ko
Insmod test_kasan.ko
Kasan实现原理以及实现过程

13.加载ko即可在dmesg中查询或者直接输出
dmesg |grep kasan
Kasan实现原理以及实现过程