nettrace
nettrace copied to clipboard
基于docker编译后进入容器显示bash: nettrace: command not found
我是一名内核开发的初学者。
我的操作系统是ubuntu20.04,内核是由源码编译来的Linux-5.15-132版本,并且我对内核源代码进行了少量修改。
在终端输入cat /boot/config-$(uname -r) | grep CONFIG_DEBUG_INFO_BTF
,显示CONFIG_DEBUG_INFO_BTF=y
,我想这意味着我的内核支持BTF。
之后我尝试基于docker编译nettrace,就像README中的2.4小节一样,我编写了如下的Dockerfile:
FROM imagedong/nettrace-build:latest
COPY nettrace /root/nettrace
RUN chmod -R 777 /root/nettrace \
&& make -C /root/nettrace/ all
CMD ["/bin/bash", "-c", "while true; do sleep 3600; done"]
之后基于此Dockerfile构建nettrace镜像并通过docker run -it --rm --network=host --privileged -v /lib/modules/:/lib/modules/ -v /usr/src/:/usr/src/ nettrace:latest
指令运行容器,但进入容器后输入nettrace -h
指令,显示bash: nettrace: command not found
。
请问这是意味着nettrace没有被正确安装吗?
内核支持BTF的话可以直接下面release中编译好的来使用。如果想自己编译的话,不需要使用Dockerfile,把代码下载到目录xxx/nettrace/,直接运行下面的命令就可以进行编译,编译完成后的目标文件在xxx/nettrace/src/nettrace。
docker run -it --rm --network=host --privileged -v xxx/nettrace:/root/nettrace -v /lib/modules/:/lib/modules/ -v /usr/src/:/usr/src/ imagedong/nettrace-build make -C /root/nettrace/ all
注意将命令中的xxx替换为正确的目录。