我正在尝试使用 OpenWRT 发行版为嵌入式设备编译自己的 Linux。我正在尝试使用该/proc/net/netstat
界面获取一些多播信息,但找不到它(通常这在我的桌面上可用)。
如果我是对的,应该在 中启用此功能,kernel_menuconfig
但我找不到与此相关的任何选项。
更新:我正在尝试使用内核3.10.49
和4.4.14
.在这两种情况下proc.c
都已编译(proc.o
在 my 中可用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() 函数生成错误。
如果该部分出现错误,则必须查找错误原因。