首页 > 系统相关 >linux配置开启KASAN功能

linux配置开启KASAN功能

时间:2022-11-26 15:01:27浏览次数:33  
标签:kasan sudo 开启 编译 KASAN 内核 linux config


【KASAN linux内存检测工具】
(本文档将引导编译一个开启kasan功能的内核)

一 简介:
  Kernel Address Sanitizer 缩写KASAN;是linux内核的动态内存检测工具,
  主要检查所有程序中内存越界访问和使用已经释放内存空间的问题。
  !注意:开启kasan后系统可用内存会减少约1/8,并且系统运行的程序性能会大幅下降。

二 获取:
  kasan在linux4.0及其之后被集成在linux内核中,但是直到linux4.4版本才开始支持ARM64(不支持ARM32);
  所以在linux官网(https://www.kernel.org)下载的内核源码(版本>=4.0)已经自带了kasan,我们所需要做的就是在编译内核前将其功能打开。

三 配置kasan及编译内核:
  此处以4.15.1版本内核为例(环境为在Ubuntu1804虚拟机中再编译一个带kasan功能的内核);

  3.1. 将下载的内核源码压缩包拷贝到虚拟机:

  3.2. 在虚拟机中解压:
    tar -zxvf linux-4.15.1.tar.gz

  3.3. 解压完成后,进入源码目录:
    cd linux-4.15.1/

  3.4. 将本地(当前linux内核)使用的配置复制到解压出来的目录中,替换linux官网默认的.config文件
    cp /boot/config-版本号-编号-generic ./.config
    (使用linux源码中默认的.config配置文件编译出来的内核可能无法正确启动)
    例如: cp /boot/config-4.15.0-192-generic ./.config

  3.4. 在新的内核中配置kansan
    3.4.1. 开启配置界面:
      make menuconfig

    /* 执行过程中可能会报错:
      ① recipe for target'scripts/kconfig/dochecklxdialog' failed.
        需要安装: sudoapt-get install ncurses-dev
      ② recipe for target 'menuconfig' failed.
        检查是否安装libncurses5-dev库:
          没安装: sudo apt-get install libncurses5-dev
          已安装:终端窗口太小,调大终端窗口。 */

    3.4.2. 在弹出的图形化界面中,使用键盘的上下按键,选中 Kernel hacking --->
      然后点击回车,进入此项;再继续选中 Memory Debugging --->
      点击回车,进入此项;在此界面中选中将如下几项选中:
          [*] SLUB debugging on by default
          <M> Memory hotplug notifier error injection module
          [*] KASan: runtime memory debugger
      选中某一项时,可以使用Y/N来选择或者取消(也可使用空格键切换);
      第二项<M> Memory hotplug ...可选,该项是以动态加载的形式提供一个有内存操作错误的内核模块;可用于验证kasan功能是否成功开启。

    3.4.3. 配置完成后,选中图形化界面下方的 < Save > 以保存更改;保存后,逐级退出(选择 < Exit>);

  3.5. 编译内核
    3.5.1. 在配置完成后,在源码目录下输入
      sudo make -j(CPU核数)
      可使用命令[ getconf _NPROCESSORS_ONLN ]查询cpu核数;
      编译指令可使用:sudo make -j'getconf _NPROCESSORS_ONLN'

      /* 如果在这一步骤出现了错误:“openssl/opensslv.h: No such file or directory”
        则说明系统缺乏OpenSSL开发包,执行如下指令:
        sudo apt-get install libssl-dev
      */

    3.5.2. 编译完成并无报错后再输入
      sudo make modules_install

    3.5.3. modules安装完成后再输入
      sudo make install

    3.5.4. 等待执行完成后,重启虚拟机即可
      reboot

  3.6. 以带kasan版本内核启动linux系统
    3.6.1. 如果重启系统后,出现了选择内核的界面,说明内核编译成功。
      选择带kasan版本的内核启动即可
      当前例子为 *Ubuntu, with Linux 4.15.1....

    3.6.2.如果重启后直接开机,没有出现选择内核的页面.
      (1)则在进入系统后,执行下面的命令:
        vi /etc/default/grub
      (2)然后将GRUB_HIDDEN_TIMEOUT=0使用#注释掉:
        # GRUB_HIDDEN_TIMEOUT=0
        保存退出;
      (3)执行如下命令
        sudo update-grup
        然后重启系统


/* 参考资料 */
Linux内核内存检测工具KASAN:http://t.zoukankan.com/linhaostudy-p-14028917.html
Linux内核编译: https://blog.csdn.net/ibless/article/details/82349507

标签:kasan,sudo,开启,编译,KASAN,内核,linux,config
From: https://www.cnblogs.com/sanshigoodgoodstudy/p/16927422.html

相关文章

  • Linux 卸载磁盘target is busy
    一、简介问题:umount/dev/sdxx命令时可能会报"deviceisbusy",这个合理的报错可以防止正在使用的设备上的数据丢失。如1)使用者自己清楚确实发生了错误2)使用者不在乎数据......
  • Linux基础第二章:文件压缩归档及文本编辑之神vi编辑器
    一、文件压缩及归档1、文件压缩2、归档3、解压 二、文本编辑之神vi编辑器1、vi介绍2、vi的三种模式3、vi的保存与退出(重点)4、vi使用技巧①命令模式下②末行模式......
  • 前端学习 linux —— 软件安装(Ubuntu)
    软件安装(Ubuntu)本篇主要讲解ubuntu中软件的安装、​​apt的源​​​、​​内网部署​​​案例(graylog为例),最后是​​python​​开发准备。apt和rpm在​​linux第......
  • 前端学习 linux —— 软件安装(Ubuntu)
    软件安装(Ubuntu)本篇主要讲解ubuntu中软件的安装、​​apt的源​​​、​​内网部署​​​案例(graylog为例),最后是​​python​​开发准备。apt和rpm在​​linux第......
  • Linux操作系统之hostname 命令
    前言①hostname显示或设置系统的主机名。②Linux操作系统查看主机名hostname的两种方式通过hostname命令来查看本机的hostname;命令: hostnameLinux操作系统的hostname是一......
  • Linux操作系统之hostname 命令
    前言①hostname显示或设置系统的主机名。②Linux操作系统查看主机名hostname的两种方式通过hostname命令来查看本机的hostname;命令: hostnameLinux操作系统的hostname是一......
  • linux-1
                                                 ......
  • Linux 6.0-rc3版本正式公布 Linus Torvalds纪念内核走过31周年
    上周是LinusTorvalds宣布启动Linux内核的31周年,他在6.0-rc3公告中评论道:因此,正如一些人已经注意到的那样,上周是一个周年纪念周--自最初的Linux开发公告以来已有31年,时间过......
  • archlinux安装,日常使用
    archlinux安装安装往事因为经常要用到linux操作系统,于是我突发奇想想安装一个linux,操作系统,在bilibili查找视频的众多linux系统中,我选择了arch。其实在之前我也安装过ar......
  • Linux下好用的下载软件(bt,磁力,http,https, stream...)
    https://www.codenong.com/1664311678768348926/下面来看一下Linux有哪些常用又好用的下载工具。XDMXDM(XtremeDownloadManager)是一个免费且功能强大的下载工具,支持简......