Compilação cruzada do driver de dispositivo tun / tap para armv7

1

Eu tenho várias câmeras IP da China com base no Hi3516A SOC. Eles funcionam bem e eu quero ter acesso a eles usando VPN. Eu decido instalar tinc-vpn na câmera porque eu tenho acesso total ao shell da câmera usando telnet.

Ok, bem, usando buildroot eu criei com sucesso uma toolchain cross-compile e criei tinc. Mas o tinc requer suporte para dispositivos tun / tap que a câmera não suporta por padrão. Então, usando dmesg e uname -a i encontrado, qual câmera usa o kernel Linux 3.4.35. Eu faço o download do código-fonte do kernel, adiciono suporte para TUN / TAP como módulo de kernel carregável e compilo:

~$ make ARCH=arm CROSS_COMPILE=/opt/hisilicon/arm/usr/bin/arm-linux- defconfig
~$ make ARCH=arm CROSS_COMPILE=/opt/hisilicon/arm/usr/bin/arm-linux- menuconfig 
# add building of TUN/TAP driver
~$ make ARCH=arm CROSS_COMPILE=/opt/hisilicon/arm/usr/bin/arm-linux- -k

O Kernel compilou bem e eu coloquei tun.ko na minha câmera. Depois de executar insmod ./tun.ko , obtive

insmod: can't insert 'tun.ko': invalid module format

~ # dmesg | tail -n 1
tun: version magic '3.4.35 mod_unload ARMv5 p2v8 ' should be '3.4.35 mod_unload ARMv7 p2v8 '

pesquisando por algum tempo eu encontrei esta solução . Depois do que, módulo carregado com sucesso, mas depois eu tento ler ou gravar em /dev/net/tun execução falha com falha de segmentação e iniciando tincd termina com erro indefinido.

Então, alguma idéia de como eu posso construir o driver TUN / TAP para minhas câmeras?

P.S.

~ # dmesg | head -n 10
Booting Linux on physical CPU 0
Linux version 3.4.35 (root@wang) (gcc version 4.8.3 20131202 (prerelease) (Hisilicon_v300) ) #3 Mon Aug 10 15:39:44 CST 2015
CPU: ARMv7 Processor [410fc075] revision 5 (ARMv7), cr=10c53c7d
CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
Machine: hi3516a
Memory policy: ECC disabled, Data cache writeback
On node 0 totalpages: 32768
free_area_init_node: node 0, pgdat c04c0878, node_mem_map c04e0000
  Normal zone: 256 pages used for memmap
  Normal zone: 0 pages reserved

Eu usei a mesma versão do compilador e o kernel do Linux

~ # cat /proc/cpuinfo 
Processor       : ARMv7 Processor rev 5 (v7l)
BogoMIPS        : 1196.85
Features        : swp half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt 
CPU implementer : 0x41
CPU architecture: 7
CPU variant     : 0x0
CPU part        : 0xc07
CPU revision    : 5

Hardware        : hi3516a
Revision        : 0000
Serial          : 0000000000000000

Eu tentei construir compilação cruzada para o ARM Cortex-A7 usando o kernel do linux buildroot e compilar com ele, mas sem resultado.

Obrigado antecipadamente.

    
por ArhiChief 15.11.2016 / 13:18

0 respostas