刚刚入手一个小米路由器mini,本来就是打算装openWrt的,想试试玩玩看。
刷openwrt的基本流程是参考的如下博主的文章
http://www.right.com.cn/forum/thread-147929-1-1.html
没有遇到什么严重问题,但是一些细节需要注意。
(0)小米路由器mini和小米路由器,不要搞混了。。。。
(1)截止到今天,小米路由mini的firmware版本为0.7.51,我的是0.7.50。一定要先刷入一个开发板而不是稳定版,并且能够支持上面博主所说的mtd命令的版本。
若不使用低版本,在尝试mtd -r write xxxx.bin firmware时会找不到firmware的错误。
我使用的是0.7.15版,这个版本可以从如下地址获得。
http://www.miui.com/thread-1776173-1-1.html
(2)刷机之前需要做一次路由器绑定,然后连接上路由器,进入miwifi.com,再进入“下载”页面。找到页面下面的“SSH工具”那个按钮,此时会有一个root密码需要记下来,后面用。
(3)刷miwifi_ssh.bin时,一定要保证U盘里没有残留miwifi.bin。
(4)貌似一定要用WinSCP这个软件将待刷入的固件传送到小米路由mini上,记得选择SCP模式。
(5)刷完以后,重新连接小米路由器mini,这次使用的是192.168.1.1的ip,要配置好ssh,之后才能通过电脑ssh上去。我选择的是Dropbear接口为wan。我ssh工具用的是SecureCRT,并不是上面博主说的putty。
好,总的来说刷机过程还是没有痛苦的。系统小,刷起速度也快。刷的时候还在和女朋友看关于大脑的纪录片。看完了以后想,怎么也要搞个软件源才行吧,于是就ssh上小米路由mini。上来就
opkg update
好嘛,没有一个源是可以的。。。于是着手手动改源。目前我刷的openWrt是PandoraBox 14.09 r355,是基于openWrt Barrier Breaker的。使用的原地址是
http://downloads.openwrt.org/barrier_breaker/14.07/ramips/mt7620a/packages/
这里面有好几个文件夹,将这些源都写到/etc/opkg.conf里。我的opkg.conf文件如下
rc/gz barrier_breaker_base http://downloads.openwrt.org/barrier_breaker/14.07/ramips/mt7620a/packages/base
src/gz barrier_breaker_management http://downloads.openwrt.org/barrier_breaker/14.07/ramips/mt7620a/packages/management
src/gz barrier_breaker_oldpackages http://downloads.openwrt.org/barrier_breaker/14.07/ramips/mt7620a/packages/oldpackages
src/gz barrier_breaker_packages http://downloads.openwrt.org/barrier_breaker/14.07/ramips/mt7620a/packages/packages
src/gz barrier_breaker_routing http://downloads.openwrt.org/barrier_breaker/14.07/ramips/mt7620a/packages/routing
src/gz barrier_breaker_telephony http://downloads.openwrt.org/barrier_breaker/14.07/ramips/mt7620a/packages/telephony
dest root /data
dest ram /tmp
lists_dir ext /data/var/opkg-lists
option overlay_root /data
Package xxx version xxx has no valid architecture, ignoring.
一些朋友也遇到了
http://www.right.com.cn/FORUM/thread-128532-1-1.html
google了一下原因,发现是源指定的architecture和路由上刷好的系统的不一致造成的。一些解决方案可以从如下地址找到
http://wayjam.me/post/two-problems-about-install-package-on-openwrt.md
其实在openWrt官网上已经对opkg进行了详细的说明,上面博主的做法也是和openWrt官网推荐的方法相一致(http://wiki.openwrt.org/doc/techref/opkg),意思就是在/etc/opkg.conf文件中加入对系统支持的architecture的设置,具体方法是添加如下几行
arch all 100
arch 200
arch 300
uname -a
我得到
Linux PandoraBox 3.10.64 #20 Wed Jan 14 00:19:50 CST 2015 mips GNU/Linux
就是说系统的mechine type 是mips的,这个硬件描述我也不是很懂,再看看uname -p,查看一下processor type,好嘛。。。显示是这样的
整个人都不好了有木有!!这unknown算是什么?
再看cat /proc/cpuinfo
也就是说,小米路由mini使用的是联发科的MT7620A型号的芯片,机器类型属于mips类的,这也与官网的源地址相一致,
于是我又尝试了
arch all 100
arch mips 200
arch mips2 300
arch ramips 400
arch unkown 500
下载下来,notepad++打开查看,配置项目还是很多的,直接搜索“ARCH”,找到了这样的一行
我只能说,我擦了,为毛要有一个"_24kec"的后缀!?
把脑残的opkg.conf文件改成
再次opkg update,终于没有错误了!!!!yeah
那么整个什么软件安装一下试试看呢,先来python吧!其实我只想装一个python而已。。。。google一下发现貌似要先装libc库,貌似还要手动装(可参考这篇博客中关于安装Transmission的描述,http://blog.sina.com.cn/s/blog_56a70c040102vaay.html),opkg自己装不了。于是在官网的源列表里找libc,很容易找,就在base文件夹里
下载下来。从这个libc名字上也看到,确实系统的arch是ramips_24kec,看来是自己too森破too naive啊
scp到路由器/tmp,然后寻思着,这玩意应该装在挂载的u盘上吧,要不根文件系统的空间不够啊,于是根据那个装Transmission的博主的做法,外加自己google到的其他方法,尝试将库安装到u盘上。openWrt官网上对调整opkg安装位置做了描述,还是改/etc/opkg.conf文件,添加dest设置,用一个别名来代替一个地址位置,在opkg install时用-d参数来控制opkg的安装位置。我就填了两个dest,一个是到U盘的根上,一个是到u盘里新创建的opt目录。这么做有个原因是,openWrt刚刷好的系统里根上是没有opt路径的,可以做一个符号链接从U盘的opt到根上。我的/etc/opkg.conf文件最后变为
然后用opkg安装libc,
opkg -d usb install libc_xxxxx
好嘛,又报错,错误意思是做符号链接时出现了“Operation not permitted”,这个网友遇到了一样的错误
http://www.dd-wrt.com/phpBB2/viewtopic.php?p=766847
完全不知道为什么,关键是,手动做符号链接是可以的,可以将u盘上的文件链接到路由器上。确实没问题。那么问题又来了,这是TM怎么个情况??google了许久,然后在一个德语论坛上找到了一个解决方案,貌似外部挂在的usb存储设备,必须要使用ext格式才能作为opkg安装时符号的链接点。这点在openWrt官网关于扩展根文件系统的描述中都没有找到。
http://forum.nas-portal.org/archive/index.php/t-14384.html
http://wiki.openwrt.org/doc/howto/extroot/extroot.theory
已经是夜里三点了。。。所以我果断选择先睡一觉。。。。主要还是因为手头没有舍得格式化的u盘。。。。。
第二天,找了个不用的microSD卡,加了个读卡器,格式化成了ext4格式,查到小米路由上,再来opkg安装,没问题了!yeah
当然也不忘改一下环境变量,参考这个博主的做法
http://blog.jkey.lu/2013/04/22/openwrt-install-package-on-usb-flash-disk/
一运行python,果然给力,打个hello world,果然可以,来个方向键。。。擦,方向键乱码。。。
好嘛,这又是什么情况。。。
google了一圈,发现貌似是readline的问题,于是opkg了readline的包,还有python-ncurses包,都没用。于是想是不是搞个ipython能好一点。opkg了一下ipython,竟然有!安装,成了运行,报module import错误,擦,这也行!?
查看了一下python的lib,发现确实没有ipython所要import的package,怎么回事,这python安装的不完整???看来要自己编译python了,没想到才第二天就要搞交叉编译,痛苦可能来的太早啊。上openWrt,看看如何develop,从git上搞下来现在trunk代码,按照documentation的方法一步一步的实践,发现,python的编译配置就在feeds/oldpackages/python里,打开makefile看一看,发现openWrt把很多python的package做成独立的ipk文件放到源上了,若是找不到某个package,直接opkg安装就可以了。ipthon说是缺少pydoc,这个对应python-doc,opkg安装,再次运行ipython,起来了。
悲剧的是,方向键还是不能用,看来真的要重新编译python才行了。。。。今天就到这了,搞不动了。