LINUX.ORG.RU

кросс компиляция модуля ядра под arm

 , ,


0

1

Есть nas dns 320 с ядром 2.6.31.8 Я собрал тулчейн,скачал исходники,нашел конфиг ядра (правда от 2.6.18) собрал модуль,пробую загрузить вижу фигу

sh-4.3# uname -r
2.6.31.8

sh-4.3# insmod tun.ko
insmod: error inserting 'tun.ko': -1 Unknown symbol in module
sh-4.3# file tun.ko
tun.ko: ELF 32-bit LSB relocatable, ARM, version 1 (SYSV), BuildID[sha1]=0x4ef6fb9dfd8b38a5ea4ef7c052741c6b6668d798, not stripped
sh-4.3# file /lib/modules/reg.ko
/lib/modules/reg.ko: ELF 32-bit LSB relocatable, ARM, version 1 (SYSV), BuildID[sha1]=0x419e907c60cdd12ae77f95838c6d7335389d8289, not stripped
sh-4.3#
 
reg.ko это радной модуль который прекрасно загружается,прада я не знаю, что он делает может не тот libс в тулчейне или не тот компилятор я вообще первый раз кросс компилирую по этому можно и нужно тыкать носом. вот информация чем собран libc на nas
GNU C Library stable release version 2.5, by Roland McGrath et al.
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
Compiled by GNU CC version 4.2.1.
Compiled on a Linux >>2.6.17-12-generic<< system on 2008-02-26.
Available extensions:
        crypt add-on version 2.1 by Michael Glad and others
        GNU Libidn by Simon Josefsson
        GNU libio by Per Bothner
        NIS(YP)/NIS+ NSS modules 0.19 by Thorsten Kukuk
        Native POSIX Threads Library by Ulrich Drepper et al
        Support for some architectures added on, not maintained in glibc core.
        BIND-8.2.3-T5B
Thread-local storage support included.
For bug reporting instructions, please see:
<http://www.gnu.org/software/libc/bugs.html>.
sh-4.3#
так как версии старые их нет в списках crosstool-ng и их автоматически не собрать,и я хотел прежде чем ломать мозг ручной сборкой узнать что я делаю не так.


insmod: error inserting 'tun.ko': -1 Unknown symbol in module

Покажи вывод dmesg:

# dmesg -C
# insmod tun.ko
# dmesg

jollheef ★★★★★ ()
Ответ на: комментарий от jollheef
dmesg
tun: version magic '2.6.22.18 mod_unload ARMv5 ' should be '2.6.31.8 mod_unload ARMv5 '
tun: version magic '2.6.22.18 mod_unload ARMv5 ' should be '2.6.31.8 mod_unload ARMv5 '
tun: Unknown symbol __aeabi_unwind_cpp_pr0
tun: Unknown symbol __aeabi_unwind_cpp_pr0
tun: Unknown symbol __aeabi_unwind_cpp_pr0
tun: Unknown symbol __aeabi_unwind_cpp_pr0
sh-4.3#

вопрос это вообще как так?

 modinfo tun.ko  
filename:       /home/olovo/ffp/kernel/tun.ko
alias:          char-major-10-200
license:        GPL
author:         (C) 1999-2004 Max Krasnyansky <maxk@qualcomm.com>
description:    Universal TUN/TAP device driver
depends:        
vermagic:       2.6.31.8 mod_unload ARMv5 

olovo ()
Ответ на: комментарий от olovo

Крипота какая-то. А вывод dmesg точно относится к к тому же модулю, что и modinfo? Перепроверь еще раз, потому что так просто не должно быть.

jollheef ★★★★★ ()
Ответ на: комментарий от jollheef

Нет,это один и тот же модуль,я hash смотрел полные пути писал

olovo ()
Ответ на: комментарий от olovo

Тебе прямым текстом говорят, что нужен символ: __aeabi_unwind_cpp_pr0

Насколько я понимаю, у тебя тулчейн имеет какую-то опцию, возможно связанную с C++ которая требует этот символ. stack overflow на вопросы по этому сиволу что-то отвечает.

Dark_SavanT ★★★★★ ()
Ответ на: комментарий от Dark_SavanT

stack overflow на вопросы по этому сиволу что-то отвечает.

интернет говорит о том, что либо телчейн неправильный либо хейдеры ядра не те но советов о том как сделать правильный тулчейн я хз

olovo ()
Ответ на: комментарий от olovo

можешь найти реализацию этой функции, подсунуть рядом и слинковать.

Dark_SavanT ★★★★★ ()
Ответ на: комментарий от Dark_SavanT

Осторожно мат,много мата

После почти дня возни с переборками тулчейна и сборкой старого glibc(это ё***** пи**** то компилятор не тот то хейдеры ядра 2.6.32.2 то патч на automake cкрипты нужны. то моя душа нужна ) пересобрал модуль,собрал без заглушки хрен,написал заглушку скомплил хрен потом уже читаю про эту функцию,это и есть заглушка значит она не важна проверяем

sh-4.3# objdump  -x /ffp/tun/tun-2.6.ko|grep cpp_pr0
00000000         *UND*  00000000 __aeabi_unwind_cpp_pr0
00000000 R_ARM_NONE        __aeabi_unwind_cpp_pr0
00000000 R_ARM_NONE        __aeabi_unwind_cpp_pr0
sh-4.3# objdump  -x /lib/modules/reg.ko|grep cpp_pr0
sh-4.3#
из ядра я все экспорты убрал,но этот символ всё ровно компилирует вот вопрос откуда он делает экспорт и еще есть ощущение,что конфиг ядра лежащий на ftp сервере d-link не правильный

olovo ()
Ответ на: комментарий от olovo

Это не ядерная штука, а именно тулчейновая. Эта функция - часть ABI для размотки C++ exceptions, и несмотря на то что плюсового кода у тебя нет, её всё равно вставляют. По-идее оно должно подставляться компилятором и ты это видеть не должен, но видимо что-то идёт не так.

Покажи как ты модуль собираешь, флаги, cflags, makefile и т.п.

Dark_SavanT ★★★★★ ()
Ответ на: комментарий от Dark_SavanT

слушай,я отключил в конифиги вот это и о чудо модуль загрузился,но не тестировался. надо собрать tinc а для него нужна свежая версия openssl, а это значит пересобирать openssh wget и т.п вообщем классический dependency hell

olovo ()
Ответ на: комментарий от olovo

Собственно это оно и есть.

А насчёт dephell - у тебя нет чего-то типа buildroot илиему подобных, где можно целиком rootfs собрать?

Dark_SavanT ★★★★★ ()
Ответ на: комментарий от Dark_SavanT
sh-4.3# /ffp/bld/sbin/tincd 
sh: /ffp/bld/sbin/tincd: No such file or directory
sh-4.3# file /ffp/bld/sbin/tincd 
/ffp/bld/sbin/tincd: ELF 32-bit LSB shared object, ARM, version 1 (SYSV), dynamically linked (uses shared libs), not stripped

не много не понял юмора

olovo ()
Ответ на: комментарий от Dark_SavanT

итак новости с полей мне удалось запустить tinc поднять сессию между 3мя нодами (2 vps+1 dlink) между vps пакеты ходят,а вот с dlink получается тыква... при получения пакета на dlink в логах tinc


Can't write to Linux tun/tap device (tun mode) /dev/net/tun: Resource temporarily unavailable

при этом в dmesg


tun: Universal TUN/TAP device driver, 1.6
tun: (C) 1999-2004 Max Krasnyansky <maxk@qualcomm.com>
nfs: Disabled Privacy Extensions
nfs: Disabled Privacy Extensions
nfs: Disabled Privacy Extensions
nfs: Disabled Privacy Extensions
nfs: Disabled Privacy Extensions
nfs-имя tun

nfs       Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
          inet addr:10.2.1.111  P-t-P:10.2.1.111  Mask:255.255.255.0
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:500
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

sh-4.3#

 cat /ffp/etc/tinc/nfs/tinc.conf
AddressFamily = ipv4
Broadcast = no
DeviceType=tun
Subnet=10.2.1.111/32
ConnectTo=spb_serv
Name=fss

конфиг рабочий.

гугление ничего путного не принесло.

olovo ()
Ответ на: комментарий от olovo
lsmod
Module                  Size  Used by
tun                    13484  6
ipip                    9116  0
xfrm6_mode_tunnel       2200  0
xfrm6_mode_transport     1724  0
xfrm6_mode_beet         2332  0
ip6_tunnel             14072  0
tunnel6                 2984  1 ip6_tunnel
sit                    11456  0
tunnel4                 3144  2 ipip,sit
ipv6                  244956  28 xfrm6_mode_tunnel,xfrm6_mode_beet,ip6_tunnel,tunnel6,sit
usblp                  12412  0
reg                     1844  0
olovo ()
Ответ на: комментарий от olovo

Возможно в ядре требуемое шифрование выключено. Посмотри конфиг ядра openwrt

Dark_SavanT ★★★★★ ()
Ответ на: комментарий от Dark_SavanT

Возможно в ядре требуемое шифрование выключено.

Я думал,что расшифровка происходит в tinc а в tun уже идёт расшифрованный пакет.

Посмотри конфиг ядра openwrt

я не знаю что смотреть я не могу залить новое ядро

olovo ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.