С архитектурой разобрался. Нужно было сделать "make oldconfig" и, логично, взять другой тулчейн.
Но теперь оно и вовсе не компилируется..
Code:
tatikoma-PC linux-3.18 # make ARCH=mips modules SUBDIRS=net/netfilter
WARNING: Symbol version dump ./Module.symvers
is missing; modules will have no dependencies and modversions.
CC [M] net/netfilter/nf_conntrack_proto_gre.o
CC [M] net/netfilter/nf_conntrack_h323_main.o
CC [M] net/netfilter/nf_conntrack_h323_asn1.o
LD [M] net/netfilter/nf_conntrack_h323.o
CC [M] net/netfilter/nf_conntrack_pptp.o
CC [M] net/netfilter/nf_conntrack_sip.o
CC [M] net/netfilter/nf_nat_sip.o
CC [M] net/netfilter/xt_DSCP.o
CC [M] net/netfilter/xt_IMQ.o
CC [M] net/netfilter/xt_dscp.o
CC [M] net/netfilter/xt_physdev.o
Building modules, stage 2.
MODPOST 9 modules
FATAL: section header offset=3233873920 in file 'net/netfilter/nf_conntrack_h323.o' is bigger than filesize=51560
scripts/Makefile.modpost:90: ошибка выполнения рецепта для цели «__modpost»
make[1]: *** [__modpost] Ошибка 1
Makefile:1413: ошибка выполнения рецепта для цели «modules»
make: *** [modules] Ошибка 2
В итоге делаю так:
1. Добавляю CONFIG_NETFILTER_XT_SET=m в .config (в make menuconfig почему-то этого модуля нет, почему?).
2. Вызываю make menuconfig, сразу делаю просто save.
3. Вызываю make oldconfig
После этого оно компилирует мне вот такой модуль:
Code:
tatikoma-PC # file xt_set.ko
xt_set.ko: ELF 32-bit MSB relocatable, MIPS, MIPS32 rel2 version 1 (SYSV), BuildID[sha1]=2aa4b9e1331419f48c09b9aac73095f9db48d9ed, not stripped
Загружаю его на роутер, выполняю insmod, проверяю lsmod - нет модуля. Смотрю в dmesg вижу:
Code:
<4>[931216.970000] xt_set: Unknown symbol ip_set_add (err 0)
<4>[931216.970000] xt_set: Unknown symbol ip_set_test (err 0)
<4>[931216.980000] xt_set: Unknown symbol ip_set_del (err 0)
<4>[931216.990000] xt_set: Unknown symbol ip_set_nfnl_put (err 0)
<4>[931216.990000] xt_set: Unknown symbol ip_set_nfnl_get_byindex (err 0)
Похоже нужно было скомпилировать ещё несколько модулей..
xt_set зависит от ip_set, который зависит от nfnetlink.
Разобрался с make menuconfig, научился включать/выключать в нем нужные пункты, выбрал компилирование ip_set и nfnetlink в виде модулей.
Скомпилировал. Закинул. Пробую добавить nfnetlink, у которого нет зависимостей от других модулей:
Code:
<4>[935829.390000] nfnetlink: Unknown symbol __netlink_kernel_create (err 0)
<4>[935829.390000] nfnetlink: Unknown symbol netlink_set_err (err 0)
<4>[935829.400000] nfnetlink: Unknown symbol netlink_ack (err 0)
<4>[935829.400000] nfnetlink: Unknown symbol netlink_alloc_skb (err 0)
<4>[935829.410000] nfnetlink: Unknown symbol netlink_rcv_skb (err 0)
<4>[935829.420000] nfnetlink: Unknown symbol netlink_kernel_release (err 0)
<4>[935829.420000] nfnetlink: Unknown symbol nlmsg_notify (err 0)
<4>[935829.430000] nfnetlink: Unknown symbol netlink_has_listeners (err 0)
Тут я уже окончательно удивился. Похоже я как-то не так компилирую. Может не тот тулчейн (врятле, их всего два, - пробовал оба)? Может не тот конфиг (вот тут запросто, кстати, - конфига с названием archer_c7 не видно..)? Или может нужно полностью перекомпилировать всю прошивку?
На этом моменте я очень сильно удивился и что делать дальше, - не понимаю.
Столкнулся с аналогичной проблемой, ipset хотел использовать в связке с iptables.
Удалось ли ее решить? Как я понимаю нужно полностью пересобирать ядро.