OpenWRT 배포판을 사용하여 임베디드 장치용 Linux를 컴파일하려고 합니다. 인터페이스를 사용하여 일부 멀티캐스트 정보를 얻으 려고 하는데 /proc/net/netstat
찾을 수 없습니다(일반적으로 내 데스크탑에서 사용할 수 있습니다).
내 생각이 맞다면 이 기능은 에서 활성화되어야 하는데 kernel_menuconfig
이와 관련된 옵션을 찾을 수 없습니다.
고쳐 쓰다3.10.49
:커널을 사용 하려고 하는데 4.4.14
두 경우 모두 proc.c
컴파일되었습니다( proc.o
내 에서는 사용 가능 build_dir
하지만 /proc
설치 /proc/net/netstat
되어 있지 않습니다.
답변1
이 문제를 다시 해결하는 데 시간이 좀 걸렸고 마침내 해결되었습니다. 문제는 OpenWRT가 커널 소스 코드를 추적하고 있다는 것입니다. 추가 옵션은 다음과 같습니다.장애가 있는, 즉 CONFIG_PROC_STRIPPED
에 있습니다.
(make) kernel_menuconfig -> File systems -> Pseudo filesystems -> [ ] Strip non-essential /proc functionality to reduce code size
이 문제에 대한 해결책은 공식 버전이 아닌 커널 소스 코드의 패치 버전을 보는 것입니다. 모든 노력에 감사드립니다!
답변2
/proc/net/netstat는 net/ipv4/proc.c에 의해 생성됩니다.
net/ipv4/proc.c ip_proc_init_net() 함수에서는 아래 소스와 같이 proc_create()로 생성됩니다.
net/ipv4/proc.o가 컴파일되었다고 말씀하셨습니다.
소스 코드에서 볼 수 있듯이 net/ipv4/proc.c는 /proc/net/sockstat, netstat 및 snmp를 생성합니다.
생성된 /proc/net/udp는 net/ipv4/udp.c에 의해 생성됩니다.
먼저 /proc/net/에서 sockstat 및 snmp를 찾으십시오.
또한 net/ipv4/proc.c의 ip_proc_init_net() 함수가 proc_create() 함수를 사용하여 오류를 생성했는지 확인하십시오.
이 부분에서 오류가 발생하면 오류의 원인을 찾아야 합니다.