无线路由刷OpenWrt

看到 开涛的这篇文章,才第一次听说OpenWrt,手痒痒,决定把自己的路由也刷成OpenWrt玩玩。

我的路由是TL-WR841N V7,找了一通,发现要attitude_adjustment以后的版本才有对应的firmware可以下载,和 wiki上说的不一样。down下来,按wiki上的说明开刷,刷完重启后才发现悲剧了,我手上穷的连一根网线都没有,平时都是用无线连的,这下好了,根本连不进去设置,这时是晚上十点,洗洗睡吧。

第二天搞了根网线回来,继续鼓捣。按wiki说明设本机ip成192.168.1.XX,连上,打开web管理界面luci,把无线、wan设好,OK,可以用了,挺顺利的,于是又ssh连上,开始研究那些配置文件,不小心,小手一抖,把vlan配错了,
/etc/init.d/network restart
之后,有线,无线 ,什么都连不上了。没事,把ADSL直接连到电脑上拨号,进wiki找解决办法,找到个fail safe恢复的办法,重启,按住QSS,然后telnet进去,一切都恢复到刚刷完时的样子了,重新配置wifi和wan,又工作正常了,小惊一场。

刷成OpenWrt当然不是为了和原厂固件一样,只是正常工作就可以了,听说可以单线多拨、穿嫱、当成下载机等等等等,这才是吸引我刷机的理由。先试试最诱人的,单线多拨。先要验证我用的ISP是不是支持多拨,开个虚拟机,把网卡设成bridge模式,然后在虚拟机里拨号,如果可以拨上,就证明可以。兴冲冲开始试验,无奈结果是不支持。这个搞不了,那把我平时用的ssh tunnelling搬到路由上来总可以吧,ssh -D一试,结果告诉我不支持-D,什么世道呀,什么都搞不了,白刷了,上网一查才知道,OpenWrt用的ssh client是dropbear,不支持tunnelling,还得要openssh出马,于是
opkg update
opkg install openssh-client

我勒了个去,那个慢呀,到处找国内镜像也没找到,看来这玩意还是比较小众。最后还是把相关的包用下载工具下到本地,在本地开个httpd,再把opkg的源设成本地才能安装,opkg用的wget根本拉不下来。没想到新问题又来了,提示空间不足,安装不下,坑爹呀,一个ssh client都装不下!df一看,整个root文件系统才1M多一点,剩下的可用空间只有600多K,这个这个,对于像我这样头一次玩嵌入式系统的人来说,实在想撞墙。没办法,总不能就这样算了吧;把luci删掉,一大堆luci打头的包呀,不用算删掉的包有多大,应该肯定够了吧,再试,还是不行,再删,反正web界面已经删掉了,剩下uhttpd服务器和lua都没用了,删,这下总够了吧!什么!还是不够!df再看,却发现空间根本没有多起来,反而还少掉了一点,什么情况呀?实在搞不懂了,3岁玩小霸王到现在,从来没碰到过这样诡异的情况,再说wiki上的硬件规格里明明说这个机器有4M flash, 32M RAM,怎么只有1M,剩下3M都去哪了?在df里根本看不出呀,谁用掉了也跟我说一声嘛,怎能这样莫名其妙就没了呢。df里显示的都是一些闻所未闻的文件系统,overlayfs,mtdblock之类的,为什么不是ext4,reiserfs,jfs?只好默默再去拜读wiki,终于搞明白那个overlayfs是怎么玩的了
cat /proc/mtd
显示整片flash的划分结构,还得搬个计算器出来,一算,果然和wiki上说的一样。总算明白为什么只剩下1M,删文件空间不增反减的原因以及fail safe是怎么实现的了。既然搞明白了,就有解决的办法,就是自己build firmware,不是编译,是用现成的工具生成一个只包含你需要的包的固件。把imageBuilder下下来,build的时候只选择最基本的包,前面提到的luci相关的包统统去掉,生成映像文件后,再进行sysUpgrade,一切顺利,然后安装openssh client,总算装上了。再装个autossh包,就可以在wan连接,断开的时候自动连上,断开ssh,这样我就不用在需要穿越的时候再去开ssh了。

至此,折腾结束,下载机暂时搞不了,我这个路由没有USB口,得找人帮我装一个上去,那些牛人都已经把怎么接线放在wiki上了,真好。有了USB口,装个transmission,插上U盘就可以当成下载机用了。其它的诸如打印服务器,视频监控之类的,我没有这个需要。

写完这篇文章,又看到 有人在玩mele,这个够劲,连CPU都是国产的。看来iteye上玩小电脑的人还不少,其实我一直想要一台不带风扇的电脑,外壳要全密封的,我讨厌给机箱清灰,看来离实现越来越近了,在archlinuxarm上又发现一些有趣的设备,只是可惜,国内买不到:

你可能感兴趣的:(linux,嵌入式,openwrt,ARM,无线路由)