hostap daemon keresztfordítása

Fórumok

Sziasztok!

ismét a segítségeteket kérném, most a következő témával akadtam el: a "Latest stable release: hostapd-1.0.tar.gz" -t szeretném újrafordítani, mert ami kész package-et találtam arm-ra, azokban a CONFIG_DRIVER_NL80211=n, így ezt a hibát dobálják:

Line 2: invalid/unknown driver 'nl80211'
1 errors found in configuration file 'minimal.conf'

első nekifutásra x86-ra fordítottam:

arm@ubuntu:~/hostapd-1.0/hostapd$ make
... ... ...
CC ../src/drivers/driver_hostap.c
../src/drivers/driver_nl80211.c:25:31: fatal error: netlink/genl/genl.h: No such file or directory
compilation terminated.
make: *** [../src/drivers/driver_nl80211.o] Error 1

ugyan libnl-már nem létezik ahogy ez az oldal írja
http://linuxwireless.org/en/users/Documentation/hostapd
csak libnl1,2,3, illetve libnl-dev - ez az utóbbi kell neki, ha ez fent van, akkor el is készül a futtatható fájl:

arm@ubuntu:~/hostapd-1.0/hostapd$ ./hostapd -v
hostapd v1.0
User space daemon for IEEE 802.11 AP management,
IEEE 802.1X/WPA/WPA2/EAP/RADIUS Authenticator
Copyright (c) 2002-2012, Jouni Malinen j*w1.fi and contributors

nézelődtem a Makefile-ban, és ott nincsen se ARCH, se CROSS_COMPILE amit a legtöbb keresztfordítás témás leírás emleget, viszont így kezdődik:

ifndef CC
CC=gcc
endif

ha jól értem, akkor ha simán make-elem akkor x86-ra fordítja a gcc-vel, viszont ha make CC=arm-linux-gnueabi-gcc -vel, akkor arm-ra kellene fordítania... de akkor ugyanabba a hibába fut, mintha nem lenne fent a libnl-dev:

arm@ubuntu:~/hostapd-1.0/hostapd$ make CC=arm-linux-gnueabi-gcc
... ... ...
CC ../src/drivers/driver_hostap.c
../src/drivers/driver_nl80211.c:25:31: fatal error: netlink/genl/genl.h: No such file or directory
compilation terminated.
make: *** [../src/drivers/driver_nl80211.o] Error 1

én értek valamit félre, vagy hiányzik még valami?

Hozzászólások

de akkor ugyanabba a hibába fut, mintha nem lenne fent a libnl-dev

Mivel az arm verzio valoszinuleg nincs is fent :-)

Az arm-linux-gnueabi-gcc valoszinuleg az /usr/arm-linux-gnueabi/include konyvtarban keresi az include fileokat.

Szia,

Libnl-t cross-compiláld armra:

cd ~/src/libnl-1.1
./configure -host=arm-linux-gnueabi-gcc
make

Ha szükséges:

./configure -host=arm-linux-gnueabi-gcc CPPFLAGS=-I<incdir> LDFLAGS=-L<libdir>

Hostapd-0.7.3-at (előző stabil verzió) így fordítottam:

cd ~/src/hostapd-0.7.3/hostapd
cp defconfig .config

.config-ban
- ha nem lenne, akkor unkomment CONFIG_DRIVER_NL80211=y
- LIBNL = ~/src/libnl-1.1
- CFLAGS += -I$(LIBNL)/include
- LIBS += -L$(LIBNL)/lib

Makefile-ban
- CFLAGS += -DUSE_KERNEL_HEADERS -I<kernel_source>/include
- CFLAGS += -I<openssl_source>/include
- LIBS = -L<openssl_source>
majd make

szia!

ezt dobja rá:

arm@ubuntu:~/src/libnl-1.1$ ./configure -host=arm-linux-gnueabi-gcc
configure: WARNING: If you wanted to set the --build type, don't use --host.
If a cross compiler is detected then cross compile mode will be used.
checking for arm-linux-gnueabi-gcc-gcc... no
checking for gcc... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking for a BSD-compatible install... /usr/bin/install -c
checking for an ANSI C-conforming const... yes
checking for inline... inline
checking for pow in -lm... yes
configure: creating ./config.status
config.status: creating Makefile.opts
config.status: WARNING: Makefile.opts.in seems to ignore the --datarootdir setting
config.status: creating libnl-1.pc
config.status: creating doc/Doxyfile
config.status: creating lib/defs.h
config.status: lib/defs.h is unchanged

----------------------------------------------------------------------
SUMMARY:

Included in Compilation:
libnl: Yes -lm

Dependencies:
libm Yes (required)

arm@ubuntu:~/src/libnl-1.1$ make
Entering lib
DEP netfilter/nfnl.c
DEP netfilter/log_obj.c
DEP netfilter/log.c
DEP netfilter/ct_obj.c
DEP netfilter/ct.c
DEP fib_lookup/request.c
DEP fib_lookup/lookup.c
DEP genl/mngt.c
DEP genl/genl.c
DEP genl/family.c
DEP genl/ctrl.c
DEP route/link/vlan.c
DEP route/link/api.c
DEP route/cls/u32.c
DEP route/cls/police.c
DEP route/cls/fw.c
DEP route/sch/tbf.c
DEP route/sch/sfq.c
DEP route/sch/red.c
DEP route/sch/prio.c
DEP route/sch/netem.c
DEP route/sch/htb.c
DEP route/sch/fifo.c
DEP route/sch/dsmark.c
DEP route/sch/cbq.c
DEP route/sch/blackhole.c
DEP route/tc.c
DEP route/rule.c
DEP route/rtnl.c
DEP route/route_utils.c
DEP route/route_obj.c
DEP route/route.c
DEP route/qdisc_obj.c
DEP route/qdisc.c
DEP route/qdisc_api.c
DEP route/nexthop.c
DEP route/neightbl.c
DEP route/neigh.c
DEP route/link.c
DEP route/cls_obj.c
DEP route/cls_api.c
DEP route/class_obj.c
DEP route/classifier.c
DEP route/class.c
DEP route/class_api.c
DEP route/addr.c
DEP utils.c
DEP socket.c
DEP object.c
DEP nl.c
DEP msg.c
DEP handlers.c
DEP family.c
DEP doc.c
DEP data.c
DEP cache_mngt.c
DEP cache_mngr.c
DEP cache.c
DEP attr.c
DEP addr.c
MAKE libnl.so.1.1
CC addr.c
In file included from addr.c:28:0:
../include/netlink-local.h: In function â__str2typeâ:
../include/netlink-local.h:218:11: error: âULONG_MAXâ undeclared (first use in this function)
../include/netlink-local.h:218:11: note: each undeclared identifier is reported only once for each function it appears in
../include/netlink-local.h: In function â__list_str2typeâ:
../include/netlink-local.h:239:11: error: âULONG_MAXâ undeclared (first use in this function)
make[2]: *** [addr.o] Error 1
make[1]: *** [all] Error 2
make: *** [all] Error 2

pillanatnyilag a libnl1 és a libnl-dev van fent az ubuntu-n, lehet valamit még hiányol ?

Szerintem nem arm-ra forditasz:

arm@ubuntu:~/src/libnl-1.1$ ./configure -host=arm-linux-gnueabi-gcc
configure: WARNING: If you wanted to set the --build type, don't use --host.
If a cross compiler is detected then cross compile mode will be used.
checking for arm-linux-gnueabi-gcc-gcc... no
checking for gcc... gcc

azthiszem igazad van és így lenne helyes:

arm@ubuntu:~/src/libnl-1.1$ ./configure -host=arm-linux-gnueabi
configure: WARNING: If you wanted to set the --build type, don't use --host.
If a cross compiler is detected then cross compile mode will be used.
checking for arm-linux-gnueabi-gcc... arm-linux-gnueabi-gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... yes
checking for suffix of executables...
...

viszont így is ugyanazt a hibát dobja, mint fent...

../include/netlink-local.h:218:11: error: âULONG_MAXâ undeclared (first use in this function)

Ha az

ULONG_MAX

koruli furcsa betuk csak a bemasolaskor kerultek oda, akkor az

ULONG_MAX

-ot hianyolja, amit a

limits.h

-ban talalsz meg. Nezd meg az

../include/netlink-local.h

-t, illetve a

limits.h

-t, hogy mi van benne.

sajnos továbbra sem sikerült lefordítanom se a 0.7.3, se az 1.0 hostapd -t, viszont feltűnt a buildroot menüjében, hogy ott van a 0.7.3 -as... belerakattam a rootfs-be, és indult pöccre ahogy kell neki a szűz tiszta rendszeren! DE... ahogy felrakom a libc6 -ot (ami pl a dhcp-server -nek is kell), azonnal segmentation fault üzeneteket kezd dobálni:

# strace hostapd /usr/sbin/hostapd.conf
execve("/usr/sbin/hostapd", ["hostapd", "/usr/sbin/hostapd.conf"], [/* 16 vars */]) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|0x4000000, -1, 0) = 0x4001c000
open("/lib/libnl-3.so.200", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/lib/libnl-3.so.200", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/lib/libnl-3.so.200", O_RDONLY) = 3
fstat(3, {st_mode=S_IFREG|0755, st_size=73996, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|0x4000000, -1, 0) = 0x4010f000
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0004O\0\0004\0\0\0"..., 4096) = 4096
mmap2(NULL, 106496, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x4014c000
mmap2(0x4014c000, 69420, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = 0x4014c000
mmap2(0x40165000, 3112, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x11) = 0x40165000
close(3) = 0
munmap(0x4010f000, 4096) = 0
open("/lib/libnl-genl-3.so.200", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/lib/libnl-genl-3.so.200", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/lib/libnl-genl-3.so.200", O_RDONLY) = 3
fstat(3, {st_mode=S_IFREG|0755, st_size=12072, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|0x4000000, -1, 0) = 0x400ce000
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0H\23\0\0004\0\0\0"..., 4096) = 4096
mmap2(NULL, 45056, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x400d4000
mmap2(0x400d4000, 10072, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = 0x400d4000
mmap2(0x400de000, 2788, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x2) = 0x400de000
close(3) = 0
munmap(0x400ce000, 4096) = 0
open("/lib/libgcc_s.so.1", O_RDONLY) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=41396, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|0x4000000, -1, 0) = 0x40099000
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\260'\0\0004\0\0\0"..., 4096) = 4096
mmap2(NULL, 73728, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x400c0000
mmap2(0x400c0000, 39612, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = 0x400c0000
mmap2(0x400d1000, 3284, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x9) = 0x400d1000
close(3) = 0
munmap(0x40099000, 4096) = 0
open("/lib/libc.so.0", O_RDONLY) = 3
fstat(3, {st_mode=S_IFREG|0755, st_size=269436, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|0x4000000, -1, 0) = 0x4000b000
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\360\217\0\0004\0\0\0"..., 4096) = 4096
mmap2(NULL, 319488, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x400df000
mmap2(0x400df000, 264376, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = 0x400df000
mmap2(0x40127000, 4784, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x40) = 0x40127000
mmap2(0x40129000, 14096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x40129000
close(3) = 0
munmap(0x4000b000, 4096) = 0
open("/lib/libpthread.so.0", O_RDONLY) = 3
fstat(3, {st_mode=S_IFREG|0755, st_size=88460, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|0x4000000, -1, 0) = 0x40073000
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0@F\0\0004\0\0\0"..., 4096) = 4096
mmap2(NULL, 131072, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40085000
mmap2(0x40085000, 83512, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = 0x40085000
mmap2(0x400a1000, 4496, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x14) = 0x400a1000
mmap2(0x400a3000, 4648, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x400a3000
close(3) = 0
munmap(0x40073000, 4096) = 0
open("/lib/libm.so.0", O_RDONLY) = 3
fstat(3, {st_mode=S_IFREG|0755, st_size=62244, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|0x4000000, -1, 0) = 0x40075000
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\250\23\0\0004\0\0\0"..., 4096) = 4096
mmap2(NULL, 98304, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x4012d000
mmap2(0x4012d000, 57956, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = 0x4012d000
mmap2(0x40143000, 4100, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0xe) = 0x40143000
close(3) = 0
munmap(0x40075000, 4096) = 0
open("/lib/libgcc_s.so.1", O_RDONLY) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=41396, ...}) = 0
close(3) = 0
open("/lib/libc.so.0", O_RDONLY) = 3
fstat(3, {st_mode=S_IFREG|0755, st_size=269436, ...}) = 0
close(3) = 0
open("/home/arm/buildroot-snap-0522/output/build/libnl-3.2.8/lib/.libs/libnl-3.so.200", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/lib/libnl-3.so.200", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/lib/libnl-3.so.200", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/lib/libnl-3.so.200", O_RDONLY) = 3
fstat(3, {st_mode=S_IFREG|0755, st_size=73996, ...}) = 0
close(3) = 0
open("/home/arm/buildroot-snap-0522/output/build/libnl-3.2.8/lib/.libs/libpthread.so.0", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/lib/libpthread.so.0", O_RDONLY) = 3
fstat(3, {st_mode=S_IFREG|0755, st_size=88460, ...}) = 0
close(3) = 0
open("/home/arm/buildroot-snap-0522/output/build/libnl-3.2.8/lib/.libs/libm.so.0", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/lib/libm.so.0", O_RDONLY) = 3
fstat(3, {st_mode=S_IFREG|0755, st_size=62244, ...}) = 0
close(3) = 0
open("/home/arm/buildroot-snap-0522/output/build/libnl-3.2.8/lib/.libs/libc.so.0", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/lib/libc.so.0", O_RDONLY) = 3
fstat(3, {st_mode=S_IFREG|0755, st_size=269436, ...}) = 0
close(3) = 0
open("/lib/libc.so.0", O_RDONLY) = 3
fstat(3, {st_mode=S_IFREG|0755, st_size=269436, ...}) = 0
close(3) = 0
stat("/lib/ld-uClibc.so.0", {st_mode=S_IFREG|0755, st_size=25296, ...}) = 0
open("/lib/libc.so.6", O_RDONLY) = 3
fstat(3, {st_mode=S_IFREG|0755, st_size=1205444, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|0x4000000, -1, 0) = 0x400ac000
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0hW\1\0004\0\0\0"..., 4096) = 4096
mmap2(NULL, 1245184, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40166000
mmap2(0x40166000, 1187896, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = 0x40166000
mmap2(0x40290000, 10588, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x122) = 0x40290000
mmap2(0x40293000, 9468, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x40293000
close(3) = 0
munmap(0x400ac000, 4096) = 0
open("/lib/ld-linux.so.3", O_RDONLY) = 3
fstat(3, {st_mode=S_IFREG|0755, st_size=122204, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|0x4000000, -1, 0) = 0x400b7000
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\220\7\0\0004\0\0\0"..., 4096) = 4096
mmap2(NULL, 155648, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40296000
mmap2(0x40296000, 114904, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = 0x40296000
mmap2(0x402ba000, 6268, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x1c) = 0x402ba000
close(3) = 0
munmap(0x400b7000, 4096) = 0
open("/lib/libc.so.0", O_RDONLY) = 3
fstat(3, {st_mode=S_IFREG|0755, st_size=269436, ...}) = 0
close(3) = 0
open("/lib/ld-linux.so.3", O_RDONLY) = 3
fstat(3, {st_mode=S_IFREG|0755, st_size=122204, ...}) = 0
close(3) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|0x4000000, -1, 0) = 0x40062000
set_tls(0x400627a0, 0x40062e88, 0x4003b090, 0x400627a0, 0x4003af74) = 0
mprotect(0x40127000, 4096, PROT_READ) = 0
mprotect(0x400a1000, 4096, PROT_READ) = 0
mprotect(0x40143000, 4096, PROT_READ) = 0
mprotect(0x4003a000, 4096, PROT_READ) = 0
mprotect(0x40290000, 8192, PROT_READ) = 0
mprotect(0x402ba000, 4096, PROT_READ) = 0
set_tid_address(0x40062348) = 1171
set_robust_list(0x40062350, 0xc) = 0
futex(0xbec268f4, FUTEX_WAKE_PRIVATE, 1) = 0
futex(0xbec268f4, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, NULL, 400a2000) = -1 EAGAIN (Resource temporarily unavailable)
rt_sigaction(SIGRTMIN, {0x40089138, [], SA_SIGINFO|0x4000000}, NULL, 8) = 0
rt_sigaction(SIGRT_1, {0x40088fcc, [], SA_RESTART|SA_SIGINFO|0x4000000}, NULL, 8) = 0
rt_sigprocmask(SIG_UNBLOCK, [RTMIN RT_1], NULL, 8) = 0
getrlimit(RLIMIT_STACK, {rlim_cur=8192*1024, rlim_max=RLIM_INFINITY}) = 0
--- SIGSEGV (Segmentation fault) @ 0 (0) ---
+++ killed by SIGSEGV +++
Segmentation fault

amíg nem teszem fel a libc6 -ot, addig nincs is a vason sehol a végén emlegetett /lib/ld-linux.so.3 (ami egyébként a ld-2.12.2.so -re mutató link)... esetleg erre valami tipp? több libc6 ipk package verzióval is próbálkoztam már (2.6, 2.9, 2.12), de mind ezt okozza...

vagy küzdjek tovább az 1.0 fordításával, hátha az majd nem dobja ezt a hibát? :)

sikerült életet lehelnem bele: egyrészt kicseréltem a buildroot/package-ben a hostapd-t 0.7.3-ról 1.0-ra, másrészt a libnl 3.2.8-at az 1.1-re, továbbá a hostapd-ban is átírtam a libnl-3 hivatkozásokat libnl-re. leforgatta a buildroot, és így most működik egymás mellett a hostapd és a dhcpd. kap is IP címet a kliens, de netet még nem - gondolom ezzel is még el fogok szenvedni egy darabig, de már látszik az alagút végén a fény :)

mit vesztek ezzel, hogy 3.2.8 helyett 1.1-es a libnl ?

(a buildroot által felrakott wpa_supplicant 0.7.3 is a libnl-3 -at használná, és szintén elhal segmentation fault-al, ha felkerül a libc6)

egyelőre az alap keresztfordítás se akar összejönni

Pedig az lenne az alap... ;-)

Hogy ne legyenek libc kavarodasi problemaid, probald meg ugy, hogy csak egy toolchain-t es egy uclibc-t forditasz magadnak a buildroot-tal, minden egyebet te magad (kereszt)forditasz forrasbol. Igy egyreszt nagyobb az eselye, hogy minden mukodni fog (mert olyan verzioju lib lesz fent, mint amihez forditottad a programot), masreszt tudni fogod, hogy mi miert mukodik :-) i386-ra es mips-re forditottam igy uClibc-s rendszert, nekem bevalt.

Ha nem ragaszkodsz az uClibc-hez (es van eleg flash a rendszeredben), akkor megnezhetned az Emdebian-t, ott van keszen keresztfordito is, meg keszen leforditott .deb csomag mindenfele architekturara. Lehet, hogy meguszod egy

debootstrap

-pel, meg nemi konfiguralgatassal. Ha nem, akkor meg mindig osszerakhatod kezzel a rootfs-t, kezzel kimasolgatva a szukseges binarisokat a .deb csomagokbol (ezt a megoldast is alkalmaztam mar, nagyon hatekony tud lenni).

az a bajom hogy már így is messze több időmet vitte el mint szerettem volna, és most hogy látom az alagút végén a fényt - még ha dudál is :) - örülök hogy legalább eddig eljutottam...

viszont netem még mindig nincsen a wifin... ehhez kell valami külön program még? vagy a hostapd konfigurálásán múlik? pillanatnyilag az eth0 vezetékes adapterével csatlakozik egy routerre udhcpc-vel és maga a linux hozzá is fér a nethez, de az AP-re csatlakozó kliens hiába kap IP-t a dhcp szervertől, a nethez akkor sem fér hozzá

viszont netem még mindig nincsen a wifin...

Engedelyezni kell az ip forwarding-ot, a helyi halozat(ok)at NAT-olni kell (tuzfalszabaly), es ha esetleg van helyi drotos interfeszed is, akkor erdemes lehet egy halozatkent kezelni a wifi-vel (bridge interfeszt letrehozni beloluk brctl-lel).

próbálom ez alapján a rövid leírás alapján éleszteni a nat-ot:
http://www.revsys.com/writings/quicktips/nat.html

az iptables működik, de üres:

# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination

Chain FORWARD (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination

amikor megpróbálok hozzáadni egy új sort, akkor ez a baja:

# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables v1.4.13: can't initialize iptables table `nat': Table does not exist (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.

ha jól értem akkor az iptable_nat modul hiányzik alóla, ami viszont szintén nem hajlandó betöltődni:

# modprobe iptable_nat
modprobe: can't load module x_tables (x_tables.ko): No such file or directory

mi a fene ez az x_tables.ko ? ilyet nem generál a kernel fordítás - make clean után se, pedig próbáltam úgy is hogy minden létező elemet kiválasztok a core és IP netfilter-nél. a modinfo szerint nincsen a dependency listáján egyik modulnak sem, a modprobe mégis kidobja hogy hiányzik neki...

az angstrom-distribution.org/repo -ban találtam egyedül ilyen modulokat, de ott 2.6.39-hez csak egy ARMv7-es van, nekem pedig ARMv4 kellene, így ki is köpi a modprobe...

Valami nem jo a kerneleddel, a

nat

tablahoz nem kell semmifele addon, azt a kernel(ben levo netfilter) adja.

Megneztem a 2.6.32 Kconfig-jait es Makefile-jait, az

x_tables.ko

-t akkor forditja, ha van

CONFIG_NETFILTER_XTABLES

, amit

"Netfilter Xtables support (required for ip_tables)"

neven talalsz a menuben.

mi a fene ez az x_tables.ko?

MODULE_DESCRIPTION("{ip,ip6,arp,eb}_tables backend module");