刚刚开始一个小米路由器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.这个版本可以从以下地址获得。
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 BarrierBreaker是的。使用的原地址是
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
保存后运行opkg update。发现源可以链接,但报告类似于以下错误
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
官网的意思是告诉opkg,arch类型2的包可以兼容安装arch类型1系统。所以问题来了,现在arch类型是什么呢?折腾了好久,我尝试过查看系统的arch,利用
uname -a
我得到
Linux PandoraBox 3.10.64 #20 Wed Jan 14 00:19:50 CST 2015 mips GNU/Linux
也就是说,系统mechinetype是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
进入各种甚至待arch unkown每次都有脑残设置opkg update,每次都要看那大片报错信息。夜已经深了,为了不打扰室友,客厅里用的笔记本电池,电脑还剩一半。如果能确定系统指定,突然灵机一动。arch,不就不用乱试各种就好。arch尽管最有可能ramips的architecture不行,但总是在哪里写对arch的配置吧。于是开始翻官网源目录,发现疑似文件
下载下来,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才行了。。。。今天就到这了,搞不动了。