我已在内核黑客攻击中启用“内核内存泄漏检测器”选项,并重建/重新引导系统,目前kmemleak文件存在于/ sys / kernel / debug文件夹中,但似乎我无法通过“ echo”来触发扫描扫描> / sys / kernel / debug / kmemleak”,我已经将debugfs挂载到/ sys / kernel / debug,但是当我尝试触发扫描时,它给我“ -bash:echo:写错误:设备或资源繁忙”。我的猜测是,这是因为即使我是root用户,我也没有在/ sys文件夹内的写权限。有什么建议如何解决这个问题?非常感谢。
我尝试过
答案 0 :(得分:2)
使用kmemleak时,您需要检查几件事。
检查是否传递了任何引导参数或命令行参数kmemleak=off
。
在启动日志中,检查是否有与kmemleak相关的日志,尤其是下面的日志
kmemleak: Kernel memory leak detector disabled
kmemleak: Early log buffer exceeded (919), please increase DEBUG_KMEMLEAK_EARLY_LOG_SIZE
大概,我认为您需要配置CONFIG_DEBUG_KMEMLEAK_EARLY_LOG_SIZE
。如果在引导过程中kmemleak的日志大小增加到超过Linux内核配置中设置的限制,则kmemleak被禁用。
因此,配置CONFIG_DEBUG_KMEMLEAK_EARLY_LOG_SIZE
并增加大小。此选项也在kernel hacking
下。我正在使用内核源代码4.19.9,并附上屏幕截图以供参考。 Maximum kmemleak early log entries
是该字段,您可能需要将其设置为更高的值(例如4096)。