【发布时间】:2014-02-12 15:03:48
【问题描述】:
我已经为我的内核 (3.11.10) 编译了 perf。在编译过程中,一些库丢失了,所以我已经安装了。
但现在当我运行 perf 时,我收到以下消息:
Couldn't record kernel reference relocation symbol
Symbol resolution may be skewed if relocation was used (e.g. kexec).
Check /proc/kallsyms permission or run as root.
Kernel address maps (/proc/{kallsyms,modules}) were restricted.
Check /proc/sys/kernel/kptr_restrict before running 'perf record'
If some relocation was applied (e.g. kexec) symbols may be misresolved.
Samples in kernel modules can't be resolved as well.
由于我使用的是自定义构建内核,对我来说最明显的解释是,我的内核中缺少某些选项。如果是这样,我怎样才能找出缺少的内容?
我不确定perf 到底在抱怨什么。我该如何解决这个问题?
编辑:
/proc/kallsyms 不存在且/proc/sys/kernel/kptr_restrict 包含0:
$ cat /proc/sys/kernel/kptr_restrict
0
我自己编译了内核,它可能缺少一些选项。这是什么/proc/kallsyms?如何在我的内核中启用它?
【问题讨论】: