软路由 OpenWRT(LEDE)自己编译教程记录
2021年07月08日 17:05:31 · 本文共 2,251 字阅读时间约 8分钟 · 20,150 次浏览最近博主买了一个小工控机,开始玩软路由,顺便将我的经历记录下来,分享给后人避免我走过的坑,本篇文章主要写自己编译OpenWRT(LEDE),后面我还会写一个 利用 Github 的 Actions Workflows 进行自动化的编译教程和 x86 软路由系统安装的教程。
先展示一下我的硬件,是从咸鱼上收的一台工控机,并没有任何品牌,J1900 的 CPU,板载 4G 内存,硬盘是个 32G 的 msata 硬盘,双网口,就是下面的小家伙:
软路由系统
说到为什么要玩软路由,除了硬件性能以外,必须得是丰富的插件,让路由器有丰富的功能,软件才是软路由的灵魂!现在软路由系统主流的分为两大派:爱快和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容量,内存过小或硬盘过小也会导致编译失败,下面就是我购买的服务器:
其次,操作系统要选择 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
然后克隆我们的项目,使用如下命令:
git clone https://github.com/coolsnowwolf/lede
克隆以后,我们进入项目:
cd lede
然后执行订阅的更新与安装,使用如下命令:
./scripts/feeds update -a && ./scripts/feeds install -a
使用下面的命令生成默认的配置文件:
make defconfig
使用下面的命令进入图形化配置:
make menuconfig
Target System:编译目标的架构,我这里编译的是 x86 架构的,你需要选择你自己的。
Subtarget:编译目标架构的子级,因为同一个架构还对应很多子级,比如我这里是 x86/64 ,x86架构64位的。
最主要的是 LuCI,我们进这里面选择要编译的插件
然后进入 Application,这里面就是插件了
我们看到插件前面有个尖括号,里面是星号<*>的就是直接编译进系统,如果是大写字母<M>的就是只编译成ipk包而不直接编译进系统,这个根据自己的想法选择。如果想直接编译进系统就按字母 y 选择成星号<*>,如果只编译成ipk包就按字母 m 选择成大写字母<M>,再按一遍就是取消选择。
这里有个大坑,最好不要无脑全选,因为有的插件相互依赖,有的相互排斥,全选必定编译失败,直选你需要的就好,不要贪心哦。
然后使用左右键选择<Save>,再回车,保存 .config 配置文件,再选择 <Exit> 一路退出到黑屏界面。
执行下面的命令开始下载依赖:
make -j8 download V=s
这里就体现出境外服务器的好处了,下载又快又不会失败,这步需要一些时间,不要退出或关闭命令行界面,否则就会停止,如果担心中途会断开,我们可以使用下面的命令让他后台运行:
nohup make -j8 download V=s > make.log & tail -f make.log
等日志不再滚动,我们就可以执行编译了,编译这一步需要好几个小时,所以必须得后台运行,并且建议单线程编译,所以是 -j1,命令如下:
nohup make -j1 V=s > make.log & tail -f make.log
经过N个小时的等待,日志不再滚动,我们就编译完成了,编译结果在 bin/targets 下面,我编译的是 x86_64 的所以编译好的系统文件路径是 bin/targets/x86/64,里面有多种格式。
编译好的插件包在 bin/packages 下面,我编译的是 x86_64 的所以编译好的系统文件路径是 bin/packages/x86_64,里面就是我们订阅的插件库,编译好的 ipk 包了。
版权声明:本文为博主「任霏」原创文章,遵循 CC BY-NC-SA 4.0 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.renfei.net/posts/1003503
相关推荐
猜你还喜欢这些内容,不妨试试阅读一下以下内容均由网友提交发布,版权与真实性无法查证,请自行辨别。
- 前后端分离项目接口数据加密的秘钥交换逻辑(RSA、AES)
- OmniGraffle 激活/破解 密钥/密匙/Key/License
- Redis 未授权访问漏洞分析 cleanfda 脚本复现漏洞挖矿
- CleanMyMac X 破解版 [TNT] 4.6.0
- OmniPlan 激活/破解 密钥/密匙/Key/License
- 人大金仓 KingbaseES V8 R3 安装包、驱动包和 License 下载地址
- Parallels Desktop For Mac 16.0.1.48911 破解版 [TNT]
- Parallels Desktop For Mac 15.1.4.47270 破解版 [TNT]
- Sound Control 破解版 2.4.2
- CleanMyMac X 破解版 [TNT] 4.6.5
- 博客完全迁移上阿里云,我所使用的阿里云架构
- 微软确认Windows 10存在bug 部分电脑升级后被冻结
- 大佬们在说的AQS,到底啥是个AQS(AbstractQueuedSynchronizer)同步队列
- 比特币(BTC)钱包客户端区块链数据同步慢,区块链数据离线下载
- Java中说的CAS(compare and swap)是个啥
- 小心免费主题!那些WordPress主题后门,一招拥有管理员权限
- 强烈谴责[wamae.win]恶意反向代理我站并篡改我站网页
- 讨论下Java中的volatile和JMM(Java Memory Model)Java内存模型
- 新版个人网站 NEILREN4J 上线并开源程序源码
- 我站近期遭受到恶意不友好访问攻击公告