私は中国製Hi3516A SOCベースのネットワークカメラを複数台持っています。うまく動作し、VPNを使用してアクセスしたいです。tinc-vpn
Telnetを使用してカメラハウジングへのフルアクセス権を持っていたので、カメラに取り付けることにしました。
さて、buildrootを使ってクロスコンパイルツールチェーンを作成し、Tincをビルドしました。ただし、Tincはtun / tapデバイスをサポートする必要があり、カメラはデフォルトでこれらのデバイスをサポートしません。それで、私が試したdmesg
ところ、uname -a
どのカメラがLinux 3.4.35カーネルを使用しているのかがわかりました。カーネルソースをダウンロードし、TUN / TAPのサポートをロード可能なカーネルモジュールとして追加してコンパイルしました。
~$ 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
カーネルがうまくコンパイルされ、tun.koをカメラに入れました。実行後、insmod ./tun.ko
私は得た
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 '
しばらくグーグルして見つけましたこれ解決策。その後、モジュールは正常にロードされますが、/dev/net/tun
実行を読み書きしようとすると、分割エラーが原因で競合が発生し、未定義tincd
エラーで終了し始めます。
それでは、私のカメラ用のTUN / TAPドライバを構築する方法についてのアイデアはありますか?
ポリスチレン
~ # 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
同じバージョンのコンパイラと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
ARM Cortex-A7用のクロスコンパイルを構築し、それを使用してLinuxカーネルをコンパイルするためにbuildrootを試しましたが、結果はありません。
よろしくお願いします。