OpenWrt/LEDE 编译手记

这里是我编译 OpenWrt/LEDE 遇到的一些问题和坑的记录,方便下次编译的时候直接复制用。也可以当作是一篇从零开始的 OpenWrt 编译教程。

由于 OpenWrt 和 LEDE 又合并回去了,所以下面统称为 OpenWrt 。

目前在弄的两个路由器

TP-Link WR740N v5 CN

Youhua WR1200JS

基本参数:

CPU:AR9331 ROM:硬改8M RAM:硬改64M 外部接口:5x100M;1个按钮

笔记:

基本上 CPU 内建了所有东西,高通的 U 也很好驱动。 CN 版本的 V5 和其他地区的版本不同,用 OpenWrt 官方的机型数据会导致 wan 和 lan 反转,问题不大。

Youhua WR1200JS

基本参数:

CPU:MT7621AT(2C4T) ROM:16M RAM:128M Radio:MT7603EN(2.4G)+ MT7612EN(5G) 外部接口:5x1000M;USB2.0;3个按钮

笔记:

性价比不错的一台路由器,可以专门写一篇文章介绍一下。

从头开始

从 OpenWrt 的 GitHub 仓库克隆代码 git clone https://github.com/openwrt/openwrt.git 既然要编译那就编译 Snapshot 吧,当然如果想要编译 17.01 稳定版的话就 checkout 到那个分支就好了。

git checkout LEDE-17.01

  下载完代码之后获取一下源里的软件包。 ./scripts/feeds update -a ./scripts/feeds install -a 这样子就能得到官方源里面所有的包了。 顺带一提,默认的软件源在 feeds.conf.default 里面。   接下来使用 menuconfig 来图形化编辑 .config 文件。 make menuconfig 简单操作方法,按 Y 编译到固件,按 M 编译出 ipk 文件但不默认安装,N 取消编译模块。 在里面选择好自己的机型之后,选择一下 LuCI base 就可以测试编译第一个包了。 Save 一下之后退出 menuconfig 。   运行命令即可开始第一次编译。 make V=99 V=99 代表输出所有的调试信息,到时候如果到哪里出错了的话可以方便看到。 首次编译需要下载大量数据,加上下载可能要耗费上小时的时间。之后的编译就快多了,开上多线程几分钟就能完成编译。 当然你也可以用下面的命令来只下载依赖,不进行正式的编译。 make download 编译完成后你可以在 bin 目录下找到你对应的刷机包,以及 ipk 软件包。根据机型和平台的不同,编译生成的文件和目录也各不相同,找到眼熟的文件就对了。通常使用 sysupgrade 的刷机包。 接下来才是这篇文章的主要内容,可能会花费很长时间来写,遇到什么问题我就来记录一下。

定制 ROM

macvlan

单线多拨必备的包,macvlan 以及它的 luci 界面 luci-app-macvlan。 luci 界面没有在官方源提供,可以在此处获取:https://github.com/wongsyrone/luci-1

MT7621 的 32M SPI patch:

已经进入官方源,所以snapshot版直接编译就行。

FULLCONE NAT:

依赖 : https://github.com/LGA1150/openwrt-fullconenat Patch: https://github.com/LGA1150/fullconenat-fw3-patch  

编译途中遇到的内核版本不匹配

Collected errors:
* satisfy_dependencies_for: Cannot satisfy the following dependencies for kmod-*****:
* kernel (= 4.14.111-1-******)

先清理一下已经编译的内核再重新编译 make target/linux/clean