如何在docker for mac中的centos容器中使用systemtap(stap)

时间:2017-09-04 07:25:27

标签: macos docker module load systemtap

当我使用stap时,它会将此错误告诉我图像,我该如何修复它。

screenshot from error

1 个答案:

答案 0 :(得分:1)

真的不知道为什么这个问题一直被低估了。当我受到关注时,downvotter是我总是犹豫在stackoverflow上问东西的原因之一......

所以,对ubuntu下的容器也有同样的担忧,这就是我如何修复它:尝试在docker上启动一个ubuntu bash(不是centos但步骤应该类似)

docker run -it --cap-add sys_admin ubuntu bash

然后安装一些库和systemtap

apt-get update
apt-get --yes install build-essential cmake bc curl diffutils git kmod libcurl4-openssl-dev wget
apt-get --yes install systemtap systemtap-sdt-dev

现在安装内核头文件(需要时间)

export KERNELVER=$(uname -r  | cut -d '-' -f 1)
export KERNELDIR=/linux-$KERNELVER
cd /
curl -o linux-${KERNELVER}.tar.gz https://www.kernel.org/pub/linux/kernel/v4.x/linux-${KERNELVER}.tar.gz
tar zxf linux-${KERNELVER}.tar.gz
cd linux-${KERNELVER}
zcat /proc/1/root/proc/config.gz > .config
make all
make modules_prepare
make headers_install
make modules_install

现在运行stap -l 'syscall.*'。它应该工作和显示:

...
syscall.waitpid
syscall.write
syscall.writev

取自:https://github.com/fdebonneval/mobydig/blob/master/resources/build