最近把公司的电脑安装了 ubuntu系统,用来做日常开发和学习的环境,看到内核比较新,所以想弄点新玩意玩玩。
环境为
# cat /etc/issue Ubuntu 18.04.3 LTS \n \l # uname -a Linux zhizhiliu-hp 5.0.0-32-generic #34~18.04.2-Ubuntu SMP Thu Oct 10 10:36:02 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux按照bpftrace 官方安装文档 安装了了之后,启动时候报错如下
# bpftrace -e 'tracepoint:syscalls:sys_enter_openat { printf("%d %s %s\n", pid, comm, str(args->filename)); }' Error creating printf map: Operation not permitted Creation of the required BPF maps has failed. Make sure you have all the required permissions and are not confined (e.g. like snapcraft does). `dmesg` will likely have useful output for further troubleshooting在这之前安装了bcc-tool,运行的时候也遇到了类似的错误,找了半天也没找到解决方案。
最后在这位老哥的blog中找到了一种解决方法 https://itnext.io/how-to-run-bpftrace-from-a-small-alpine-image-and-with-least-privileges-379146fcfcf1
修改如下的参数
root@zhizhiliu-hp:/data/softs/bpftrace/build# sudo bash -c 'echo 1 > /proc/sys/kernel/sysrq' root@zhizhiliu-hp:/data/softs/bpftrace/build# sudo bash -c 'echo x > /proc/sysrq-trigger'再次运行就正常了,很开心。
这两个命令做了啥呢? 是关闭了 kernel lock-down 机制,lock-down 这个东西是个啥呢?是一种新的内核安全机制,类似一种保护锁。