日常折腾 篇一:编译属于自己理想的Openwrt

2024-05-15 16:52:14 23点赞 210收藏 27评论

前言

这两年一直都在接触Openwrt,主要用来做旁路由弄的特殊功能(都懂的编译属于自己理想的Openwrt)。这期间也是在恩山那边做伸手党,直接拿别人弄好的x86固件来使。用着发现有的太过精简,而有的给的太多,没办法只能自己试着编译一个。先声明,我只是小白,写的不对的地方,希望各位大佬不吝赐教,多多指正。继续叠个甲,非常感谢各大佬的开源项目。

一、编译环境

在确定编译环境之前,先确定需要编译的固件。目前固件有原版固件和各路大神开源固件。

原版固件

原版固件插件比较少,需要自己去找,更适合动手能力高的大神使用,小白还是不推荐

Lean的固件

目前很多Openwrt的固件都是基于Lean大神的固件编译,包含恩山上面的大多数固件,当然还有其他固件,比如HomeLede。选Lean大神的固件主要是插件丰富,好编译,功能上按需选择,基本上都能满足。

环境

固件确定后,就可以选择编译环境,大致说下现在能编译的环境有哪些

云编译:可以使用P3TERX大佬编写的Actions-OpenWrt项目, 可以在 GitHub Actions 云编译 OpenWrt,项目官网也有详细的使用说明

Debian或Ubuntu编译:因为选择了Lean大的固件,在项目说明中也提及了用这两个系统,所以紧跟步伐就行。物理机或者虚拟机都是可以的,所以我选择了VMware+Ubuntu。这里跳过环境搭建

二、Openwrt编译

安装编译依赖

# 更新软件包列表,检查可用的软件包更新
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 libfuse-dev libglib2.0-dev libgmp3-dev libltdl-dev libmpc-dev libmpfr-dev libncurses5-dev libncursesw5-dev libpython3-dev libreadline-dev libssl-dev libtool lrzsz mkisofs msmtp ninja-build p7zip p7zip-full patch pkgconf python2.7 python3 python3-pyelftools python3-setuptools qemu-utils rsync scons squashfs-tools subversion swig texinfo uglifyjs upx-ucl unzip vim wget xmlto xxd zlib1g-dev

源码下载及配置

1、首次编译

# 从GitHub仓库上面获取编译文件

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

# 进入lede文件目录

cd lede

再继续下面步骤前,先进行插件源设置,即配置下载仓库

配置下载仓库有两种方法

1、使用命令行添加下载仓库

下载仓库方式:命令行输入以下命令"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"

以上两种方式区别:下载仓库方式只编译,而feeds方式在编译后,还会出现在openwrt的“软件包”,“软件源”中

2、直接修改feeds.conf.default下载仓库配置文件,路径lede --> feeds.conf.default

这种方式也会出现在openwrt的“软件包”,“软件源”中

feeds.conf.default文件feeds.conf.default文件

更新并安装feeds

# 升级所有的软件包和所有的在feeds中指定的库

./scripts/feeds update -a

# 安装所有的软件包和所有的在feeds中指定的库

./scripts/feeds install -a

配置OpenWrt Configuration

# 生成配置界面

make menuconfig

在这里根据路由器的平台和架构,选择相应的选项,比如我是x86架构,所以默认都是x86选项。其他就是设置无线支持、ipv6支持以及需要的插件。

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

# 下载dl库,这里也可以加上V=s查看输出日志,如make download -j8 V=s

make download -j8

当dl库下载完成后,可以做一个不那么严谨的动作,就是检查文件完整性。根据有些大佬经验,小于1k的文件可能属于不完整,所以可以根据下面命名则需使用

a.查看小于1k文件

find dl -size -1024c -exec ls -l {} ;
b.删除小于1k文件

find dl -size -1024c -exec rm -f {} ;

c.再执行一次

make download

编译固件(Lean大神建议,首次编译用一个线程数)

make V=s -j1

2、二次编译

# 首先要进入lede目录

cd lede

# 拉取最新代码

git pull

# 更新下载安装订阅源包含的软件包

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

# 只对.config 部分代码片段的默认值补全

make defconfig

# 清理旧文件,也可以不清理

# 如果只是调整检查和驱动等,清理bin目录内容

make clean

# 如果需要调整架构,或者之前编译出错,清理clean+交叉编译工具及工具链目录

make dirclean

# 如果需要调清理所有,包括下载的软件包,配置文件,feed内容等

make distclean

# 删除旧的配置文件,即lede目录下的.config文件(如果看不到可以ctrl+h)

rm -rf ./tmp && rm -rf .config

# 选择插件,如果需要调整的话

make menuconfig

# 下载包

make download -j8 V=s

# 优先使用多线程编译,出错则使用单线程并输出详细信息

make -j$(nproc) || make -j1 V=s

最后,编译完成后输出路径:bin/targets

总结

我在VMware+Ubuntu的编译环境下,成功失败并存,根据了解的情况来说,可能是本地环境网络问题,有时候成功了,后面如果修改配置,在编译也会存在失败情况。至于为什么不选择云编译,我觉得在云编译之前,自己在本地编译下会更好的了解整个编译过程,即使云编译的时候保存,也能大概得了解为什么报错,从而进行修改。另外就是,一次编译,如果稳定的话,下一次编译可能在几个月或者更长时间。这东西稳定运行就行,没必要追新。

失败啦!失败啦!

作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

展开 收起

QNAP 威联通 TS-464C2 四盘位 NAS网络存储(赛扬N5095、8GB)黑色

QNAP 威联通 TS-464C2 四盘位 NAS网络存储(赛扬N5095、8GB)黑色

2346.51元起

UGREEN 绿联 DX4600 Pro 4盘位NAS(奔腾N6005、8GB)

UGREEN 绿联 DX4600 Pro 4盘位NAS(奔腾N6005、8GB)

2496元起

ZSpace 极空间 私有云 Z4Pro 8G版 4盘位NAS存储(N97、8GB)

ZSpace 极空间 私有云 Z4Pro 8G版 4盘位NAS存储(N97、8GB)

2399元起

Synology 群晖 DS224+ 双盘位NAS(赛扬J4125、2GB)

Synology 群晖 DS224+ 双盘位NAS(赛扬J4125、2GB)

2420元起

UGREEN 绿联 DXP4800 四盘位 私有云NAS存储(Intel N100、8GB)

UGREEN 绿联 DXP4800 四盘位 私有云NAS存储(Intel N100、8GB)

1769.01元起

ZSpace 极空间 私有云 Z4Pro 16G版 4盘位NAS存储(N97、16GB)

ZSpace 极空间 私有云 Z4Pro 16G版 4盘位NAS存储(N97、16GB)

2439元起

ZSpace 极空间 私有云 Z4Pro 性能版 NAS存储(N305、16GB)

ZSpace 极空间 私有云 Z4Pro 性能版 NAS存储(N305、16GB)

3299元起

ZSpace 极空间 私有云 Z423 旗舰版 8盘位NAS存储(锐龙R7-5825U、64GB)

ZSpace 极空间 私有云 Z423 旗舰版 8盘位NAS存储(锐龙R7-5825U、64GB)

5999元起

UGREEN 绿联 DX4600 四盘位NAS存储 (赛扬N5105、8GB)

UGREEN 绿联 DX4600 四盘位NAS存储 (赛扬N5105、8GB)

1549元起

ASUS 华硕 AS6702T 4盘位NAS存储 黑色(Core2 Quad Q8300、4GB)

ASUS 华硕 AS6702T 4盘位NAS存储 黑色(Core2 Quad Q8300、4GB)

3999元起

QNAP 威联通 TS-466C 四盘位NAS(奔腾N6005、8GB)

QNAP 威联通 TS-466C 四盘位NAS(奔腾N6005、8GB)

3039.01元起

ZSpace 极空间 私有云Z2Pro 四核2盘位NAS家庭个人云网络存储服务器手机平板扩容适用iPhone15 水墨黑

ZSpace 极空间 私有云Z2Pro 四核2盘位NAS家庭个人云网络存储服务器手机平板扩容适用iPhone15 水墨黑

959元起

TERRAMASTER 铁威马 F4-424 Pro 四盘位NAS(Intel Core i3、32GB)黑色

TERRAMASTER 铁威马 F4-424 Pro 四盘位NAS(Intel Core i3、32GB)黑色

2499元起

Synology 群晖 DS923+ 4盘位NAS存储(R1600、4GB)

Synology 群晖 DS923+ 4盘位NAS存储(R1600、4GB)

4207.5元起

QNAP 威联通 TS-464C 4盘位NAS(赛扬N5095、8GB)

QNAP 威联通 TS-464C 4盘位NAS(赛扬N5095、8GB)

1846.01元起

UGREEN 绿联 DX4600+ 4盘位NAS(赛扬N5105、8GB)

UGREEN 绿联 DX4600+ 4盘位NAS(赛扬N5105、8GB)

1899元起
27评论

  • 精彩
  • 最新
  • P3TERX大佬编写的Actions-OpenWrt项目,我自己Forks后,在github上搞了定时编译更新,Lean和ImmortalWrt自用固件都会出现在Releases,省时省力 [献花]

    校验提示文案

    提交
    我之前弄了,但是老是失败 [皱眉]

    校验提示文案

    提交
    make menuconfig完成后,将config里面的内容复制到大神项目中config就可以,不过,大神项目代码已经不维护,所以,我填的坑比你多得多 [皱眉]

    校验提示文案

    提交
    还有4条回复
    收起所有回复
  • 之前搞了一个,云编译没搞成功,本地编译了一个,需要的功能都安排了,用了半年了,下次更新估计按年算了。

    校验提示文案

    提交
  • 别折腾了,有那精力干点别的吧,之前我也自己编译,但多数失败;知道原理即可,至于过程嘛,自己想。。。
    推荐一个在线编译自定义openwrt的网站:
    去看看

    校验提示文案

    提交
    我也是这个网站会员,后来网站被人家爆破说固件有后门,我就自己编译了,6.6的内核挺香的 [观察]

    校验提示文案

    提交
    这个,看个人选择啦

    校验提示文案

    提交
    还有10条回复
    收起所有回复
  • 我都是直接用清华大学的官方镜像,然后需要什么软件opkg install,不是经常折腾,连image builder sdk都不想下载。

    校验提示文案

    提交
    也是编译一次,基本几个月再看看,有新东西在弄弄

    校验提示文案

    提交
    收起所有回复
  • 我还是啥时候狗东云不给积分了在考虑学习学习opwrt 吧

    校验提示文案

    提交
    不是很多人都是没了吗

    校验提示文案

    提交
    收起所有回复
  • 多谢楼主分享

    校验提示文案

    提交
  • 云编译吧,最方便

    校验提示文案

    提交
提示信息

取消
确认
评论举报

相关好价推荐
查看更多好价

相关文章推荐

更多精彩文章
更多精彩文章
天猫超级红包
距结束::
每天领现金,最高24888元
红包按钮
最新文章 热门文章
210
扫一下,分享更方便,购买更轻松