找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
查看: 48724|回复: 44

小米路由3安装原生luci

  [复制链接]
本帖最后由 zhangzhenhu 于 2016-5-14 15:21 编辑

论坛发帖排版太费劲了!!!!禁止一切转载!!!读者辛苦爬楼看吧~

关键词
         tp-linkwr2041n v1刷成openwrt
         小米路由3安装opkg命令
         小米路由3安装原生luci(和小米web并存)
         luci启动流程
小米路由3安装s-s
小米路由3安装ss

虎哥openwrt奇幻漂流记

序章
正在使用的路由器是tp-link wr2041n v1,这款路由器200多大洋买的,可是天生就缺陷,经常掉线,网上查了好久说是官方固件的bug,可恶的是tplink一直不解决,也不更新固件,还他妈继续卖,200多大洋,坑人~。
后来按照网上别人的经验,改了下无线配置,关闭了那个什么混合模式,掉线问题才解决,就这样一直坚持用了一年多。
前段时间从别人手里买了ss的帐号用来使用google,用着确实很爽,速度也快,可惜的是手机没办法用,所以想着搞个路由器自动fan wall,考虑把tp-link wr2041n v1刷成openwrt。

tp-link wr2041n v1刷成openwrt
这时对于openwrt其实不甚了解,只是知道有这么个东东,很牛叉的样子,就尝试着刷一下,结果发现openwrt官方不支持这个设备,蛋疼。
柳暗花明又一村,发现网上有别的人写的openwrt添加wr2041n v1设备的教程,经过不懈的努力,参照如下帖子:
https://github.com/wongsyrone/LinuxNotes/blob/master/06.md
给wr2041n v1 刷了breed,然后修改openwrt 15.05.1的代码,进行适配 wr2041n v1,经过多日不断摸索尝试,终于成功了(wongsyrone大神的教程有几个地方有错误,导致走了一点弯路)。
我是从openwrt的官方github项目的chaos_calmer分支fork出来的代码,我修改后的代码在 https://github.com/zhangzhenhu/openwrt/tree/chaos_calmer_wr2041nv1  有兴趣的可以自己了解或者自己修改编译。
适配后的固件是chaos_calmer 15.05.1的版本,可以稳定运行,中继功能没实验过,不知道是否可行,另外wifi灯不亮,这个研究好久都没搞定,有强迫症的我都不得不放弃了。
然后悲剧发生了,tplink真是名副其实的缩水大王,200多的货只有4MB的flash,刷完openwrt后没有一点空间了,什么软件包都无法安装,ss根本安装不上,空间不足!!!!发誓以后再也不买tplink的产品

点评

你说的很对,我赞同你的说法。: 5.0
你说的很对,我赞同你的说法。: 5
我来挖坟啦!!!!就是这个帖子,某群50元的功能。快来学习膜拜~~~  发表于 2019-11-7 00:14
我的恩山、我的无线 The best wifi forum is right here.
 楼主| | 显示全部楼层
小米路由3的悲剧
考虑重新买个路由器,挑来挑去选了个小米路由3,主要是看中了他的128MB的flash(被tplink的4MB flash伤透了),而且价钱还算可以。
结果买完后又悲剧了,入手后才发现原来没有支持的第三方固件,通过多方了解原来是因为采用来少见的nand flash,其它配置与小米路由mini是一样的。
当前openwrt官方已经支持小米路由mini了,估计小米也是发现众多mini的用户都刷成官方openwrt了,不受雷军控制了,窃取不到用户数据了,推送不了广告了。所以发布了小米路由3,使用了少见的nand flash,就是不让你刷。
一个nand flash的编程器要700多大洋,很多开发者望而止步了。breed的作者H大都说不再开发小米路由3的版本的了。没有breed,也就不敢随便乱刷固件了。其实openwrt官方是由nand flash驱动的,可以支持适配mt7620a + nand flash这样的硬件组合,适配起来应该不是很麻烦吧。就是没有breed,不敢随便搞,有哪位尝试了小米路由3mini版或者mt7620a通用版的breed,能成功使用的可以告诉我啊,如果可以的化,我就可以去研究openwrt 适配小米路由3
ps:后来发现小米路由3自身的uboot其实也算是不死uboot了,因为其可以从u盘刷固件,就是不如breed的网络方便一些。另外其实openwrt官方版本已经支持nandflash了,已经有驱动了,哪位大牛可以指导下怎么适配小米路由3的版本,我不会写dts文件,里面那些偏移量我不知道怎么确定,有懂的指导下啊.

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×

点评

小米路由3安装原生luci 聪明的我,想到既然小米路由的固件也是基于openwrt的,那么我直接在小米路由官方固件上装ss等其它软件包就可以玩耍了啊。 这个方法是我经过无数次失败尝试后,才摸索出来成功的,  详情 回复 发表于 2016-5-14 11:16
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| | 显示全部楼层
zhangzhenhu 发表于 2016-5-14 11:14
小米路由3的悲剧考虑重新买个路由器,挑来挑去选了个小米路由3,主要是看中了他的128MB的flash(被tplink的 ...

小米路由3安装原生luci
       聪明的我,想到既然小米路由的固件也是基于openwrt的,那么我直接在小米路由官方固件上装ss等其它软件包就可以玩耍了啊。
       这个方法是我经过无数次失败尝试后,才摸索出来成功的,然后再写的本教程,写教程实在是耗费精力的事情,本教程的方法是没问题的,就是一些细节上我可能会遗漏,如果照着做未必能成功,所以我后面打包了我的所有文件,提供给大家一间安装,已经集成了sschinadns
       注意:由于我们把所有软件包都安装在了/data/目录下下,不是系统默认的,所以如果你用opkg安装某个软件在/etc/init.d/下有启动脚本,必须要打开脚本把里面一些命令的路径要改下,sschinadnslighttpd就都是这样,需要手动改下,否则不能启动,切记
小米路由3开启ssh
       按照论坛里的方法,刷了开发版的固件,然后利用固件的漏洞开启了ssh。这里不细说了,自行查找论坛教程吧。
小米路由3安装opkg
       那么要如何安装luci程序呢?
       使用opkg命令就行,但是你发现小米系统里没有这个命令啊!!,坑爹啊!!
       不用怕,很简单,从其它任何mt7620a的路由设备里把/bin/opkg文件考过来就行了,实在找不到自己编译一下小米路由miniopenwrt固件,在编译好的 build_dir/target-*/目录里就能找到这个文件,我的工具包里就有,opkg命令只是一个文件而已。
       opkg文件拷贝到路由器的/data/ 目录就可以了,为什么是这个目录呢,因为这个目录是可用空间最大的,而且重启不会丢失的,所以我的所有程序都是安装到目录下/data/下。
       拷贝到/data/目录下,要执行这个命令,只需要/data/opkg 就可以了,不能只用opkg,要写路径,否则不找到命令,因为不在系统的搜索路径PATH里面。
      
添加opkg软件包源
       考虑到软件的兼容,我们使用openwrt14.07mt7620芯片的软件源即可。(为啥不用12.09,因为不存在啊!!!)
       修改/etc/opkg.conf 文件,注意:/data/etc/ 目录其实就是/etc/,两个目录是同一个,是同一个,是同一个!!! 记住了,不要删/data/etc/ 里面的文件,因为这货就是/etc/   !!!
# openwrt官方barrier_breaker/14.07的版本ramips/mt7620a/的软件包源
src/gz attitude_adjustment_oldpackageshttp://downloads.openwrt.org/bar ... ckages/oldpackages/
# opkg命令默认讲软件安装的目录,我们设置成/data/目录,不设置会安装到/根目录
dest root /data
#opkg 临时文件目录
dest ram /tmp
# opkg的数据报索引文件的路径,也改到/data/目录下
lists_dir ext /data/var/opkg-lists
option overlay_root /data
arch all 100
arch ramips 200
arch ramips_24kec 300
改完保存,然后执行/data/opkg update
这个源是国外的,如果你的网络不行,可以换成国内的
把上面的源downloads.openwrt.org都换成openwrt.mirrors.ustc.edu.cn 即可,好像潘多拉也有一个mt7620的源,地址我没记下来。

点评

luci工作流程分析 luci其实就是一个web框架而已,提供路由的web管理界面,配合一个http的server服务使用。 小米的固件系统的web也是使用的luci,但是httpserver用的是nginx。 openwrt原生使用uhttpd  详情 回复 发表于 2016-5-14 11:21
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| | 显示全部楼层
zhangzhenhu 发表于 2016-5-14 11:16
小米路由3安装原生luci       聪明的我,想到既然小米路由的固件也是基于openwrt的,那么我直接在小米路 ...


luci工作流程分析
       luci其实就是一个web框架而已,提供路由的web管理界面,配合一个http的server服务使用。        小米的固件系统的web也是使用的luci,但是httpserver用的是nginx。  openwrt原生使用uhttpd作为http server,小米的固件里也有这个程序。开始我也是使用uhttpd,但是弄了好久总是不成功,后来就改成lighttpd了,这回可以了。
       luci的默认安装路径是/usr/lib/lua/luci ,web的入口位置在/www/。
1)      用户浏览器发起请求http://192.168.31.1/
2)      httpserver 接收到(80端口)
3)      发送web首页(/www/index.html)给浏览器
4)      浏览器收到index.html,但是index.html里面有代码让浏览器又跳转到/cgi-bin/luci
5)      httpserver 接收到浏览器请求/cgi-bin/luci(就是/www/cgi-bin/luci文件),这个是cgi程序,所以http server会执行这个程序,然后/www/cgi-bin/luci输出到结果返回给浏览器。
6)      浏览器收到数据,ok这就是你看到的路由器的首页了。后面浏览器发起的其它请求和操作都是http://192.168.31.1/cgi-bin/luci 这个地址加上不同的参数实现的。
7)      httpserver 响应 http://192.168.31.1/cgi-bin/luci  这个地址的其它参数的请求,其实一直都在执行/www/cgi-bin/luci程序,只是把url中的参数传给/www/cgi-bin/luci程序,/www/cgi-bin/luci程序根据不同的参数返回不同页面,执行不同的操作。

8)      以上就是整个工作流程了。

点评

安装原生luci大体思路 luci的web程序的入口就是/www/cgi-bin/luci,这个是lua脚本语言编写的,打开这个脚本后,就看到其实/www/cgi-bin/luci就是调用/usr/lib/lua/luci 里面的接口,也就是luci界面的所有程序  详情 回复 发表于 2016-5-14 11:26
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| | 显示全部楼层
本帖最后由 zhangzhenhu 于 2016-5-14 11:38 编辑
zhangzhenhu 发表于 2016-5-14 11:21
luci工作流程分析       luci其实就是一个web框架而已,提供路由的web管理界面,配合一个http的server ...

安装原生luci大体思路
       luciweb程序的入口就是/www/cgi-bin/luci,这个是lua脚本语言编写的,打开这个脚本后,就看到其实/www/cgi-bin/luci就是调用/usr/lib/lua/luci 里面的接口,也就是luci界面的所有程序都在/usr/lib/lua/luci,而/www/cgi-bin/luci是入口。
       熟悉linux的朋友多知道/usr/lib/lua/luci 其实是作为lua的一个lib库存在的。/www/cgi-bin/luci中是引入了luci库。
       有以上的了解后,我们就可以开搞了。
       大体思路就是:
1)      我们在小米路由3的官方系统上再启动一个http server,监听80外的另一个端口,比如8080。
2)      再另外的位置部署一个/www/ ,web程序的入口,这个入口里的cgi-bin/luci调用我们自己的luci

http server
再启动一个http server还是比较简单的,开始我使用系统里由的uhttpd,但是一直失败,后来改成lighttpd
       安装lighttpd
              /data/opkginstall lighttpd 就可以了
       配置lighttpd
              修改文件 /etc/lighttpd/lighttpd.conf,添加cgi支持,红色部分取消注释
server.modules = (
#      "mod_rewrite",
#      "mod_redirect",
#      "mod_alias",
#      "mod_auth",
#      "mod_status",
#       "mod_setenv",
#      "mod_fastcgi",
#      "mod_proxy",
#      "mod_simple_vhost",
       "mod_cgi",
#      "mod_ssi",
#      "mod_usertrack",
#      "mod_expire",
#      "mod_webdav"
)
              修改监听的端口号
             #bind to port (default: 80)
              server.port = 8080
              其它相关目录修改
              server.document-root= "/data/www/"
              server.errorfile-prefix= “/data/www/error-"
              ##enable syslog
              server.errorlog-use-syslog= “enable"
              cgi.assign = ("cgi-bin/luci"=> “/data/usr/bin/lua")
              url.rewrite = ( "^/luci$" =>"/luci/", # helper only
               "^/cgi-bin/luci.*" => "/luci$0",
                               "^/luci-static/.*" => "/luci$0" )
              修改启动脚本/etc/init.d/lighttpd
              这里就是我上文中说的,我们把lighttpd安装在了/data/目录下,其命令应该是/data/usr/sbin/lighttpd


                  
lua(luci)部署
       创建目录
              mkdir-p /data/usr/bin
              mkdir-p /data/usr/lib/lua/luci
       拷贝lua
              cp/usr/bin/lua  /data/usr/bin/
       安装luci
              直接opkg安装是不行的,由于系统内核版本太低,一些内核依赖不兼容,无法直接安装用 opkg install 安装。
              手动下载luci-base_0.12+svn-r10530-1_ramips_24kec.ipk
              然后解压出来,ipk文件其实就是tar的压缩包
               tar -xzf luci-base_0.12+svn-r10530-1_ramips_24kec.ipk
               tar -xzf data.tar.gz
              然后就会看到我们需要的文件了,注意这里etc/config/luci luci的配置文件,为了和系统的已经有的区分开,我们改写名字,mv etc/config/luci etc/config/luci-opkg 。然后把这些通通复制到/data/目录下,记得先重命名etc/config/luci,再拷贝到/data/,否则会覆盖系统原有的。
              drwxr-xr-x3 tiger tiger 4096 9  24 2014 etc/
drwxr-xr-x 3 tiger tiger 4096 9 24  2014 lib/
drwxr-xr-x 2 tiger tiger 4096 9 24  2014 sbin/
drwxr-xr-x 3 tiger tiger 4096 9 24  2014 usr/
drwxr-xr-x 4 tiger tiger 4096 9 24  2014 www/
              
         然后就是要修改一些文件的内容,以达到我们安装的luci要独立于系统自带的,注意以下这些文件都是/data/目录下的


启动
             /etc/init.d/lighttpd  enable
             /etc/init.d/lighttpd  start
       如果没有报错,浏览器访问 http://192.168.31.1:8080  


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×

点评

内核模块兼容问 上文说小米原生固件采用的是openwrt 12.09,但是其linux 内核是2.6.36,这个太老了,目前 openwrt 官方的12.09都已经是3.x的内核了,所以目前已知的软件源根本没有2.6.36的内核模块软件包(  详情 回复 发表于 2016-5-14 11:29
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| | 显示全部楼层
本帖最后由 zhangzhenhu 于 2016-5-14 11:42 编辑
zhangzhenhu 发表于 2016-5-14 11:26
安装原生luci大体思路       luci的web程序的入口就是/www/cgi-bin/luci,这个是lua脚本语言编写的,打开 ...

内核模块兼容问                 上文说小米原生固件采用的是openwrt 12.09,但是其linux 内核是2.6.36,这个太老了,目前 openwrt 官方的12.09都已经是3.x的内核了,所以目前已知的软件源根本没有2.6.36的内核模块软件包(那些kmod-xxx开头的软件包),以至于一些依赖kmod-xxx的软件无法安装,这也就是为什么新版本的ss不支持,而且多拨的功能也无法支持了,mwan3依赖一些kmod。
         解决的方法就是自己编译,我尝试了很久了,熬夜好几天,都没成功,各种问题~~,主要是缺少现成的sdk。谁有兴趣可以一起研究下,目前我有些进展,但是一些软件包编译不过去,版本太低了~~
关于ss的特殊问题
       2.1.4s-s-libev-spec_2.1.4-1_ramips_24kec.ipk)以后的版本依赖一些内核模块,无法安装的,所以要用的2.1.4的版本。
       其对应的luci 界面配置appluci-app-s-s-spec_xxx)是和s-s-libev-spec的版本严格对应的,用最新的luci-app-s-s-spec_是不兼容s-s-libev-spec_2.1.4-1_ramips_24kec.ipk的,但是我尝试了好几个版本,发现还是最新的版的luci-app-s-s-spec提供的web配置页面比较灵活和方便,所以我自己修改了 etc/init.d/s-s文件,使得s-s-libev-spec_2.1.4-1_ramips_24kec.ipk兼容了s-s-libev-spec_2.1.4-1_ramips_24kec.ipk
       所以如果你重新安装ss,一定不要奇怪可能会发生某些问题哦!!!
       对了,还有,ss本地监听端口不要写1080,会失败,选一个8千的端口吧,

小米系统里已经有Dnsmasq了,不用你自己再安装。
我是用Dnsmasq+chinadns + ss fan wall,貌似不太稳定,经常还是打不开,也不知道怎么回事,有了解的提示我一下啊!


打包下载                  


  下载地址

         安装包解压后三个文件
-rw-r--r-- 1 zhangzhenhu  staff    19M 5 14 09:17 miwifi3-luci-tiger.tar   luci的安装包
-rw-r----- 1 zhangzhenhu  staff    32M 5  4 18:02miwifi_r3_all_55ac7_2.11.20.bin   小米的开发版固件用开开启ssh
-rw-r--r-- 1 zhangzhenhu  staff   795B 5 14 09:10 openssh.sh               开启ssh的一个脚本

         安装方法
1.   先开启ssh
a)      刷小米的开发版固件miwifi_r3_all_55ac7_2.11.20.bin
b)     如果你自己电脑是linux、mac、或者虚拟机linux,执行sh  ./openssh  ${ stok} ${newPwd}  ${ oldPwd}  ;是windows的话就用浏览器去一条条打开吧;如果你没看懂,按照这个教程来https://www.right.com.cn/forum/fo ... 51&orderby=dateline
c)      把miwifi3-luci-tiger.tar 拷贝到路由器的/data/目录下。不会?自己看论坛或者放弃吧,我太累了,不想解释了。
d)     解压miwifi3-luci-tiger.tar 执行命令tar –xf miwifi3-luci-tiger.tar
e)      cd  miwifi3-luci-tiger/ && sh -x   install.sh
f)       坏消息,这个安装脚本我没测试过,要测试我需要把我的路由器再刷回官方固件,完全重新来一遍,太累了,不搞了~~,你如果失败了找我,我再修正吧。

未完待续
        

后面我还在开展两条线,一条线是上面说的编译2.6.36的kmod模块;另一条线是openwrt15.05的版本添加小米路由3的支持,这样可以直接换了。目前两条线都没成功呢,熬夜好久了,不想搞了,太累了~~


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

生命在于折腾。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

楼主这么绕啊,就算cc适配了,MTK的无线也不咋样,再说nand识别也不难啊

点评

关键是我不懂、不会~~嵌入式我完全门外汉,最近两周才接触openwrt,毛都不会~~~  详情 回复 发表于 2016-5-14 11:49
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| | 显示全部楼层
血洗刀锋 发表于 2016-5-14 11:44
楼主这么绕啊,就算cc适配了,MTK的无线也不咋样,再说nand识别也不难啊

关键是我不懂、不会~~嵌入式我完全门外汉,最近两周才接触openwrt,毛都不会~~~
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

支持,但需要等到高考之后才能玩
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

期待楼主,此贴必火!!!
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

楼主,我要当你的小白。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

帖子给我们的小米路由3用户开辟了一个新的方法 虽然新买的路由3已经给SSH了(能力有限) 但还是不敢继续深入了 就是怕变成砖相信等不久的以后会有更好的开发资料
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

鼓励下楼主!!!
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

我有一个小米3路由,由于不能去广告而放着
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2024-4-27 01:36

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com 举报电话:0519-86695797

快速回复 返回顶部 返回列表