最近,买了台Newifi D2,看到商家刷写的Openwrt里面有很多我用不到的功能,于是想自己编译一个最纯净的Openwrt
1.开始之前
请注意:下载源码和编译必须在普通用户模式下进行,否则会出现一些乱七八糟的错误(如下图)
2.环境搭建
我们需要安装Ubuntu系统(我选择的是18.04版本的,安装系统过程就不演示了,如果实在不会就百度一下Ubuntu安装教程就好了)
安装好系统后,我们需要安装依赖(注意:我在编译前安装了很多依赖,我也记不清了,不过以下大致就是我安装的)
[bash] sudo apt-get update//更新 sudo apt-get install git-core g++ libncurses5-dev zlib1g-dev bison flex unzip autoconf gawk make gettext gcc binutils patch bzip2 libz-dev asciidoc subversion build-essential mercurial -y sudo apt-get install build-essential subversion asciidoc libz-dev bzip2 patch binutils gcc gettext gawk make autoconf unzip flex bison zlib1g-dev libncurses5-dev g++ git-core mercurial -y sudo apt-get install subversion build-essential libncurses5-dev zlib1g-dev gawk git ccache gettext libssl-dev xsltproc -y [/bash]
安装这些工具和依赖大约需要20分钟,等待完成后,进行OpenWrt源码下载。
我提供2个下载方式,一个是Openwrt官方的Github地址,一个是我翻.墙Git下来的(不翻.墙速度太慢了,要好几天)
[bash] git clone https://github.com/openwrt/openwrt.git #官方Github git clone https://gitee.com/mr-wu-code/openwrt #个人克隆的Git仓库 [/bash]
更新和安装相关feeds(大约10分钟)
[bash] #如果我的目录和你的目录不同,记得改 cd openwrt #进入到目录 ./scripts/feeds update -a ./scripts/feeds install -a #如果出现权限不够错误,请回退到上一级目录,输入 chmod -Rf 777 openwrt #cd回到openwrt目录后,ls目录看看,是不是像下面全绿,是的话重新执行上面的命令 [/bash]
3.配置和编译
运行以下命令打开配置菜单
[bash]make menuconfig [/bash]
[text] Target System - 选择你的CPU类型 Subtarget - 好像是MediaTek的CPU选择更细的CPU型号,其他CPU是选择更细的闪存,如果你的机型在支持列表里面,Target System选对了,但是Target Profile里面没有,可以试试修改这个选项(个人经验,不知对错) Target Profile - 选择你的具体机型(如果没有的话就选一个和你的路由器配置最相似的,CPU一样的) 回车按一下[X]表示已经选择了 LuCI —> 1. Collections —> luci………………. LuCIinterface with Uhttpd as Webserver (default) LuCI —> 2. Modules —> Translations —> Chinese (zh-cn) 空格按一下[M]表示编译但是不写入bin包,空格按两下[*]表示编译并且编译进包 这只是最基础的包,其他自己选择 [/text]
完成后,保存退出
输入[bash] make V=99 [/bash]开始编译
首次编译不建议使用V=99 -j3,因为出错不好排查
首次编译大约12小时,第二次编译只需30分钟左右 (如果编译失败,一般是包下载失败,你翻一下打印输出,把下载失败的包想办法下载下来放到dl目录即可)
开始编译啦~~
编译到一半可能会出现 u-boot-2019.07.tar.bz2 下载404,我也不知道为什么会404,到 网页链接 下载下来,复制到openwrt/dl目录,然后重新make V=99开始编译
如果出现这样,说明你编译成功了,刷到你的路由器上试试吧!
编译完成后,文件在/bin/targets/ramips/mt7620/中哦!(具体目录自己看,这只是mt7620的目录