nettrace icon indicating copy to clipboard operation
nettrace copied to clipboard

基于docker编译后进入容器显示bash: nettrace: command not found

Open sq591442679 opened this issue 10 months ago • 1 comments

我是一名内核开发的初学者。 我的操作系统是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没有被正确安装吗?

sq591442679 avatar Apr 25 '24 03:04 sq591442679

内核支持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替换为正确的目录。

menglongdong avatar Apr 25 '24 03:04 menglongdong