在Fedora23上编译newifi mini可用的OpenWRT 15.05/trunk固件

2016-03-27 02-32-01 的屏幕截图

最近听了一个段子,关于各个发行版之间的评价:

CentOS活在十年前,Debian五年前,Ubuntu一年前,Arch代表现在,Fedora代表未来。于是我就删掉了Ubuntu15.10换了一套Fedora23(反正是虚拟机233)。

的确是挺不错的,仓库东西比较新不说,内置了open-vm-tools(vmware虚拟机用来在主机和虚拟机中拖拽文件/自动调整分辨率一类操作的内核插件)就感觉很爽。在Ubuntu里折腾了几次,然而有一个虚拟机因为不知名的原因无论如何都安装不上。

既然换了发行版,那编译openwrt的操作自然也要扔过来了。然而在Fedora23里编译OpenWRT坑也不少……

newifi mini (Lenovo Y1)作为国产路由器里相当良心的一款产品,同配置同价格信号甩了小米路由器mini好几条街(据同时拥有小米路由器mini和newifi mini的朋友如是说),然而网上也没有什么关于newifi的资料,联想的newbandeng论坛上除了openwrt国内分支pandorabox外也就是几个华硕机器固件的Port,然而事实是,openwrt的设备库里的确是有newifi mini的。

首先来说一下Fedora23中的配置吧,由于OpenWRT官方的wiki年久失修,导致在准备时就走了不少弯路。

这里把需要的组件列出:

sudo dnf install asciidoc bash bc binutils bzip2 cmake flex git gcc-c++ gcc util-linux gawk gtk2-devel intltool zlib-devel mercurial hg make genisoimage ncurses-devel openssl-devel patch perl-ExtUtils-MakeMaker python-devel rsync ruby sdcc svn unzip wget gettext libxslt zlib-devel zlib-static boost-jam boost perl-XML-Parser libusb-devel dev86 sharutils java-1.8.0-openjdk-devel b43-fwcutter zip

其中有几项需要说明的是:

GNU c++在wiki中列出的包名为sys-devel,实际为gcc-c++

jdk在wiki中列出的是java-1.7.0-openjdk-devel,实际上已经更新到1.8.0,不排除未来继续更新的可能,现在如果使用1.7.0安装会提示找不到包

最重要的cmake交叉编译工具wiki里没提,Fedora23里也没内置……导致前几次各种出错,安装cmake之后也需要删除掉 ./build_dir/host 下的cmake文件夹在重新编译才可以恢复正常

2016-03-27 03-00-50 的屏幕截图

其它还有一些依赖没有默认集成在系统中,至于具体是什么,在编译什么东西出错的时候基本就是那个东西丢了没跑了……

依赖准备的差不多了,就可以把openwrt的git给clone下来了。需要说明的是,newifi mini的配置文件目前只存在于14.07版本的库中,trunk和15.05中都没有,所以我们需要git clone掉14.07的源:

git clone git://git.openwrt.org/14.07/openwrt.git

(2016-04-09更正:newifi的模板存在于openwrt官方库中,所以可以直接拉取)

最新trunk(目前是15.05.1)源:

git clone git://git.openwrt.org/openwrt.git

或者选择15.05正式版源:

git clone git://git.openwrt.org/15.05/openwrt.git

哦对了,注意要在非root用户下进行操作,如果有网络不畅的可以考虑使用shadowsocks+proxychains来进行流量代理,具体的使用方法可以参考之前的文章:https://mirrochou.com/2016/03/building-openwrt-is-so-kengdieable/ 不过需要说明的是,在Fedora仓库中收录的proxychains版本已经变成了4.11,启动语句从proxychains变为了proxychains4,conf文件位置未变,嫌麻烦的可以自己在/usr/bin里做个软链(这个还是MikeLei教我的脑洞)。

克隆完以后进入目录

cd openwrt

更新一下软件包

./scripts/feeds update -a

./scripts/feeds install -a

可选:想要使用shadowsocksR-libev的话:

./scripts/feeds uninstall shadowsocks-libev

cd package

git clone https://github.com/breakwa11/shadowsocks-libev

然后返回openwrt主目录

cd ~/openwrt  #假设openwrt文件夹在/home/username 下的情况下

然后启动配置界面就可以了

make menuconfig

进入之后,Target System选择 Ralink RT288x/RT3xxx ,Subtarget或者Target Profile选择MT7620a based boards(14.07版本中)/MT7620(15.05和trunk中),Target Images只保留 squashfs 即可。

其他的操作就和正常的编译一样,选好包,保存配置,make V=s 即可(我喜欢看过程,主要是我家网不好,出错以后可以看看是其他问题还是软件包下载失败……

到这里为止,好吧,我没有选任何和newifi有关的设置,因为newifi的确不在make menuconfig的Target Profile选项中

2016-04-09 14-06-31 的屏幕截图

不过我没有坑人,因为编译完之后……在 ./bin/ramips 目录下会出现N多的bin文件,其中就包括Lenovo Y1(newifi mini)以及Lenovo Y1s(newifi)的,当然也少不了Xiaomi Miwifi mini和Hiwifi……

注意接近尾声的时候因为一个叫做ex2700的硬件的模板丢失,所以需要把编译参数改为 make -i 继续编译

2016-04-09 14-17-00 的屏幕截图

不过产出的镜像只有sysupgrade的,并没有factory的,不过想想小云固件本来就是个openwrt based firmware,直接进入网页上传固件吧。

发表评论

%d 博主赞过: