Eu quero carregar os módulos do kernel, ip_gre.ko
e gre.ko
, em um dispositivo incorporado executando o embedded-linux para fazer com que esse dispositivo suporte o protocolo GRE. Como eu não quero mudar o kernel do dispositivo Embedded-linux, eu tento carregar módulos do kernel ao invés de reinstalar o kernel do dispositivo.
Felizmente, eu tenho o código-fonte do kernel desse dispositivo, portanto, eu poderia compilar os módulos ip_gre.ko
e gre.ko
. No entanto, o carregamento de módulos usando insmod
no dispositivo falhou com as seguintes mensagens:
$ insmod gre.ko
insmod: can't insert 'gre.ko': Resource temporarily unavailable
$ insmod ip_gre.ko
ip_gre: Unknown symbol gre_del_protocol
ip_gre: Unknown symbol gre_add_protocol
insmod: can't insert 'ip_gre.ko': unknown symbol in module, or unknown parameter
$ dmesg
GRE over IPv4 demultiplexor drvier
gre: can't add protocol
ip_gre: Unknown symbol gre_del_protocol
ip_gre: Unknown symbol gre_add_protocol
Meu dispositivo tem memeory suficiente para carregar os módulos ( free
mostrou que 190700/239760 são gratuitos).
Você poderia, por favor, me avisar por que isso acontece e suas possíveis soluções?
ATUALIZAÇÃO:
Estas são diferenças entre .config
do kernel em execução (no dispositivo) e do kernel compilado para os dois módulos acima.
$ diff config_for_running_kernel config_for_kernel_compiled_for_modules
299c299, 301
< # CONFIG_NET_IPGRE_DEMUX is not set
---
> CONFIG_NET_IPGRE_DEMUX=m
> CONFIG_NET_IPGRE=m
> CONFIG_NET_IPGRE_BROADCAST=y
963c965
< CONFIG_PPTP=y
---
> CONFIG_PPTP=m
Como CONFIG_PPTP
depende de CONFIG_NET_IPGRE_DEMUX
, eu tive que fazer isso como um módulo para compilar o kernel sem uma mensagem de erro.
As diferenças causam mensagens de erro acima? Se for, você poderia me dizer como posso resolvê-lo ...? (e se você tiver referências adicionais que possam me ensinar sobre esses problemas e soluções, eu ficaria muito grato)