配置(前面的步骤见:编译)
1. 修改modules/ifcfg-rausb0
ifcfg-rausb0 root@zanget:network# cat ifcfg-rausb0 DEVICE=rausb0 ONBOOT=yes
## Confirm your AP supports dhcp or connects up the ethernet ## before set-up as a dynamic IP BOOTPROTO=dhcp
## static for fixed ip #BOOTPROTO=static #IPADDR=192.168.0.31 #NETMASK=255.255.255.0 #GATEWAY=192.168.0.1 |
2. 安装模块
下面的步骤已经在编译里面修改过了,下面跳过
修改modules/Makefile NDDIR部分 ## Revision History by mike ##Configuration files on ARM busybox ifeq ($(PLATFORM),ARM) BASE_DIR := /opt/s3c-2416/rootfs/custom NDDIR = $(BASE_DIR)/etc/sysconfig/network MOD_CONF = $(BASE_DIR)/etc/modprobe.d/module-renames ND_CONF = $(BASE_DIR)/etc/sysconfig/network/ifcfg-rausb0 else ## Revision History end ND_CONF=/etc/sysconfig/network-scripts/ifcfg-rausb0 Endif
|
然后是install部分 install: make -C $(LINUX_SRC) / |
下面的步骤已经在前版本(见博客前第2篇文章:配置)中修改过,下面跳过
注意:BASE_DIR 为你busybox的根目录 为了保证安装不会出错,先创建/验证目录: root@zanget:~# cd /opt/s3c-2416/rootfs/custom/etc root@zanget:etc# mkdir -p sysconfig/network root@zanget:etc# mkdir -p modprobe.d root@zanget:etc# ls fstab init.d inittab modprobe.d sysconfig root@zanget:etc#cd modprobe.d/ root@zanget:etc#touch module-renames |
root@zanget:modules# make install
root@zanget:rt73# make install
make -C /opt/s3c-2416/linux-2.6.21 /
INSTALL_MOD_DIR=extra SUBDIRS=/opt/s3c-2416/wireless-usb/driver/RT.1104/Module /
modules_install
make[1]: 正在进入目录 `/opt/s3c-2416/linux-2.6.21'
INSTALL /opt/s3c-2416/wireless-usb/driver/RT.1104/Module/rt73.ko
DEPMOD 2.6.21.5-cfs-v19
make[1]:正在离开目录 `/opt/s3c-2416/linux-2.6.21'
Network device directory /opt/s3c-2416/rootfs/custom/etc/sysconfig/network
Module configuration file /opt/s3c-2416/rootfs/custom/etc/modprobe.d/module-renames
/sbin/depmod -a
等几秒后à成功
根据前面步骤的配置(见博客前第2篇文章:配置),下面的步骤跳过:
root@zanget:modprobe.d# cat module-renames
root@zanget:network# ls
|
根据前面步骤的配置(见博客前第2篇文章:配置),下面的步骤跳过:
由于modules/rt_config.h
00038: #ifndef __RT_CONFIG_H__ 00039: #define __RT_CONFIG_H__ 00040: 00041: #define PROFILE_PATH "/etc/Wireless/RT73STA/rt73sta.dat" 00042: #define NIC_DEVICE_NAME "RT73STA" 00043: #define RT2573_IMAGE_FILE_NAME "/etc/Wireless/RT73STA/rt73.bin"
的定义,需要手动拷贝:
root@zanget:modprobe.d# cd /opt/s3c-2416/rootfs/custom/etc root@zanget:modprobe.d# mkdir -p Wireless/RT73STA 拷贝 root@zanget:modules# cp rt73.bin /opt/s3c-2416/rootfs/custom/etc/Wireless/RT73STA root@zanget:modules# cp rt73sta.dat /opt/s3c-2416/rootfs/custom/etc/Wireless/RT73STA/
安装dos2unix root@zanget:modprobe.d# apt-get install tofrodos |
块加载由于版本差异,导致配置文件差异,请手动拷贝:
[root@dding Module]# cp rt73sta.dat /opt/s3c-2416/rootfs/custom/etc/Wireless/RT73STA/ |
converting file rt73sta.dat to UNIX format
[root@zanget:modprobe.d]# dos2unix rt73sta.dat |
动态加载模块,用相关命令确认模块加载成功
/ # insmod rt73.o / # dmesg idVendor = 0xb05, idProduct = 0x1723 usbcore: registered new interface driver rt73 selected clock c0335ec4 (pclk) quot 35, calc 115740 => usb_rtusb_open |
iwconfig iwlist 的移植和安装,请参考博客前第2篇:配置,这里不再复述。
3. 手动测试
/ # ifconfig rausb0 inet 192.168.1.2 netmask 255.255.255.0 up => usb_rtusb_open / # iwlist rausb0 scan | grep ESSID ESSID:"ChinaNet" ESSID:"ChinaUnicom" ESSID:"asus-test" |
可看到测试的网络"asus-test",下面就将其设置到网卡:
/ # iwpriv rausb0 set SSID="asus-test" |
ping百度
/ # ping 119.75.218.45 |
不通
/ # route add default gw 192.168.1.1 / # ping 119.75.218.45 |
等几秒,通过 也可ping 192.168.1.1
4. 使用DHCP
编译Busybox make menuconfig,添加以下选项:
Networking Utilities --->
udhcp Server/Client --->
[ ] udhcp Server (udhcpd) //在此不作服务端,故不选。生成udhcpd命令
udhcp Client (udhcpc) //生成udhcpc命令
/ # ifconfig rausb0 up => usb_rtusb_open / # iwlist rausb0 scan | grep ESSID ESSID:"ChinaNet" ESSID:"ChinaUnicom" ESSID:"asus-test" |
可看到测试的网络"asus-test",下面就将其设置到网卡:
/ # iwpriv rausb0 set SSID="asus-test" / # udhcpc rausb0 udhcpc (v1.17.3) started udhcpc: socket: Address family not supported by protocol |
问题1
udhcpc: socket: Address family not supported by protocol |
解决:重新编译内核(参看博客):
Networking --->
Networking support
Networking options --->
需要选择下面红色部分:
+---------------------- Networking options ----------------------+
| Arrow keys navigate the menu.
| Highlighted letters are hotkeys. Pressing
| excludes,
| exit, > for Help, > for Search. Legend: [*] built-in |
| +------------------------------------------------------------+ |
| +------------------------------------------------------------+ |
| | [ ] Network packet debugging | |
| | <*> Packet socket (前一篇文章漏掉了,这里补充说明下) | |
| | <*> Unix domain sockets | |
| | < > Transformation user configuration interface | |
| | [ ] Transformation sub policy support (EXPERIMENTAL) | |
| | [ ] Transformation migrate database (EXPERIMENTAL) | |
| | < > PF_KEY sockets | |
| | [*] TCP/IP networking | |
| | [ ] IP: multicasting | |
| | [ ] IP: advanced router | |
| | [*] IP: kernel level autoconfiguration | |
| | [*] IP: DHCP support | |
| | [*] IP: BOOTP support | |
//…
| | [*] Network packet filtering framework (Netfilter) ---> | |
另外,需要udhcpc的配置文件,拷贝Busybox下的simple.script到/usr/share/udhcpc/下,并重命名为default.script:
root@zanget: busybox-1.17.3# cd examples/udhcp/ root@zanget:udhcp# mkdir /opt/s3c-2416/rootfs/custom/usr/share root@zanget:udhcp# cp simple.script /opt/s3c-2416/rootfs/custom/usr/share/default.script |
修改default.script中RESOLV_CONF="/etc/resolv.conf"为RESOLV_CONF="/tmp/resolv.conf":
#!/bin/sh # udhcpc script edited by Tim Riker
#//Revision History by mike #RESOLV_CONF="/etc/resolv.conf" RESOLV_CONF="/tmp/resolv.conf" #//Revision History end |
5. 下载测试
下载完后重启板子:
/ # ifconfig rausb0 up => usb_rtusb_open / # iwlist rausb0 scan | grep ESSID ESSID:"ChinaNet" ESSID:"ChinaUnicom" ESSID:"asus-test" / # iwpriv rausb0 set SSID="asus-test" / # udhcpc rausb0 udhcpc (v1.17.3) started Sending discover... Sending discover... Sending discover... |
发现不成功,google后发现:
/ # udhcpc -i rausb0 udhcpc (v1.17.3) started Sending discover... Sending select for 192.168.1.4... Sending select for 192.168.1.4... Lease of 192.168.1.4 obtained, lease time 86400 |
显示租借IP 成功!!!时间为86400,IP为192.168.1.4
看看用法:
/ # udhcpc -h udhcpc: option requires an argument -- h BusyBox v1.17.3 (2010-10-15 10:05:34 CST) multi-call binary.
Usage: udhcpc [-fbnqvoCR] [-i IFACE] [-r IP] [-s PROG] [-p PIDFILE] [-H HOSTNAME] [-c CID] [-V VENDOR] [-O DHCP_OPT]... [-P N]
-i,--interface IFACE Interface to use (default eth0) |
而:
/ # ping 192.168.1.1 PING 192.168.1.1 (192.168.1.1): 56 data bytes ping: sendto: Network is unreachable |
说明udhcpc获取成功,但设置失败了!!
6. 修正udhcpc
找了好久,终于在强大google的帮助下找大了一个讨论题:
下面Gilles的回复让我恍然大悟:
I don't need the ifconfig step
Don't you need to indicate the script to run to set the ip I do udhcpc -q -n -T 3 -A 1 -t 3 -i eth%d -s /usr/bin/udhcpc.script
I find one problem in linux-2.6.27.21 kernel if the interface that udhcpc This trigger a WARNING at net/sched/sched_generic.c 219 dev_watchdog Seen that with ne2k-pci driver. |
原来可能是我默认脚本的设置问题, 于是手动指定脚本测试:
/ # udhcpc -n -q -i rausb0 -s /usr/share/default.script udhcpc (v1.17.3) started Setting IP address 0.0.0.0 on rausb0 Sending discover... Sending select for 192.168.1.4... Sending select for 192.168.1.4... Lease of 192.168.1.4 obtained, lease time 86400 Setting IP address 192.168.1.4 on rausb0 Deleting routers route: SIOCDELRT: No such process Adding router 192.168.1.1 Recreating /tmp/resolv.conf Adding DNS server 192.168.1.1 |
果然!!!!
在前面的文章配置(第4步)中,我的配置经过参考文章所做的配置是:
root@zanget:udhcp# cp simple.script /opt/s3c-2416/rootfs/custom/usr/share/default.script |
经过查阅文档,发现
25 | -s, --script=file Run file at dhcp events (default: |
26 | /usr/share/udhcpc/default.script) |
27 | -v, --version Display version |
于是做下面的改动: (这里(点我)有相关脚本)
/ # mkdir /usr/share/udhcpc / # mv /usr/share/ /usr/share/default.script /usr/share/udhcpc/ / # mv /usr/share/default.script /usr/share/udhcpc/ /usr/share/udhcpc # ls default.script |
重启机器,再测试:
/ # ifconfig rausb0 up => usb_rtusb_open / # iwlist rausb0 scan | grep ESSID ESSID:"ChinaNet" ESSID:"ChinaUnicom" ESSID:"asus-test" / # iwpriv rausb0 set SSID="asus-test" / # udhcpc -i rausb0 udhcpc (v1.17.3) started Setting IP address 0.0.0.0 on rausb0 Sending discover... Sending discover... Sending discover... Sending discover... Sending discover... Sending select for 192.168.1.4... Lease of 192.168.1.4 obtained, lease time 86400 Setting IP address 192.168.1.4 on rausb0 Deleting routers route: SIOCDELRT: No such process Adding router 192.168.1.1 Recreating /tmp/resolv.conf Adding DNS server 192.168.1.1
/ # ifconfig rausb0 rausb0 Link encap:Ethernet HWaddr 00:1B:FC:22:E2:1F inet addr:192.168.1.4 Bcast:192.168.1.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:1056 errors:0 dropped:0 overruns:0 frame:0 TX packets:39 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:107241 (104.7 KiB) TX bytes:3462 (3.3 KiB) |
ping百度
/ # ping 119.75.218.45 PING 119.75.218.45 (119.75.218.45): 56 data bytes 64 bytes from 119.75.218.45: seq=0 ttl=50 time=51.115 ms |
终于成功了!
到此,所有驱动移植完毕,后续的任务就是移植wpa_supplicant,最新版0.7.3,官网是(点我),下载地址是(点我)。