本帖最后由 bruce_helen 于 2014-8-3 21:32 编辑
本篇主要内容
1. RT3070 USB wifi驱动移植和wpa_supplicant移植;
2. OpenSSH移植;
3. 远程连接测试。
在局域网上远程连接RioTboard可以让多人同时使用同一块RioTboard,方便开发。当然你也可以把RioTboard放到互联网,远程连接。
注意:这里的移植建立在busybox构建的根文件系统上。
一、RT3070 USB wifi驱动移植
xinxinyuan已经有了驱动移植部分,我这里只对不同的地方作出说明。另外我还加入了wpa_supplicant。为什么要加入wpa_supplicant程序呢?因为现在大部分的路由器都是WPA加密,单单一个RT3070 USB wifi的驱动还不足以让RioTboard连接上无线网络。@xinxinyuan 的系统是Ubuntu,系统可能已经包含无线连接管理程序,因此他只需要移植一个3070的驱动即可。
附xinxinyuan 《RT3070 USB wifi模块驱动移植 imx6》
https://www.cirmall.com/bbs/thread-32167-1-1.html
具体过程如下,首先到Ralink官网上http://www.mediatek.com/en/downloads/下载最新linux驱动代码。
这里下载的是DPO_RT5572_LinuxSTA_2.6.1.3_20121022.tar.bz2,然后到解压后的文件夹,打开readme_sta_usb文档,里面有具体修改地方的指导。下面的内容为补充说明:
根目录下的Makefile
1. 在最上面加
MODE = STA
2. 改平台
PLATFORM = RALINK_2880
修改os/linux/config.mk
1. 156行
ifeq ($(PLATFORM), RALINK_2880)
LINUX_SRC = /home/bruce/share/imx6/L3.0.35_4.1.0_130816_source/source/ltib/rpm/BUILD/linux-3.0.35
CROSS_COMPILE = arm-linux-
endif
2. 864行
ifeq ($(PLATFORM), RALINK_2880)
#CFLAGS := -D__KERNEL__ -I$(LINUX_SRC)/include -I$(RT28xx_DIR)/include -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fno-strict-aliasing -fno-common -fomit-frame-pointer -G 0 -mno-abicalls -fno-pic -pipe -finline-limit=100000 -march=mips2 -mabi=32 -Wa,--trap -DLINUX -nostdinc -iwithprefix include $(WFLAGS)
EXTRA_CFLAGS := -D__KERNEL__ -I$(LINUX_SRC)/include -I$(RT28xx_DIR)/include -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fno-strict-aliasing -fno-common -Uarm -fno-common -pipe -D__LINUX_ARM_ARCH__=7 -march=armv7-a -msoft-float -Uarm -DMODULE -DMODVERSIONS $(WFLAGS)
export EXTRA_CFLAGS
endif
编译make
完成后在os/linux/目录下生成rt5572sta.ko文件。
将这个文件放到rootfs相应的目录下。
将源代码根目录下的RT2870STA.dat放到rootfs/etc/Wireless/RT2870STA目录下
移植wpa_supplicant
因为现在的无线wifi网络大多是wpa加密。所以需要移植wpa_supplicant工具。
参考下面的帖子,里面的讲解非常详细。注意最好使用和文章中一样的软件版本,否则可能会出现编译不通过的情况。
http://blog.csdn.net/hongtao_liu/article/details/5679195
然后,在根目录etc/下编写一个连接脚本/etc/wpa_supplicant.conf。将下面的内容放到配置文件中,这个配置适合大部分应用,不同的路由器只需要将红色部分替换即可。ssid为无线网络名,psk为无线密码。
# WPA-PSK/TKIP ctrl_interface=/var/run/wpa_supplicant network={ ssid="xxxxx" scan_ssid=1 key_mgmt=WPA-EAP WPA-PSK IEEE8021X NONE pairwise=TKIP CCMP group=CCMP TKIP WEP104 WEP40 psk="yyyyy" } 以上准备好后下载到开发板中。然后开始连接网络
连接无线网络操作步骤
1. 装载RT3070驱动
insmod rt5572sta.ko
2. 将RT3070的固件放到目录下
etc/Wireless/RT2870STA
3. 打开无线网络,设置IP地址
ifconfig ra0 192.168.1.179 up
4. 设置网关
route add default gw 192.168.1.1
5. 新建目录,只需要建立一次即可,当前的文件系统已经自带这个目录
mkdir -p /var/run/wpa_supplicant
6. 连接网络,网络信息在/etc/wpa_supplicant.conf这个文件中
wpa_supplicant -B -ira0 -c /etc/wpa_supplicant.conf -Dwext
7. 设置DNS服务器,要不然不能使用域名解析
cat /etc/resolv.conf 查看当前DNS配置
echo "nameserver 202.102.128.68" >> /etc/resolv.conf
这时候就能ping通www.baidu.com了
8. 查看无线网络状态
iwconfig ra0
OpenSSH移植
参考资源: http://www.nenew.net/openssh-port-arm9-board.html http://www.2cto.com/os/201302/188376.html 相同的内容就不贴了,下面主要记录不一致的地方。 编译时指定的路径: zlib ./configure--prefix=/home/bruce/share/work/WiFi/openssh/install/zlib make make install openssl ./Configure--prefix=/home/bruce/share/work/WiFi/openssh/install/opensslos/compiler:arm-linux-gcc make make install openssh ./configure--host=arm-linux --prefix=/usr/local/openssh--with-zlib=/home/bruce/share/work/WiFi/openssh/install/zlib--with-ssl-dir=/home/bruce/share/work/WiFi/openssh/install/openssl--disable-etc-default-login --disable-strip CC=arm-linux-gcc AR=arm-linux-ar make 这里不需要install,直接将生成的文件拷贝到开发板的文件系统中。 注意事项 在开发板中操作 cd/usr/local/openssh/etc ssh-keygen -t rsa1-f ssh_host_key -N "" ssh-keygen -t rsa-f ssh_host_rsa_key -N "" ssh-keygen -t dsa-f ssh_host_dsa_key -N "" ssh-keygen-t ecdsa -f ssh_host_ecdsa_key -N "" //原文中这里写错了 另外,把这个文件/usr/local/openssh/etc/ sshd_config 中的PermitRootLogin yes前的注释“#”号去掉。方便我们使用root账号远程登录。 我们系统中使用的是busybox构建的根文件系统,有些文件不合乎标准。/etc/passwd,该文件要特别关注,因为OpenSSH(SSHD)对用户管理校验要求很严,所以Busybox添加的用户基本是不符合要求的,主要表现为密码失效等,要手动修改,示例如下: 使用Busybox添加用户时,/etc/shadow文件大概形式如下: # cat /etc/shadow
root:$1$m.jegaqA$vA.rBTVryyUAcRvyZ2gOL1:0:0:99999:7:::
telnetd:$1$N4uZUEcU$yotoDExxgGXs6PE7PQuIR1:0:0:99999:7:::
honey:$1$SwtHyL/h$MsEX6Vnqz/qhwDsivDqD20:0:0:99999:7:::
sshd:$1$elylgRon$FOHgkwpPMcNI5s.iL8ZS/.:0:0:99999:7:::
这样的话,使用SSH登录就会出现用户登录失败,提示诸如“WARNING: Your password has expired. You must change yourpassword now and login again!”等等。 需要手工修改,大致如下: # cat /etc/shadow
root:$1$m.jegaqA$vA.rBTVryyUAcRvyZ2gOL1:15695:5:99999:7:5:20000:
telnetd:$1$N4uZUEcU$yotoDExxgGXs6PE7PQuIR1:15695:5:99999:7:5:20000:
honey:$1$SwtHyL/h$MsEX6Vnqz/qhwDsivDqD20:15695:5:99999:7:5:20000:
sshd:$1$elylgRon$FOHgkwpPMcNI5s.iL8ZS/.:15695:5:99999:7:5:20000:
设置root用户密码 passwd root 输入密码即可 开启/sbin/sshd服务后使用SecureCRT工具即可登录。 当前开发板上电后手动启动无线网络 cd/home/bruce/wifi 将上面连接无线网卡的步骤写成start脚本,运行start启动脚本,这个脚本中会装载无线网卡驱动,并且自动连接实验室的TP-604路由器。注意,在脚本中使用了固定IP:192.168.1.179,这个IP地址不能和无线网络中的其他IP地址冲突,如果需要可以修改start脚本。 ./start 然后启动sshd服务 /sbin/sshd 没有错误的话就可以通过ssh工具远程连接开发板了。 账号:root 密码:自己设定 附:使用SecureCRT工具进行连接远程连接的方法 打开SecureCRT,选择SSH2连接。
下一步,输入IP地址和密码
Next后直接Finish
在左边的Sessions中双击选择刚才新建的名称,打开后会弹出输入密码的对话框,输入密码,点击OK即可进入开发板shell命令提示行。
例子:使用top命令查看系统当前状态
使用注意事项
由于是我们内部用来作嵌入式开发,我们这里使用了root账号。root账号拥有系统全部权限,使用时不要删除系统中其他文件。最好的方法是在/home目录下建立自己的用户名目录,然后切换到此目录,测试程序都可以放在这个目录下。这样大家同时使用,但又不相互影响。
如果想提高系统的安全性,请添加用户名,不要使用root账号登陆。
|