Добрый день. Имею железяку huawei 4G роутер (портативный) и желание поднять OPENVPN на ней.
Сам OPENVPN скомпилирован и работает - проблем нет. С Tun.ko возникли проблемы. В ядре его (как обычно) нет. Пришлось компилировать. Железяка
/system/bin/busybox uname -a
Linux localhost 3.4.5 armv7l #1 PREEMPT Tue Apr 10 14:53:30 CST 2018 armv7l GNU/Linux
echo `uname -m` `cat /proc/version`
Linux version 3.4.5 (wangxu@SIA1000027021) (gcc version 4.6.x-google 20120106 (prerelease) (GCC) ) #1 PREEMPT Tue Jun 21 18:53:30 CST 2016
Исходников ядра конечно же нет. Были взяты Kernel linux-3.4.5 и 4.6.x-google_prerelease_toolchain (arm-linux-androideabi-4.6)
Компилировал ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- O=build KERNELRELEASE=3.4.5 На выходе получил Tun.ko, залил на железо.
#insmod /online/tun.ko
#lsmod | grep tun
tun 13831 0 - Live 0xbf044000
#dmesg
....
<6>[000447604ms] tun: Universal TUN/TAP device driver, 1.6
<6>[000447604ms] tun: (C) 1999-2004 Max Krasnyansky <maxk@qualcomm.com>
Добавил
#mkdir -p /dev/net
#/system/bin/busybox mknod /dev/net/tun c 10 200
#chmod 600 /dev/net/tun
Итог
#ls /dev | grep tun
tun
#ls /dev/net | grep tun
tun
#openvpn --mktun --dev tap0
#cat /dev/net/tun
#openvpn --verb 8 --config /online/vps_client.ovpn
<6>[000447604ms] tun: Universal TUN/TAP device driver, 1.6
<6>[000447604ms] tun: (C) 1999-2004 Max Krasnyansky <maxk@qualcomm.com>
----Тут любое касание tun----
<1>[000450546ms] Unable to handle kernel NULL pointer dereference at virtual address 00000010
<1>[000450554ms] pgd = c127c000
<1>[000450558ms] [00000010] *pgd=00000000
<0>[000450561ms] Internal error: Oops: 805 [#1] PREEMPT ARM
<4>[000450566ms] Modules linked in: tun dhd(O) ctf(PO)
<4>[000450570ms] CPU: 0 Tainted: P O (3.4.5 #1)
<4>[000450576ms] PC is at tun_chr_open+0x34/0x88 [tun]
<4>[000450580ms] LR is at misc_open+0xac/0x1b0
<4>[000450584ms] pc : [<bf044564>] lr : [<c01cc0cc>] psr: 60000013
<4>[000450584ms] sp : c103be08 ip : 00000000 fp : b6f4dded
<4>[000450595ms] r10: 00000000 r9 : 00000000 r8 : bf046b08
<4>[000450601ms] r7 : c07f0ce0 r6 : c218aae0 r5 : c185c900 r4 : c185c900
<4>[000450607ms] r3 : 00000010 r2 : c103a008 r1 : c103be08 r0 : 00000000
<4>[000450613ms] Flags: nZCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment user
<4>[000450620ms] Control: 18c53c7d Table: 55d7c059 DAC: 00000015
<4>[000450626ms]
...................
<4>[000451313ms] [<bf044564>] (tun_chr_open+0x34/0x88 [tun]) from [<c01cc0cc>] (misc_open+0xac/0x1b0)
<4>[000451322ms] [<c01cc0cc>] (misc_open+0xac/0x1b0) from [<c00b9708>] (chrdev_open+0xb8/0x19c)
<4>[000451330ms] [<c00b9708>] (chrdev_open+0xb8/0x19c) from [<c00b3f84>] (__dentry_open.isra.14+0x1b8/0x2a0)
<4>[000451339ms] [<c00b3f84>] (__dentry_open.isra.14+0x1b8/0x2a0) from [<c00c2f8c>] (do_last.isra.34+0x31c/0x6d0)
<4>[000451349ms] [<c00c2f8c>] (do_last.isra.34+0x31c/0x6d0) from [<c00c351c>] (path_openat+0xb8/0x390)
<4>[000451358ms] [<c00c351c>] (path_openat+0xb8/0x390) from [<c00c38e0>] (do_filp_open+0x2c/0x80)
<4>[000451366ms] [<c00c38e0>] (do_filp_open+0x2c/0x80) from [<c00b4d6c>] (do_sys_open+0xe4/0x180)
<4>[000451374ms] [<c00b4d6c>] (do_sys_open+0xe4/0x180) from [<c0011040>] (ret_fast_syscall+0x0/0x30)
<0>[000451383ms] Code: 0a000014 e1a0100d e3a00000 e3c12d7f (e5830000)
<4>[000451392ms] ---[ end trace 610457ad83bc2421 ]---
<4>[000451397ms] [dump]: <system_error> [0xe1b2d3]
Буду признателен за любой пинок (кроме мата и оскорблений) в сторону места, где зарыта собака. PS С линкусом работал крайне мало, с компиляцией ядра практически не работал. Так что прошу сильно не бить ногами по почкам, печени и другим жизненно важным внутренним органам. Спасибо.