« エントリーの見栄え? | メイン | iwconfigのWarning! »

madwifiのコンパイル!

組込み機器のターゲットで、無線が使いたいのでターゲット上でMADWIFIをコンパイルしてみました。

まずは、ターゲットで使用しているカーネルソースを"/usr/src/"に展開し、"/usr/src/linux"にリンクします。

現在、ターゲット上にはRootNFSを使用してDebianが動いています。
なので、"過去ログ"で書いたとおりに実行!

Checking requirements... ok. Checking kernel configuration... ok. make -C /lib/modules/2.6.21.1/build SUBDIRS=/usr/src/modules/madwifi modules make[1]: Entering directory `/usr/src/linux-2.6.21.1' CC [M] /usr/src/modules/madwifi/ath/if_ath.o In file included from :1: /usr/src/modules/madwifi/ath/../include/compat.h:60:1: error: "__packed" redefid In file included from include/linux/compiler-gcc4.h:4, from include/linux/compiler.h:42, from include/linux/stddef.h:4, from include/linux/kernel.h:12, from /usr/src/modules/madwifi/ath/../include/compat.h:47, from :1: include/linux/compiler-gcc.h:30:1: error: this is the location of the previous n In file included from include/asm/dma-mapping.h:14, from include/linux/dma-mapping.h:34, from include/asm/pci.h:15, from include/linux/pci.h:744, from /usr/src/modules/madwifi/ath/if_ath_pci.h:43, from /usr/src/modules/madwifi/ath/if_ath.c:86: include/linux/mm.h:658:1: error: "offset_in_page" redefined In file included from /usr/src/modules/madwifi/ath/../net80211/if_media.h:44, from /usr/src/modules/madwifi/ath/if_ath.c:66: /usr/src/modules/madwifi/ath/../net80211/ieee80211_linux.h:431:1: error: this in /usr/src/modules/madwifi/ath/if_ath.c:417:60: error: macro "INIT_WORK" passed 32 /usr/src/modules/madwifi/ath/if_ath.c: In function 'ath_attach': /usr/src/modules/madwifi/ath/if_ath.c:417: error: 'INIT_WORK' undeclared (first) /usr/src/modules/madwifi/ath/if_ath.c:417: error: (Each undeclared identifier ie /usr/src/modules/madwifi/ath/if_ath.c:417: error: for each function it appears ) /usr/src/modules/madwifi/ath/if_ath.c: In function 'ath_vap_create': /usr/src/modules/madwifi/ath/if_ath.c:1149: error: 'struct net_device' has no m' /usr/src/modules/madwifi/ath/if_ath.c: In function 'ath_dynamic_sysctl_register: /usr/src/modules/madwifi/ath/if_ath.c:9573: error: too many arguments to functi' /usr/src/modules/madwifi/ath/if_ath.c: In function 'ath_sysctl_register': /usr/src/modules/madwifi/ath/if_ath.c:9727: error: too many arguments to functi' make[3]: *** [/usr/src/modules/madwifi/ath/if_ath.o] Error 1 make[2]: *** [/usr/src/modules/madwifi/ath] Error 2 make[1]: *** [_module_/usr/src/modules/madwifi] Error 2 make[1]: Leaving directory `/usr/src/linux-2.6.21.1' make: *** [modules] Error 2

コンパイルエラー!!(?_?)

内容を見ると、ヘッダファイルがどうのこうのと書かれていて、面倒だからmadwifi本家からソースを持ってきました。

で、MADWIFIをコンパイルしてみると、下記のエラーが……(?_?)

madwifi-0.9.3.1# make /bin/sh: line 0: cd: /lib/modules/2.6.21.1/build: No such file or directory Makefile.inc:66: *** /lib/modules/2.6.21.1/build is missing, please set KERNELPATH. Stop.

中を見てみると、"build"と"source"はカーネルをコンパイルしたPATHを指しています。
(クロスコンパイラで、作ったやつだから……仕方がないね~)

2.6.21.1# ls -la total 128 drwxr-xr-x 3 root root 4096 Jun 29 06:45 . drwxr-xr-x 3 root root 4096 Jun 29 04:55 .. lrwxrwxrwx 1 root root 70 Jun 29 06:45 build -> /home/…/linux-2.6.21.1 省略 lrwxrwxrwx 1 root root 70 Jun 29 06:45 source -> /home/…/linux-2.6.21.1

リンクを"/usr/src/linux"に張りなおし、再度コンパイル!

madwifi-0.9.3.1# make Checking requirements... ok. Checking kernel configuration... ok. make -C /lib/modules/2.6.21.1/build SUBDIRS=/root/madwifi/madwifi-0.9.3.1 moduls make[1]: Entering directory `/usr/src/linux-2.6.21.1' CC [M] /root/madwifi/madwifi-0.9.3.1/ath/if_ath.o /bin/sh: scripts/basic/fixdep: cannot execute binary file make[3]: *** [/root/madwifi/madwifi-0.9.3.1/ath/if_ath.o] Error 126 make[2]: *** [/root/madwifi/madwifi-0.9.3.1/ath] Error 2 make[1]: *** [_module_/root/madwifi/madwifi-0.9.3.1] Error 2 make[1]: Leaving directory `/usr/src/linux-2.6.21.1' make: *** [modules] Error 2

何だ!!(?_?)

ファイルが実行できない?

ふ~ん……

madwifiのディレクトリには、"fixdep"なんてファイルはないから、"/usr/src/linux"の方かな~

!!ビンゴ!!

linux# find . -name fixdep ./scripts/basic/fixdep

で、実行してみたら確かに動かない。

linux# ./scripts/basic/fixdep -bash: ./scripts/basic/fixdep: cannot execute binary file

まぁ、このソースはクロスコンパイラでターゲット用にコンパイルしたソースをそのまま持ってきてるかなな~っと言う事で、ターゲット上で

linux# make oldconfig HOSTCC scripts/basic/fixdep HOSTCC scripts/basic/docproc HOSTCC scripts/kconfig/conf.o HOSTCC scripts/kconfig/kxgettext.o HOSTCC scripts/kconfig/zconf.tab.o HOSTLD scripts/kconfig/conf scripts/kconfig/conf -o arch/powerpc/Kconfig * * Linux Kernel Configuration * 省略

やっぱり、(-_-;)
ここで、作ってんのかよ……

さぁ、これでどうだ!!

madwifi-0.9.3.1# make Checking requirements... ok. Checking kernel configuration... ok. make -C /lib/modules/2.6.21.1/build SUBDIRS=/root/madwifi/madwifi-0.9.3.1 moduls make[1]: Entering directory `/usr/src/linux-2.6.21.1' CC [M] /root/madwifi/madwifi-0.9.3.1/ath/if_ath.o 省略 LD [M] /root/madwifi/madwifi-0.9.3.1/net80211/wlan_scan_ap.o Building modules, stage 2. MODPOST 13 modules /bin/sh: scripts/mod/modpost: cannot execute binary file make[2]: *** [__modpost] Error 126 make[1]: *** [modules] Error 2 make[1]: Leaving directory `/usr/src/linux-2.6.21.1' make: *** [modules] Error 2

ぎゃふん!!(>_<)
カーネルをコンパイルしないといけないとですか!!

そんな時間はもったいないので、コンパイルを実行して途中で止めました!(^^ゞ

linux# make scripts/kconfig/conf -s arch/powerpc/Kconfig CHK include/linux/version.h CHK include/linux/utsrelease.h CC arch/powerpc/kernel/asm-offsets.s GEN include/asm-powerpc/asm-offsets.h CC scripts/mod/empty.o HOSTCC scripts/mod/mk_elfconfig MKELF scripts/mod/elfconfig.h HOSTCC scripts/mod/file2alias.o HOSTCC scripts/mod/modpost.o HOSTCC scripts/mod/sumversion.o HOSTLD scripts/mod/modpost CC init/main.o CHK include/linux/compile.h UPD include/linux/compile.h CC init/version.o CC init/do_mounts.o

どれどれ、madwifiをコンパイルしてみますか!

madwifi-0.9.3.1# make Checking requirements... ok. Checking kernel configuration... ok. make -C /lib/modules/2.6.21.1/build SUBDIRS=/root/madwifi/madwifi-0.9.3.1 moduls make[1]: Entering directory `/usr/src/linux-2.6.21.1' Building modules, stage 2. MODPOST 13 modules CC /root/madwifi/madwifi-0.9.3.1/ath/ath_pci.mod.o 省略 LD [M] /root/madwifi/madwifi-0.9.3.1/net80211/wlan_xauth.ko make[1]: Leaving directory `/usr/src/linux-2.6.21.1' make -C ./tools all || exit 1 make[1]: Entering directory `/root/madwifi/madwifi-0.9.3.1/tools' gcc -o athstats -g -O2 -Wall -I. -I../hal -I.. -I../ath athstats.c gcc -o 80211stats -g -O2 -Wall -I. -I../hal -I.. 80211stats.c gcc -o athkey -g -O2 -Wall -I. -I../hal -I.. athkey.c gcc -o athchans -g -O2 -Wall -I. -I../hal -I.. athchans.c gcc -o athctrl -g -O2 -Wall -I. -I../hal -I.. athctrl.c gcc -o athdebug -g -O2 -Wall -I. -I../hal -I.. athdebug.c gcc -o 80211debug -g -O2 -Wall -I. -I../hal -I.. 80211debug.c gcc -o wlanconfig -g -O2 -Wall -I. -I../hal -I.. wlanconfig.c make[1]: Leaving directory `/root/madwifi/madwifi-0.9.3.1/tools'

を~でけた!!\(^o^)/

ひょっとして、debianパッケージのmadwifiもコンパイルが通るかな~?

っと、思ったら!

ダメジャン!!
きっとdebianのモジュールツールがmadwifiをコンパイルするのに必要な何かが足りないんだろうな~

気を取り直して、本家ソースをインストール!

madwifi-0.9.3.1# make install sh scripts/find-madwifi-modules.sh 2.6.21.1 for i in ./ath ./ath_hal ./ath_rate ./net80211; do \ make -C $i install || exit 1; \ done 省略 install -d /usr/local/man/man8 install -m 0644 man/*.8 /usr/local/man/man8 make[1]: Leaving directory `/root/madwifi/madwifi-0.9.3.1/tools'

続けて、モジュールの読込み!

madwifi-0.9.3.1# modprobe ath-pci ath_hal: module license 'Proprietary' taints kernel. ath_hal: 0.9.18.0 (AR5210, AR5211, AR5212, RF5111, RF5112, RF2413, RF5413, REGO) wlan: 0.8.4.2 (0.9.3.1) ath_pci: 0.9.4.5 (0.9.3.1) ath_rate_sample: 1.2 (0.9.3.1) wifi0: 11a rates: 6Mbps 9Mbps 12Mbps 18Mbps 24Mbps 36Mbps 48Mbps 54Mbps wifi0: 11b rates: 1Mbps 2Mbps 5.5Mbps 11Mbps wifi0: 11g rates: 1Mbps 2Mbps 5.5Mbps 11Mbps 6Mbps 9Mbps 12Mbps 18Mbps 24Mbps 3s wifi0: H/W encryption support: WEP AES AES_CCM TKIP wifi0: mac 5.6 phy 4.1 radio 3.6 wifi0: Use hw queue 1 for WME_AC_BE traffic wifi0: Use hw queue 0 for WME_AC_BK traffic wifi0: Use hw queue 2 for WME_AC_VI traffic wifi0: Use hw queue 3 for WME_AC_VO traffic wifi0: Use hw queue 8 for CAB traffic wifi0: Use hw queue 9 for beacons wifi0: Atheros 5212: mem=0xb0000000, irq=21

を!!

madwifi-0.9.3.1# iwconfig 省略 Warning: Driver for device ath0 has been compiled with version 22 of Wireless Extension, while this program supports up to version 20. Some things may be broken... ath0 IEEE 802.11b ESSID:"" Nickname:"" Mode:Managed Channel:0 Access Point: Not-Associated Bit Rate:0 kb/s Tx-Power:0 dBm Sensitivity=0/3 Retry:off RTS thr:off Fragment thr:off Encryption key:off Power Management:off Link Quality:0 Signal level:0 Noise level:0 Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0 Tx excessive retries:0 Invalid misc:0 Missed beacon:0

Warningか……
wireless-toolsを入れ替える必要があるのかな~

トラックバック

このエントリーのトラックバックURL:
http://www.youchikurin.com/mt/mt-tb.cgi/125

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

About

2007年06月29日 20:42に投稿されたエントリーのページです。

ひとつ前の投稿は「エントリーの見栄え?」です。

次の投稿は「iwconfigのWarning!」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

Powered by
Movable Type 3.35