• 因为软件性质,经常失效,希望大家发现后告知本站更新,谢谢,您的一个建议,方便你我他
  • 欢迎访问二次元软件世界,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入我们 QQ群
  • 本站提供最常用软件的绿色免安装版,让您免去碎片化的干扰,一站式服务平台
  • 绿色软件中心提拱海量免费软件安全下载,全部软件都已经过安全杀毒检测。手机、电脑版应用软件大全,最新最快速的软件下载中心
  • 本站提供WIN7、WIN10以及Linux系统等系统下载,并且有详细的系统安装教程,让系统安装不那么神秘
  • 站在技术前沿,用朴实的语言描述神秘的黑科技,让科技不再黑
  • 我们还提供网络建站和网站优化服务哦!!!
  • 本站本着方便你我他的原则,正在陆续去掉提取码,如果有连接失效,麻烦告知一下

OpenWRT原版编译小白教程

Linux专区 2周前 (04-20) 73次浏览 0个评论 扫描二维码

一直以来,路由器就是大家印象中的路由器,就是那个样子,那个功能,不过最近几年随着科技的发展,软路由开始走进大众的视线,什么是软路由呢,说的直白一些就是电脑上装上路由系统就是软路由了,是不是非常的简单粗暴,确实软路由就是这么的给力,相比于那普通路由器的长年8M内存,电脑的配置就高多了,2G内存都是起步价,配置高的更是上不封顶了,更有着系统随便装等优点,一些路由系统开始露出狰狞的面目,颠覆了路由器的固有概念,其中更有ROS、爱快、Openwrt等各种非常优秀的路由系统,这三种只是常见的三种,还有几个非常不错的,不过用的玩家比较少就是了,最早使用软路由的行业其实是网吧,还记得网吧打出的双线接入,或者三线接入吗,那就是软路由的功能了,虽然有些企业路由也有多WAN口的,但动辄大几百几千的投入来说,那就有些得不偿失了,而且性能还弱的够爆。上面我们说了三种常见的路由系统,其中ROS也是最接近原生路由系统的,界面简陋,配置复杂,上手难度有些高,功能就是纯粹的上网等功能,但是真的很稳,说不定你的小区就是用的这个系统,爱快是我们国人开发的,界面更简单,符合国人的习惯,功能也是围绕上网为主,主打的就是七级智能流控,当然因为是公司行为,都是合规合法的功能,最早只有路由系统,后来也做硬件网络设备了,名字也叫爱快,各大平台也都有卖,配置可以,就是价格略高,总体而言实力还是很强大的,Openwrt路由系统是开源的,几乎是每个玩家必备,也是网虫最大的聚集地,因为openwrt有着无限可能,比如我们常用的kms、小型nas、网盘管理工具小雅alist、广告过滤、魔法上网等,无数大神为此奉献着,如果我们用的是常见的设备,那么我们在网上可以找到很多合适我们设备的最新固件,如果是比较冷门的设备,就需要我们自己动手去编译了,所以这篇文章适合想动手为自己编译合适自己固件的网友,好了,教程开始…

作为技术爱好者,对定制镜像的需求是一直存在的,毕竟从安全上考虑,我们的网络数据都是要通过路由的,如果有人动了手脚,在系统里面放了后门,那么我们的隐私就没有保障了,这点用过爱快的应该深有体会,爱快的流控可以清晰的分辨出你正在浏览什么,在看什么电视,有什么网络行为,还有就是从稳定性上来说,别人分享的固件,是用来适配他自己的设备,就算你的设备和他的型号一样,不同批次的设备,硬件都很有可能不一样,特别是像外贸电视盒子,这种问题很常见。我们使用opengwrt,就是为了实现一些想要的功能,自己编译,能很好的使插件和系统更好的兼容,同时想要什么功能就集成什么插件,不过度的集成插件,确保系统的稳定。尤其是passwall等更新频率比较高的应用,因为大家下载的镜像内核版本不一,导致这些应用更新成功率较低,自己编译一个openwrt镜像成了一个不错的选择。

因为openwrt是开源的,所以有很多大神都在开发,我们这里推荐四位大神的源码,各有各的特点,大家可以自由选择,这里我们用LEDE大神的为例,其他的都一样

恩山论坛大佬Lean的LEDE定制灵活性很强,也是用的最多的。
ImmortalWrt是OpenWrt的一个分支,移植了更多的软件包,支持了更多的设备,更好的性能,并为中国大陆用户进行了特殊的优化。
lienol 集成的软件少,源码改动少,使用起来稳定性更强!紧跟官方版本进行更新,安装了差不多的插件lienol编译出来的固件体积比其它他人的的要小好多!有动手能力的推荐自己编译这个固件使用
iStoreOS純小白推荐使用,看名字就知道这个openwrt想做成成熟的OS,无脑操作,界面是openwrt中最漂亮的,下载使用即可,最大的亮点还提供了软件中心:iStore,尽可能解决插件之间的依赖关系,可以一键安装插件。

准备环境

首先,确保你的计算机满足以下要求(这里推荐使用虚拟机软件VMware或Virtualbox):

  • 最重要的是你的心态,编译过程复杂且枯燥,失败的几率很高,遇到的报错千奇百怪,一定要平常心,不要心急,遇到什么问题解决什么问题,一步一步的走
  • 操作系统:Linux(建议使用Ubuntu 22.04.2或Debian11)
  • 至少30GB的硬盘空间(推荐50GB甚至更大)
  • 至少4GB的RAM
  • 全局科学上网(中国大陆)不具备条件的朋友,可以选择购买海外云服务器,进行云端编译。

步骤1:安装依赖

sudo apt update -y
sudo apt full-upgrade -y
sudo apt install -y ack antlr3 asciidoc autoconf automake autopoint binutils bison build-essential 
bzip2 ccache cmake cpio curl device-tree-compiler fastjar flex gawk gettext gcc-multilib g++-multilib 
git gperf haveged help2man intltool libc6-dev-i386 libelf-dev libglib2.0-dev libgmp3-dev libltdl-dev 
libmpc-dev libmpfr-dev libncurses5-dev libncursesw5-dev libreadline-dev libssl-dev libtool lrzsz 
mkisofs msmtp nano ninja-build p7zip p7zip-full patch pkgconf python2.7 python3 python3-pyelftools 
libpython3-dev qemu-utils rsync scons squashfs-tools subversion swig texinfo uglifyjs upx-ucl unzip 
vim wget xmlto xxd zlib1g-dev

步骤2:获取OpenWrt源代码

我这里使用的是Lede的源码仓库

使用以下命令,将lede源码库克隆到本地,并进入源码目录。(不要使用root用户!!!不要使用root用户!!!不要使用root用户!!!)

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

因为原仓库里的插件太少,不够使用。在这里,我们再添加一个仓库。

sed -i '1i src-git kenzo https://github.com/kenzok8/openwrt-packages' feeds.conf.default
sed -i '2i src-git small https://github.com/kenzok8/small' feeds.conf.default
./scripts/feeds update -a && rm -rf feeds/luci/applications/luci-app-mosdns
rm -rf feeds/packages/net/{alist,adguardhome,mosdns,xray*,v2ray*,v2ray*,sing*,smartdns}
rm -rf feeds/packages/utils/v2dat
rm -rf feeds/packages/lang/golang
git clone https://github.com/kenzok8/golang feeds/packages/lang/golang
./scripts/feeds install -a 
make menuconfig

通常我们添加这两条就够了,如果需要再根据需要添加其他的软件包,上面的是一键命令(防止插件冲突,删除重复),根据自己的需要进行操作

获取并更新最新源码

git pull
./scripts/feeds update -a
./scripts/feeds install -a

如果遇到报错,可尝试使用下面命令修复

./scripts/feeds update -i -f
./scripts/feeds install -a -f

步骤3:配置编译选项

make menuconfig

OpenWRT原版编译小白教程

以下是menuconfig页面中各选项的说明:

  1. Target System:选择你的设备所使用的处理器架构。
  2. Subtarget:根据设备的详细型号,选择相应的子目标。
  3. :选择你的设备型号。这会自动设置与设备兼容的预设选项。
  4. Target Images:选择生成的固件类型,例如:squashfsext4等。
  5. Global build settings:配置全局编译设置,例如:启用/禁用软件包的签名检查、IPv6支持等。
  6. Advanced configuration options (for developers):高级配置选项(适用于开发人员)
  7. Build the OpenWrt Image Builder :构建OpenWrt图像生成器
  8. Build the OpenWrt SDK :构建OpenWrt SDK
  9. Package the OpenWrt-based Toolchain: 打包基于OpenWrt的工具链
  10. Image configuration:图像配置
  11. Base system:选择基本系统组件,例如:网络配置、系统日志、防火墙等。
  12. Administration :管理
  13. Boot Loaders —> 引导加载程序
  14. Development —> 开发
  15. Extra packages:选择额外的软件包,如:文件系统支持、VPN、代理等。
  16. Firmware —>固件
  17. Fonts —>字体
  18. Kernel modules:选择内核模块,如:支持的硬件设备、文件系统、网络协议等。
  19. Libraries —> 图书馆
  20. LuCI:选择Web界面组件,包括主题、应用、协议支持等。
  21. Languages:选择系统支持的语言包。
  22. Libraries:选择编译时需要的库文件,如:加密库、数据库库等。
  23. Utilities:选择实用工具,如:文件管理器、终端模拟器、脚本语言支持等。
  24. Mail —> 邮件
  25. Multimedia —>多媒体
  26. Network —>网络
  27. Sound —> 声音
  28. Utilities —>实用程序
  29. Xorg —>Xorg

根据你的设备型号和需求进行配置,在配置过程中要注意不要选择有冲突的软件包。配置完成后,保存并退出。我们常用的就这么几个Target System选择我们的设备类型,Target System选择我们的设备型号,然后就是openwrt的灵魂LuCI了,我们需要的大部分功能都在这里面设置,这里我们可以参考我之前的文章openwrt常用插件列表中英文对照表进行设置

  • 菜单选项
    • [] 空的,不安装
    • [M] 仅编译,不安装项(可以在部署完成后手动安装以降低固件大小)
    • [*] 即为编译并安装

步骤4:下载 dl 库,编译固件 (-j 后面是线程数,第一次编译推荐用单线程)

make download -j8

这一步非常关键。如果您在执行这个命令的过程中出现报错,请多次执行命令。如还是报错,请检查您的网络。如果你忽略了这一步中的错误,那么在编译过程中很可能因缺失依赖而报错。

开始编译

make V=s -j1

PS:

+ -j8: 为线程数,推荐第一次使用单线程编译,否则你编译错误,连调试信息都没有,根本不知道哪里错的。
+ V=s: 为故障排除目的提供更详细的信息

步骤5:获取编译好的固件

编译完成后输出路径:bin/targets(lede目录下)

二次编译:

cd lede
git pull
./scripts/feeds update -a
./scripts/feeds install -a
make defconfig
make download -j8
make V=s -j$(nproc)

如果需要重新配置:

rm -rf ./tmp && rm -rf .config
make menuconfig
make V=s -j$(nproc)

PS:

  • 如果源码没有变化的情况下,可以使用以下命令清除缓存
  • make clean 仅清理编译结果(bin目录)
  • make dirclean 清理所有编译文件(除了.config、dl文件夹和feeds以外都清理)
  • make distclean 清理所有编译文件以及相关依赖(完全清理干净,一键回到刚git clone下来的时候)

总结

本教程介绍了使用LEDE源代码库编译OpenWrt固件的方法,以及menuconfig页面中各选项的说明。通过这些步骤,你可以为你的设备定制固件,添加新功能或优化性能。请注意,编译过程可能需要较长时间,动辄几个小时,六七个小时都是常事,确保在开始编译前已充分了解你的设备型号和需求。

其他第三方仓库

添加下面代码到 openwrt 或 lede 源码根目录下的 feeds.conf.default 文件:

src-git kenzo https://github.com/kenzok8/openwrt-packages
src-git small https://github.com/kenzok8/small
src-git nas https://github.com/linkease/nas-packages.git
src-git passwall https://github.com/xiaorouji/openwrt-passwall.git;main
src-git passwall_packages https://github.com/xiaorouji/openwrt-passwall-packages.git;main
src-git helloworld https://github.com/fw876/helloworld.git
src-git haibo https://github.com/haiibo/openwrt-packages
src-git lienol https://github.com/Lienol/openwrt-package
src-git openclash https://github.com/vernesong/OpenClash.git
src-git amlogic https://github.com/ophub/luci-app-amlogic
src-git packages https://git.openwrt.org/feed/packages.git
src-git luci https://git.openwrt.org/project/luci.git
src-git routing https://git.openwrt.org/feed/routing.git
src-git telephony https://git.openwrt.org/feed/telephony.git
src-git small8 https://github.com/kenzok8/small-package
# 添加 OpenAppFilter 应用过滤插件
git clone https://github.com/destan19/OpenAppFilter package/OpenAppFilter

# 添加 OpenClash
git clone https://github.com/vernesong/OpenClash.git
mv OpenClash/luci-app-openclash package/

# 添加 eqos
git clone https://github.com/zhaojh329/eqos.git package/
# 在 make menuconfig 选择以下项目
# LuCI > Applications > luci-app-eqos
# Network > eqos

PS:仓库不是越多越好,插件越多越容易冲突,反而编译出错,所以慎重选择,合适自己的才是最好的

Tips

固件空间

插件比较多的时候,下x86/64下调整一下设置,留下空间

Target Images ---> (16) Kernel partition size (in MB) #默认是 (16) 建议修改 (256)
Target Images ---> (160) Root filesystem partition size (in MB) #默认是 (160) 建议修改 (512)

使用WSL/WSL2进行编译

由于 WSL 的 PATH 中包含带有空格的 Windows 路径,有可能会导致编译失败,请在 make 前面加上:

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

二次元软件世界 , 版权所有丨如有侵权 , 请联系站长丨
转载请注明原文链接:OpenWRT原版编译小白教程
责任声明:本站一切资源仅用作交流学习,请勿用作商业或违法行为!如造成任何后果,本站概不负责!
喜欢 (0)
发表我的评论
取消评论
表情 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
欢迎使用二次元软件世界,希望可以帮到您!!!页面加载时间0.23 s | 数据库查询:98 queries. 0.232 seconds