Я пытаюсь скомпилировать свой собственный Linux для встраиваемых устройств, используя дистрибутив OpenWRT. Я пытаюсь получить некоторую многоадресную информацию с помощью интерфейса / proc / net / netstat
, но он не найден (обычно он доступен на моем рабочем столе).
Если я прав, это должно быть включено в kernel_menuconfig
, но я не могу найти ни одной опции, связанной с этим.
ОБНОВЛЕНИЕ : я пытался с ядром 3.10.49
и 4.4.14
. В обоих случаях proc.c
скомпилирован ( proc.o
доступен в моем build_dir
, / proc
смонтирован, но ] / proc / net / netstat
не существует.
Через некоторое время я только что вернулся к этому вопросу и, наконец, решил его. Проблема в том, что OpenWRT использует путь к исходному коду ядра, и дополнительная опция должна быть отключена , а именно CONFIG_PROC_STRIPPED
. Он находится в
(make) kernel_menuconfig -> File systems -> Pseudo filesystems -> [ ] Strip non-essential /proc functionality to reduce code size
Это выяснилось при просмотре исправленной версии исходного кода ядра, а не официальной. Спасибо за все усилия, которые вы приложили!
/ 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.
Сначала найдите sockstat и snmp в / proc / net /.
Также убедитесь, что функция ip_proc_init_net () в net / ipv4 / proc.c вызвала ошибку с функцией proc_create ().
Если в этой части возникает ошибка, вы должны найти причину ошибки.