OpenWrt固件编译
编译OpenWrt需要Linux环境或mac环境,不支持Windows,如果要在Windows上开发,那么肯定是要装虚拟机的。(根据云隐技术7688开发板)
若不想折腾,下载虚拟机(vmdk格式,默认virtualbox,可能需要重新安装增强功能) Ubuntu14.04_X64.vmdk,虚拟机用户:openwrt, 密码:123456
Linux(建议使用Ubuntu14.04/16.04 32位/64位版本)
: 在Ubuntu18.04上编译将无法通过,所以推荐使用低版本编译
: 如果提示找不到openjdk-8-jdk,可以试试openjdk-7-jdk
编辑
1、安装依赖环境
Ubuntu
$ sudo apt-get update $ sudo apt-get install git g++ make libncurses5-dev subversion libssl-dev gawk libxml-parser-perl unzip wget python xz-utils vim zlibc zlib1g zlib1g-dev openjdk-7-jdk build-essential ccache gettext xsltproc
如果是64位,需要多操作如下步骤:
$ sudo dpkg --add-architecture i386 $ sudo apt-get update $ sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386
Macos
首先从APP Store中安装Xcode command line tools,再安装[brew]工具,接下来使用brew安装依赖:
$brew install coreutils findutils gawk gnu-getopt gnu-tar grep wget quilt xz
编译中极有可能碰到getopt和xgettext问题,碰到后做以下两步:
$ brew ln gnu-getopt --force $ ln -s /usr/local/Cellar/gettext/0.18.1.1/bin/xgettext xgettext
如果编译过程中有“date illegal option”错误,因为macos里默认的date不是GNU的date,参数有些差异,可以这样:
$ cd /usr/local/bin/ $ ln -s gdate date
重新打开终端后生效.
编辑
2、下载OpenWrt源码
$ git clone https://github.com/Ying-Yun/openwrt.git
Note:需准备12GB左右的空间,源码体积百兆左右,但是编译过程中会产生大量文件,会使文件夹体积非常大
编辑
3、更新OpenWrt源码
$ git pull
更新完后,由于本地编译环境有上次的残留,会造成异常,最好做如下清理工作(在OpenWrt源代码文件夹目录内):
$ make clean $ rm .config $ rm -r tmp/
编辑
4、更新并安装软件包
OpenWrt源码下载下来后,进入到OpenWrt源码目录,输入如下两个指令,更新OpenWrt所支持的软件包。
$ ./scripts/feeds update -a $ ./scripts/feeds install -a
Note:因为众所周知的原因,在国内编译OpenWrt很困难,有很多包被墙无法下载。 我们提供了一个dl镜像的地方,推荐如果编译过程中发现某些包找不到,那么就来GitHub - Torchwoods/dl: openWrt download files或者Index of /sources/找一下,下载后放到openwrt源码根目录中的dl文件夹内即可,减少编译时间。
编辑
5、硬件信息配置
在OpenWrt源码的顶层目录输入make menuconfig指令,对编译的信息进行配置
$ make menuconfig
目标配置:
TargetSystem -> Ralink RT288x/Rt3xxx Subtarget->MT7688 based boards Target Profile->XiaoYin0864
其他选项配置:
“Package the OpenWrt-base Toolchain”是为了有搭建交叉编译环境方便,不是必选的。 此外,勾选LuCI(网页形式的控制台)还是非常必要的。要勾选(前面出现*号):
LuCI→1.Collections→luci
别忘记勾选中文:
LuCI→2.Modules→Translations→Chinese(zh-cn)
最后Save,退出。
以上是基本的固件编译,如果需要其他功能,要再勾选或添加
Note: mt7688拥有两个版本,其不同之处在于内存和FLASH存储空间不同。
型号一:XiaoYin0864:8MB FLASH + 64MB RAM 型号二:XiaoYin1664:16MB FLASH + 64MB RAM 型号三:XiaoYin32128:32MB FLASH + 128MB RAM
编辑
6、固件编译
配置完成后,接着输入make V=s -j2指令,进行固件编译
$ make V=s -j8
V=s 代表显示编译信息,一定要勾选,否则出错的话无法看到错误信息。
-j8代表使用的CPU线程数量,例如4C8T的CPU可是使用8个线程提高速度,使用时有时会出错,可以改成-j1或者不加这个参数。
Node:其他make指令
-
make defconfig 运行该命令后,会将所有配置选项恢复到OpenWrt默认的时候
-
make clean 此命令将删除 bin 目录和 build_dir 等目录下所有的编译后产生的文件
-
make distclean 此命令会清除所有的编译文件和已经下载的软件包
-
make package/system/uci/clean V=s 编译指定的软件包
-
make download 下载使用到的软件包
编辑
7、固件
当OpenWrt编译完成后,生成的固件位于源码目录下的
bin/bin/ramips/openwrt-ramips-mt76x8-xxx-squashfs-sysupgrade.bin
编辑
U-Boot 编译
使用git工具下载u-boot-mt76x8源码
$ git clone https://github.com/Ying-Yun/u-boot-mt76x8.git
解压编译工具链到/opt/目录下
$ cd u-boot-mt76x8 $ sudo tar xvfj buildroot-gcc342.tar.bz2 -C /opt/
如果没有安装openjdk,则安装JDK,如果已经安装,则省略这个步骤。
$sudo apt-get install openjdk-7-jdk
进入u-boot-mt76x8源码
$ cd u-boot-mt76x8
进入到目录后,首先对u-boot进行配置,
$ make menuconfig
配置如下
NOTE:根据自己模块内存大小修改内存大小
配置完成后,进行编译
$ make clean $ make
编译完,生成到本目录下uboot.bin
$ ls uboot.bin
烧写到网关设备,界面如下所示: