编译属于自己的OpenWrt固件
创作立场声明:首先感谢各开源项目,此文仅为个人折腾分享,如有不对,欢迎评论区指正,感谢大家的支持!
大家好!
由于本人DDNS、广告屏蔽等需求,需对家里路由固件升级,因此开始了折腾之路。本文只是着重描述了对固件的选择及编译的过程,并总结心得分享此文,希望各位少走弯路。
目录
前言
固件选择
环境搭建
源码下载及配置
编译
总结
前言
OpenWrt项目是一个针对嵌入式设备的Linux操作系统。OpenWrt不是一个单一且不可更改的固件,而是提供了具有软件包管理功能的完全可写的文件系统。这使您可以从供应商提供的应用范围和配置中解脱出来,并且让您通过使用适配任何应用的软件包来定制设备。对于开发人员来说,OpenWrt是一个无需围绕它构建完整固件就能开发应用程序的框架; 对于普通用户来说,这意味着拥有了完全定制的能力,能以意想不到的方式使用该设备。
以往路由器固件都是厂家维护,主要完成了路由功能,其他功能聊胜于无,并且更新很慢。因此OpenWrt项目的出现,给这个自由的时代又添上了美好的一笔。
正因为OpenWrt项目有着非常丰富的插件应用,可根据需求自行选择,极大符合着我开头描述的需求,也减少了我后期需求变更带来的折腾。
固件选择
原版的固件
原版固件里件很多插件是不含的,需要自己去网上找,然后自己集成进去。如果编译报错的话,需要自己debug。
Lean的固件
Lean大佬根据原版OpenWrt项目,整合了很多插件,并且可根据自己需求进行选择整合成自己的固件。
结论
由于个人只是小白,没得选,必须得跟随Lean大的步伐。
环境搭建
安装Ubuntu 20.04 LTS x64
下载镜像
虚拟机安装系统,使用快捷安装;
选择镜像
勾选快捷安装
配置完成
自动安装
安装完成后登入界面
更新软件包列表,命令行输入以下命令"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";
下载源代码及切换目录
添加部分插件源,例如Helloword,(不需要的可跳过这步)
以下方式二选一
下载仓库方式:命令行输入以下命令"git clone https://github.com/fw876/helloworld.git package/lean/luci-app-ssr-plus"
添加feeds方式:命令行输入以下命令"echo 'src-git helloworld https://github.com/fw876/helloworld' >>feeds.conf.default"
helloWord
两种方式区别:下载仓库方式只用来编译,添加feeds方式还会把链接放到路由器的"软件包"“软件源”里,建议用下载仓库方式
更新并安装feed
命令行输入以下命令"./scripts/feeds update -a "
更新
命令行输入以下命令"./scripts/feeds install -a "
安装
OpenWrt Configuration 配置
生成配置界面,命令行输入以下命令"make menuconfig"
生成配置界面命令
配置界面
根据路由器的平台和架构,在 Target System(目标系统类型,即路由器CPU架构)、Subtarget(子目标,即路由器芯片型号)、Target Profile(目标文件, 即路由器型号) 中选择相应的选项;本人使用的软路由,所以都为默认x86选项。
平台和架构
Target Images中勾选需要的固件格式等,个人按默认了并去掉了vmdl格式
Target Images
IPv6支持,需要在Extra packages里勾选ipv6helper,自动会把所有ipv6需要的组件都选上的
ipv6
最重要的插件部分,进入 Luci - Applications 选择需要的插件,这里由于种种原因,各位可参考恩山大佬整理的插件列表进行选择性安装,地址:
选择插件
配置完成后光标移动到 Save ,回车保存为.config文件。
保存
编译
先说结论:我尝试2次本地编译都失败了,所以各位还是优先选择在线编译,因为本地环境中网络,会导致部分dl库下载不成功,并且电脑需开机2~3个小时,而在线编译的话,用的是微软的服务器,不存在网络问题,也不会有时间和用电的浪费。
本地编译
下载dl库,输入以下命令"make -j8 download V=s"(需要下载很久)
下载dl库
编译固件,输入以下命令"make -j1 V=s",(-j1 后面是线程数。第一次编译推荐用单线程)
编译
在线编译
P3TERX大佬编写的Actions-OpenWrt项目,使用 GitHub Actions 云编译 OpenWrt 。可以直接阅读大佬的使用说明,写的很详细。
以下仅作为个人操作记录。
进入 P3TERX/Actions-OpenWrt 项目页面,点击页面中的 Use this template 按钮
Use this template
填写仓库名称,然后点击Create repository from template按钮
创建仓库
经过几秒钟的等待,页面会跳转到新建的仓库,点击Create new file按钮
新建文件
文件名填写为.config,把配置章节生成的.config 文件的内容复制粘贴到下面的文本框中
.config 文件
翻到页面最下方,点击Commit new file按钮
提交文件
(在配置章节跳过设置部分插件源的朋友亦可调过此步骤)提前设置插件源等环境,继续以helloword插件为例,打开diy-part1.sh并编辑以下内容,二选一,对应的方式与配置阶段的设置插件源方式保持一致
配置helloword
在 Actions 页面选择Build OpenWrt,然后点击Run Workflow按钮,即可开始编译
编译
经过2~3小时的在线编译,编译结果为一个压缩包,下载解压后得到固件
编译结果
编译结果
固件
总结
至此,OpenWrt的固件篇到此结束了,由衷感受到开源软件的强大,及各大佬的无私分享,给小白用户带来了极大的福利。


































magicdog20
校验提示文案
得道之兔
校验提示文案
超级袋鼠
校验提示文案
bg4sop
校验提示文案
无形之刃
校验提示文案
小推车_
校验提示文案
人见人爱
校验提示文案
xyh5780
校验提示文案
Banio
校验提示文案
特兰克斯
校验提示文案
wqzxhpx
校验提示文案
Memorainer
校验提示文案
皆切
校验提示文案
给自己取个独特的昵称
校验提示文案
棠溪2022
校验提示文案
mzisas
自己编的一是定制性,二是不容易被人塞后门。
不知道我的理解对不对
校验提示文案
焱炎火
校验提示文案
神评在哪里
校验提示文案
神马值得和鞋
校验提示文案
多多吃小鱼
校验提示文案
mzisas
自己编的一是定制性,二是不容易被人塞后门。
不知道我的理解对不对
校验提示文案
嗯然后呢
校验提示文案
Memorainer
校验提示文案
多多吃小鱼
校验提示文案
给自己取个独特的昵称
校验提示文案
神马值得和鞋
校验提示文案
神评在哪里
校验提示文案
wqzxhpx
校验提示文案
特兰克斯
校验提示文案
Banio
校验提示文案
皆切
校验提示文案
xyh5780
校验提示文案
人见人爱
校验提示文案
magicdog20
校验提示文案
焱炎火
校验提示文案
小推车_
校验提示文案
无形之刃
校验提示文案
棠溪2022
校验提示文案
bg4sop
校验提示文案
得道之兔
校验提示文案