文档
注册
评分
提单
论坛
小智

开启KASAN

KASAN(Kernel Address Sanitize)是一个动态检测内存错误的工具,主要功能是检查内存越界访问和使用已释放的内存等问题。在涉及内存的问题时,开启KASAN往往能帮助用户更快的定位问题。但是在打开KASAN后,会出现难以复现的问题,存在概率性复现的问题。

内核集成了KASAN,打开KASAN选项,重新编译内核即可使能相关功能。KASAN在Linux内核4.0版本时被引入内核,所以选择的内核代码需要高于4.0版本。另外,最基本的KASAN功能需要GCC 4.9.2支持,更多的支持则需要GCC 5.0及以上版本。以下操作以鲲鹏平台CentOS7.6为例:

  1. 下载RPM包kernel-alt-xxx.src.rpm。

    下载地址:http://vault.centos.org/7.6.1810/os/Source/SPackages/

  2. 安装依赖。
    yum install gcc net-tools openssl-devel python-devel git bison java-devel numactl-devel ncurses-devel xmlto  asciidoc newt-devel pciutils-devel bc 
    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-devel
  3. 更新GCC。
    yum install -y centos-release-scl centos-release-scl-rh
    yum install -y devtoolset-8-gcc devtoolset-8-gcc-c++
    source scl_source enable devtoolset-8
  4. 确保mockbuild用户和mockbuild所属的组有效。
    1
    2
    groupadd mockbuild
    useradd mockbuild -g mockbuild
    
  5. 安装RPM包。
    1
    rpm –ivh kernel-alt-xxx.src.rpm
    

    安装完成,RPM构建工程自动部署在“/root/rpmbuild/SPECS”“/root/rpmbuild/SOURCES”

  6. 构建rpmbuild。
    1
    2
    cd /root/rpmbuild/SPECS
    rpmbuild -bp --target=$(uname -m) kernel-alt.spec
    
  7. 编译.config配置文件,文件路径及文件名称请以实际情况为准。
    1
    2
    cd /root/rpmbuild/BUILD/kernel-alt-xxx/linux-xxx.aarch64
    make menuconfig
    

    进入menuconfig界面后,依次选择Kernel hacking > Memory Debugging > KASan: runtime memory debugger,选中“KASan: runtime memory debugger”,将“Instrumentation type”修改为“Inline instrumentation”,保存后退出。

  8. 编译内核,文件路径及文件名称请以实际情况为准。
    1
    2
    3
    4
    cd /root/rpmbuild/BUILD/kernel-alt-xxx/linux-xxx.aarch64
    make -j
    make modules_install
    make install
    
  9. 重启。
    1
    reboot
    

    重启后选择对应的内核,内核启动较慢,约耗时5~15分钟,请耐心等待。

搜索结果
找到“0”个结果

当前产品无相关内容

未找到相关内容,请尝试其他搜索词