无涯7688系统交叉编译过程

无涯7688固件完整编译过程

Posted by Les1ie on April 7, 2017

0x00 前言

前一个教程是针对普通的openwrt编译过程,这里是说明无涯7688板子的编译过程,福星老师告诉我这个板子没在OpenWrt官方支持列表里面到了…)
福星老师给了我一份无涯官方提供的修改过的以及他替我踩了坑修改了一部分的源代码,这个代码我没有上传,比较大,大家自己去找老师给的ftp网站里面。其他部分是一样的,可以参考看看。
另外,关于这一款路由器, 提供的很多东西都可以在github仓库这里面找到,多去翻翻总有好东西的。

0x01 配置

配置编译所需要基本环境。

$ sudo apt-get install gcc g++ binutils patch bzip2 flex bison make autoconf gettext texinfo unzip sharutils subversion libncurses5-dev ncurses-term zlib1g-dev libssl-dev -y

首先

$ make menuconfig

设置型号,效果如图。

make menuconfig 标题栏里面有说明如何操作,针对这一款板子,设置好之后如图: finsh menuconfig

接着更新 feeds

$ ./scripts/feeds update -a && ./scripts/feeds install -a

然后编辑文件,这里直接复制福星老师给我的笔记:

修改 BUILD_ROOT/feeds/linkit/mtk-linkit/Makefile  :
  DEPENDS:[email protected]_ramips_mt7688_LinkIt7688 \
  	+curl +coreutils +coreutils-stty \
	+luci +luci-theme-bootstrap \
	+cgi-io +kmod-fs-vfat +kmod-fs-exfat \
	+rpcd +rpcd-mod-iwinfo +rpcd-mod-rpcsys \
	+mtk-linkit-webui +mtk-sdk-wifi +tcpdump-mini 
#	+gdbserver +strace 
#	+kmod-sound-core +kmod-sound-mtk +madplay-alsa +alsa-utils \
#  	+avahi-nodbus-daemon +mountd +mjpg-streamer \
#	+uhttpd +git +git-http +samba36-server \
#	+python +python-pyserial +python-pip +hidapi \
#	+libmraa +libupm +node +node-hid +node-cylon-firmata +yunbridge \
#	+luci-app-mjpg-streamer +luci-app-samba +luci-lib-json \
#	+avrdude +spi-tools +uboot-envtools \
#	+kmod-i2c-core +kmod-i2c-ralink \
#	+kmod-nls-base +kmod-nls-cp437 +kmod-nls-iso8859-1 \
#	+kmod-nls-iso8859-15 +kmod-nls-iso8859-2 +kmod-nls-utf8 \
#	+kmod-sdhci-mt7620 +kmod-usb-storage \
#	+kmod-video-core +kmod-video-uvc 

接着再次

$ make menuconfig

添加需要的包,luci默认是英文的,可以进入luci > Modules > Translations > Chinese(zh-cn)添加中文支持,以及 Network > adblock 添加adb屏蔽广告。

接着提前下载无法下载的包

$ mkdir dl
$ cd dl
$ wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.18.44.tar.xz https://download.samba.org/pub/samba/stable/samba-3.6.25.tar.gz http://pkgs.fedoraproject.org/repo/pkgs/libconfuse/confuse-2.7.tar.gz/45932fdeeccbb9ef4228f1c1a25e9c8f/confuse-2.7.tar.gz https://www.kernel.org/pub/software/scm/git/git-2.3.5.tar.xz http://mirror.lihnidos.org/GNU/savannah/avrdude/avrdude-6.1.tar.gz
$ cd ..

打包备份,防止翻车

$ cd ..
$ tar -czf finish_config.tar.gz wooya7688
$ cd wooya7688

这样如果以后的步骤翻车了,只需要执行

$ tar -xzf finish_config.tar.gz

便回到了刚刚打包的时候的状态。

0x02 编译

建议开个 screen防止断线

$ screen -S openwrt

这样就算终端断开了,只需要执行

$ screen -dr openwrt

即可马上回到之前的状态,而编译不会中断。

开始编译过程,因为我使用的是某大神赞助的28核56线程的 E5 服务器,所以命令如下,普通的电脑编译的时候后面的数字跟你自己想使用的核心数量。

$ make -j 56

如果编译过程中出错了,运行

$ make V=s > t.log
$ egrep "tar.bz2|tar.gz|tar.xz"

error log是个很折磨的过程,所以这里先试试是不是有包下载不下来,如果是的话那么直接下载好了放到build_root/dl 目录里面,build_root是指你当前编译的根目录。

同时如果是多线程编译的话,有些文件会存在串行,部分依赖的文件尚未编译出来,这就导致编译失败,使用make V=s >t.log 可以让他单线程继续下去,同时保存输出的信息,这样可以解决一些问题,如果问题依然存在,这样可以有利于直接分析log。

0x03 刷机

将板子插到电脑上,电脑上进入 我的电脑 > 属性 > 设备管理 > 端口 如图所示, serial.png 如果显示没办法识别,那么右键选择更新驱动,稍后选在线更新。如果显示更新失败,可能是为了防止win10自己升级关掉了update 了,进services.msc 把update打开即可。

更新固件的方法有很多种,比如用luci web里面的页面升级固件,用ttl 在uboot的管理界面刷固件,这里我用的是板子提供的最简单的一种方法,用uboot提供的web界面更新固件。

进入xshell, 新建 serial协议连接,然后 连接 > serial, port 设置为在管理里面看到的,比如 com4, 然后 Baud Rate 设置为 57600, Data bits 设置为8, stop bits设置为1, parity Flow Control都是 None, 确定即可。

如果使用Putty,则只需要选择 serial, 端口输入你在设备管理里面看到的端口号就行了,其他的不用修改。

将串口线插在板子上,连接电脑,未插电源的时候就会显示 connected 表示连接正常,然后接上板子电源,串口即看到启动信息。

刷固件的时候, 接上板子电源,网线插在中间的那个插孔。看到tty里面显示倒计时的时候,在数到3-6的时候,按住板子上 WPS按键不放,然后会进入到 http模式,同时会显示监听的ip地址,把电脑的ip 地址改为同网段的,访问即可。

比如他监听在 10.10.10.2这个网址,那我可以把我自己的ip改成 10.10.10.10 ,然后访问会出现一个web页面,选择本地编译好的文件上传即可,注意过程中板子不要掉电了,稍等片刻会自动重启。

0x04 登录

刷好系统之后,在tty里面,输入

$ passwd root

修改用户密码,然后把网线插到板子边沿那个插孔,windows里面使用 arp -a查看ip地址,看到的内网地址都试试,应该就能登录了。进去的第一个界面,点击下面的openwrt 就进入到了openwrt 的操作系统。

附上效果图: 以及

0x05 后续

整个编译到刷机的工作差不多就到这里结束了, 感谢福星老师给我的耐心讲解,回答我各种智障的问题 :)

后面有机会的话加上编译添加自定义软件包和串口如何使用 (等我学会了再说…)