软路由OpenWRT(LEDE)自己编译教程记录

最近博主买了一个小工控机,开始玩软路由,顺便将我的经历记录下来,分享给后人避免我走过的坑,本篇文章主要写自己编译OpenWRT(LEDE),后面我还会写一个 利用 Github 的 Actions Workflows 进行自动化的编译教程和 x86 软路由系统安装的教程。

先展示一下我的硬件,是从咸鱼上收的一台工控机,并没有任何品牌,J1900 的 CPU,板载 4G 内存,硬盘是个 32G 的 msata 硬盘,双网口,就是下面的小家伙:

IMG_2992 copy.jpg

软路由系统

说到为什么要玩软路由,除了硬件性能以外,必须得是丰富的插件,让路由器有丰富的功能,软件才是软路由的灵魂!现在软路由系统主流的分为两大派:爱快和OpenWRT,爱快网络速度更快限流比较好,OpenWRT插件多功能多,有的人两个都装了,我只装了一个OpenWRT,因为我不用限流也没有多 WAN 口多加运营商接入。

OpenWRT和LEDE

在2016年,从 OpenWRT 中分离出一个分支子项目 LEDE,2018年又合并回 OpenWRT,现在基本没啥区别,所以不用纠结 LEDE 不是纯正的 OpenWRT。

我选用了 Lean 的 LEDE,也就是网上常说的 L大 的项目,里面加入了很多功能和插件,更适合中国人使用,Lean 的 LEDE 仓库地址:https://github.com/coolsnowwolf/lede

修改源码与订阅

既然选择了自己编译,肯定要进行 DIY 定制,在里面加入自己想要的功能,所以我 Fork 了 Lean 的仓库到我自己的:https://github.com/renfei/lede,然后添加自己想要的插件源代码,因为有一些插件是无法在国内公开的,所以需要自己找然后自己加进去再编译,有两种方式:

  • 使用 feeds.conf.default 文件订阅别人的仓库,这个最方便,每次编译时就会去拉取订阅的仓库最新的代码进行编译。

  • 在文件夹 package 中加入源代码,例如 package/lean 里面就是各种插件的源代码。

根据自己的需要添加和修改一些插件,就形成了属于你的软路由系统。

编译环境准备

首先,在编译过程中会下载境外的代码仓库,所以你懂得,我选择了新加坡的服务器,因为编译时间非常长,需要几个小时,所以我选择购买新加坡的服务器进行编译,这样会快一些,并且不会因为网络问题导致依赖下载失败编译出错。服务器我选择了4核心8G内存,硬盘选择了50G容量,内存过小或硬盘过小也会导致编译失败,下面就是我购买的服务器:

WX20210706-222652.png

其次,操作系统要选择 Linux,推荐 Ubuntu 20.04 LTS x64,我也是用这个操作系统演示的。

开始编译

注意事项:要使用普通用户执行,不要使用 root 账户!否则会出现异常和失败。

首先我们需要更新和安装依赖的环境,使用如下命令:

sudo apt-get update sudo apt-get -y install build-essential asciidoc binutils bzip2 gawk gettext git libncurses5-dev libz-dev patch python3 python2.7 unzip zlib1g-dev lib32gcc1 libc6-dev-i386 subversion flex uglifyjs git-core gcc-multilib p7zip p7zip-full msmtp libssl-dev texinfo libglib2.0-dev xmlto qemu-utils upx libelf-dev autoconf automake libtool autopoint device-tree-compiler g++-multilib antlr3 gperf wget curl swig rsync

Screen Shot 2021-07-06 at 22.04.05.png

Screen Shot 2021-07-06 at 22.04.20.png

然后克隆我们的项目,使用如下命令:

git clone https://github.com/coolsnowwolf/lede

克隆以后,我们进入项目:

cd lede

然后执行订阅的更新与安装,使用如下命令:

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

Screen Shot 2021-07-06 at 22.06.07.png

使用下面的命令生成默认的配置文件:

make defconfig

Screen Shot 2021-07-06 at 22.09.30.png

使用下面的命令进入图形化配置:

make menuconfig
  • Target System:编译目标的架构,我这里编译的是 x86 架构的,你需要选择你自己的。

  • Subtarget:编译目标架构的子级,因为同一个架构还对应很多子级,比如我这里是 x86/64 ,x86架构64位的。

最主要的是 LuCI,我们进这里面选择要编译的插件

Screen Shot 2021-07-06 at 22.11.21.png

然后进入 Application,这里面就是插件了

Screen Shot 2021-07-06 at 22.11.28.png

我们看到插件前面有个尖括号,里面是星号<*>的就是直接编译进系统,如果是大写字母<M>的就是只编译成ipk包而不直接编译进系统,这个根据自己的想法选择。如果想直接编译进系统就按字母 y 选择成星号<*>,如果只编译成ipk包就按字母 m 选择成大写字母<M>,再按一遍就是取消选择。

Screen Shot 2021-07-06 at 22.11.39.png

这里有个大坑,最好不要无脑全选,因为有的插件相互依赖,有的相互排斥,全选必定编译失败,直选你需要的就好,不要贪心哦。

然后使用左右键选择<Save>,再回车,保存 .config 配置文件,再选择 <Exit> 一路退出到黑屏界面。

Screen Shot 2021-07-06 at 22.15.57.png

执行下面的命令开始下载依赖:

make -j8 download V=s

Screen Shot 2021-07-06 at 22.16.12.png

这里就体现出境外服务器的好处了,下载又快又不会失败,这步需要一些时间,不要退出或关闭命令行界面,否则就会停止,如果担心中途会断开,我们可以使用下面的命令让他后台运行:

nohup make -j8 download V=s > make.log & tail -f make.log

等日志不再滚动,我们就可以执行编译了,编译这一步需要好几个小时,所以必须得后台运行,并且建议单线程编译,所以是 -j1,命令如下:

nohup make -j1 V=s > make.log & tail -f make.log

Screen Shot 2021-07-06 at 22.45.07.png

经过N个小时的等待,日志不再滚动,我们就编译完成了,编译结果在 bin/targets 下面,我编译的是 x86_64 的所以编译好的系统文件路径是 bin/targets/x86/64,里面有多种格式。

编译好的插件包在 bin/packages 下面,我编译的是 x86_64 的所以编译好的系统文件路径是 bin/packages/x86_64,里面就是我们订阅的插件库,编译好的 ipk 包了。

Screen Shot 2021-07-07 at 13.31.21.png

原文链接:https://www.renfei.net/posts/1003503

© 版权声明
THE END
喜欢就支持一下吧
点赞5 分享