找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
查看: 870|回复: 13

Lede编译求助,过大0.0?

[复制链接]
本帖最后由 sunyink 于 2023-3-1 17:56 编辑

===========更新2023年3月1日====
弄好了......终于。算算这期间已经开100+的网页学习,感到纯小白要就一个人摸索着弄一遍openwrt从编译到系统再搞插件,还是需要一定的学习能力还有恒心,还要有好心态,可能能力有限吧。
想着弄的这么费心,干脆留一点笔记在这里,大佬看了骂一骂说也许我还能配置地更简洁高效,要能帮到别人那真是积德了。感谢此贴回复帮助我的人(当时路由坏了急,一直失败又不知所以,心里难过的很。看了#5楼兄弟给了另一条路,有了兜底,心态大大变好,后来才发现好心态很重要)

干的活是给一个搞坏了op官方系统的R7800,重新刷一个自己编译的LEDE源,定制自己想要的插件并配置(想弄nat1,smartdns,扶强上网,插件最后再说)
按照顺序把坑记录:
#编译是啥
太专业的wiki小白看不懂,但学的时候很疑惑,不知自己要干嘛。
体感:别人的源码(源码不能直接装),选择好自己的硬件型号,再本地跑出一个安装包的过程。

#编译环境的选择
编译可以:Linux本地编译或者Github在线编译。
我都试过,小白建议别嫌烦,请自己装一个Linux,我用了有图形界面的Ubentu。用起来真比直接github省事。
Github重大缺点:小白编译多半要单线程排错,Github的ci限制编译6小时,会超时被ben根本编译不出来;action在线编译需要写Ci文件,空手写难,又要用到Linux本地$ make defconfig然后$ ./scripts/diffconfig.sh > diff.config生成,我都这一步了干嘛不继续编译下去哇。编译性能其实一般般,吹得厉害,自己实体机8代I7比它还快。


#本地编译吃配置
注意是硬盘容量留够,30G都爆,一怒之下,我装了ubentu实体机,弄了200G空余容量给它。CPU次要,大不了多跑一会儿,线程多再编译快。
重要,大陆的话需要有好的网络环境,好的T子肯定要的,还要经常看记录,有没有下失败的,着重搜log,error、timeout这种。

#实操坑记录
找一个空目录,开始不停地抄大佬的命令行代码,https://github.com/coolsnowwolf/lede,注意git clone后,本地雏形就有了。
进去,显示隐藏文件,打开 feeds.conf.default ,feed是软件源和依赖源,这里记录插件库地址,这里写上,后面配置时候插件名称会自己跳出来。
语法简介:
https://blog.csdn.net/rs_network/article/details/53262795
https://www.cnblogs.com/NueXini/p/16521481.html
这里改后用

./scripts/feeds update -a
下载feeds.conf.default中的包(行开头有#就注释掉了,无视)
./scripts/feeds install -a

安装这些依赖包,可能解压更符合理解
(注,这里https://zhuanlan.zhihu.com/p/407372263的命令也看一下,用了很多糅合命令,但不建议用,不方便排错,重要是编译错了后怎么处理)

确保上面都没报错,偷懒可以反复执行降低错误率就可以$ make menuconfig了,这是个图形界面,问你要怎么样的固件,类似windows自定义安装? make menuconfig生成.congif文件配置全在里面了,编译会先找这个。重要是选对自己路由的型号。先行1选芯片型号,再去行3选路由型号,芯片型号这里查:https://openwrt.org/toh/views/toh_fwdownload,型号Model输进去,看看什么CPU。
make menuconfig介绍可看https://sspai.com/post/61463,他介绍了界面然后开始介绍github编译,
想在线编译可继续看:
https://p3terx.com/archives/build-openwrt-with-github-actions.html
https://p3terx.com/archives/github-actions-started-tutorial.html
https://www.bilibili.com/read/cv14284509
在线编译总归要生成一个*-Ci.yml文件,在线编译叫Actions,动作。言下之意,要告诉它去干Ci.yml文件里的事,Ci才是主语。
可以把Lede的ci开头的启动条件改成
  1. on: workflow_dispatch
复制代码
这样就能手动开启编译,不然没按钮,好神奇。
在线编译最好再学会Git:https://www.liaoxuefeng.com/wiki/896043488029600,好东西,单本地也能用起来,不怕改错了。



回过头来,型号选对然后就是选插件,去luci——application,对照https://www.right.com.cn/forum/thread-3682029-1-1.html选择插件,显示的插件多少取决于feed内链接多少。
注意,实验发现,feed加多了也会增大最后固件体积,似乎默认会加插件依赖?编译这东西,越精简越好,臃肿不稳定。 make menuconfig界面插件名称前有选择框,由空格控制,*表示会完整装好依赖并装入固件,刷上系统就在了,M是似乎只有依赖,包不装如固件,生成ipk事后自己在系统里装。另外无论*还是M,ipk最后都会生成一份的!
重复遍:编译这东西,越精简越好,臃肿不稳定!我开始不知道 逛超市一样选了一堆,最后编译出来img有150Mb,这太大了,硬件路由可能装不上的,官方和纯LEDE大概20Mb+。


开始地狱地编译,
推荐命令
  1. make -j1 V=s | tee make.log
复制代码
会把编译错误,存放在根目录的make.log 文件,方便打开搜索错误。


多半会各种报错的,它末尾爆error2类似:
  1. target-arm_cortex-a15+neon-vfpv4_musl_eabi/stamp/.package_compile] Error 2
  2. make[1]: Leaving directory '/home/sysnk/lede_openwrt/Openwrt_lede'
  3. make: *** [/home/sysnk/lede_openwrt/Openwrt_lede/include/toplevel.mk:231:world] 错误 2
复制代码
其实错误可能不在这里,去前面找!善用搜索,error之类的关键词。然后英语可用在线翻译。

#缺权限,xxxx命令就前面加 $sudo xxxx,或者该权限[url=https://www.gerenjianli.cn/fwdq/shiyongwen/10182697.htmlhttps://www.gerenjianli.cn/fwdq/shiyongwen/10182697.html]https://www.gerenjianli.cn/fwdq/shiyongwen/10182697.html[/url]

#hysteria、go缺依赖。
  1. ake[3]: Leaving directory '/home/sysnk/lede_openwrt/Openwrt_lede/feeds/helloworld/hysteria'
  2. time: package/feeds/helloworld/hysteria/compile#0.50#0.18#660.68
  3.     ERROR: package/feeds/helloworld/hysteria failed to build.
复制代码
i/o timeout
这里helloworld,是个依赖库前面feed选上他会有。

然后这个其实是go语言编译会遇到的,这东西类似沙盒编译,他的变量是需要单独指定,同时他也不走系统设定的代理用自己的!可以换成国内的https://goproxy.cn/,用法按照这个网里的命令全来一遍!

#奇怪地东西安装失败报错,偷懒解法
  1. time: package/wwan/driver/quectel_cm_5G/compile#0.12#0.01#0.11
  2.     ERROR: package/wwan/driver/quectel_cm_5G failed to build.
  3. make[2]: *** [package/Makefile:116: package/wwan/driver/quectel_cm_5G/compile] Error 1
  4. make[2]: Leaving directory '/home/sysnk/lede_openwrt/Openwrt_lede'
  5. make[1]: *** [package/Makefile:110: /home/sysnk/lede_openwrt/Openwrt_lede/staging_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/stamp/.package_compile] Error 2
  6. make[1]: Leaving directory '/home/sysnk/lede_openwrt/Openwrt_lede'
  7. make: *** [/home/sysnk/lede_openwrt/Openwrt_lede/include/toplevel.mk:231:world] 错误 2
复制代码
比如这,去搜索quectel_cm_5G是个啥,一看一个USB的5G上网卡驱动,那可以选择不要它,不要就不编译,就不报错。这种时候去改.config,不要用$ make menuconfig去找,直接打开.config搜索然后照猫画虎改 is not set,再#注释掉。

#插件冲突
  1. make[2]: *** [package/Makefile:70: package/install] Error 255
  2. make[2]: Leaving directory '/home/sysnk/lede_openwrt/Openwrt_lede'
  3. make[1]: *** [package/Makefile:111: /home/sysnk/lede_openwrt/Openwrt_lede/staging_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/stamp/.package_install] Error 2
  4. make[1]: Leaving directory '/home/sysnk/lede_openwrt/Openwrt_lede'
  5. make: *** [/home/sysnk/lede_openwrt/Openwrt_lede/include/toplevel.mk:231:world] 错误 2
复制代码
好奇怪?往前搜!“error出来!”发现:
  1. CoCollected errors:
  2. * check_conflicts_for: The following packages conflict with samba4-server:
  3. * check_conflicts_for:         samba36-server *
  4. * opkg_install_cmd: Cannot install package autosamba.
  5. * pkg_hash_check_unresolved: cannot find dependency quectel-CM-5G for luci-app-usbmodem
  6. * pkg_hash_fetch_best_installation_candidate: Packages for luci-app-usbmodem found, but incompatible with the architectures configured
  7. * opkg_install_cmd: Cannot install package luci-app-usbmodem.
  8. * satisfy_dependencies_for: Cannot satisfy the following dependencies for luci-i18n-usbmodem-zh-cn:
  9. *         quectel-CM-5G
  10. * opkg_install_cmd: Cannot install package luci-i18n-usbmodem-zh-cn.
  11. * check_conflicts_for: The following packages conflict with samba4-server:
  12. * check_conflicts_for:         samba36-server *
  13. * opkg_install_cmd: Cannot install package samba4-server.
复制代码
这就是一个典型的插件冲突,机翻一下很清楚,去.config 搜索samba36去掉,有时候是要取舍的,总比装好系统再去找ipk来装发现无力回天好得多。

#有时候排查半天,其实是之前下载东西坏包了
  1. Configuring kmod-ath1Collected errors:
  2. * pkg_hash_check_unresolved: cannot find dependency kmod-sched-core for tc-tiny
  3. * pkg_hash_fetch_best_installation_candidate: Packages for tc-tiny found, but incompatible with the architectures configured
  4. * opkg_install_cmd: Cannot install package tc-tiny.
  5. (省略一堆)
  6. make[2]: *** [package/Makefile:70: package/install] Error 255
  7. make[2]: Leaving directory '/home/sysnk/lede_openwrt/Openwrt_lede'
  8. make[1]: *** [package/Makefile:111: /home/sysnk/lede_openwrt/Openwrt_lede/staging_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/stamp/.package_install] Error 2
  9. make[1]: Leaving directory '/home/sysnk/lede_openwrt/Openwrt_lede'
  10. make: *** [/home/sysnk/lede_openwrt/Openwrt_lede/include/toplevel.mk:231:world] 错误 2
复制代码
小白自学很久,想编译一个lede自带一点插件,结果本地编译占满30G失败;github编译了6小时,超时失败只得到7w行的log....

想请教下,我是不弄错了什么设置,我听说正常编译很小的。目前luci里的app插件估计也没过20个*、0个M(不知道M有什么好的....)。

如果有愿意帮看下的大佬,先行拜谢~!








我的恩山、我的无线 The best wifi forum is right here.
 楼主| | 显示全部楼层
我以前用官版openwrt,经常出现重装后安装一大堆插件困难,各种报错,去年直接崩溃了....本来觉得编译一个固件装上就全在会比较方便,怎么....唉。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

仓库链接发出来

点评

https://github.com/sunyink/Openwrt_lede 我先克隆到本地然后push到自己库的,注释都是原作者的。  详情 回复 发表于 2023-2-23 15:47
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

来自手机 | 显示全部楼层
建议先尝试编译ipk,再用imagebuilder在默认包基础上增删插件(ipk)打包为固件
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

来自手机 | 显示全部楼层
建议先尝试编译ipk,再用imagebuilder在默认包基础上增删插件(ipk)打包为固件

点评

诶 这到打开了新思路。 迅速学习了一下,但有一个环节疑惑:假如我已经make menuconfig 调M,并找到生成的ipk,那怎么让imagebuilder用我生成的ipk呢?看他们的命令好像又去网上拉取了  详情 回复 发表于 2023-2-23 16:14
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

本地虚拟机里Ubuntu,编译,就几个命令,复制,粘贴,啊。虚拟机里装Ubuntu时,盘分配大的。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

来自手机 | 显示全部楼层
空间至少50g,50g编译完差不多只剩10g左右。

点评

删了几个插件,再编译一次。github要是再说超时,也只能本地慢慢尝试了。火起来给他搞100G。  详情 回复 发表于 2023-2-23 16:01
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| | 显示全部楼层

https://github.com/sunyink/Openwrt_lede

我先克隆到本地然后push到自己库的,注释都是原作者的。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| | 显示全部楼层
打酱油007 发表于 2023-2-23 15:02
空间至少50g,50g编译完差不多只剩10g左右。

删了几个插件,再编译一次。github要是再说超时,也只能本地慢慢尝试了。火起来给他搞100G。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| | 显示全部楼层
aming.ou 发表于 2023-2-23 12:56
建议先尝试编译ipk,再用imagebuilder在默认包基础上增删插件(ipk)打包为固件

诶 这到打开了新思路。
迅速学习了一下,但有一个环节疑惑:假如我已经make menuconfig 调M,并找到生成的ipk,那怎么让imagebuilder用我生成的ipk呢?看他们的命令好像又去网上拉取了

点评

把自己编译生成的ipk,或者网上下载的ipk,复制到imagebuilder路径下的packages文件夹内 那么在打包时,集成用到的ipk包将优先使用本地packages文件夹中的ipk包,而不会联网下载 所以,,为了减少每次集成打包时重  详情 回复 发表于 2023-2-23 16:45
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

sunyink 发表于 2023-2-23 16:14
诶 这到打开了新思路。
迅速学习了一下,但有一个环节疑惑:假如我已经make menuconfig 调M,并找到生成 ...

把自己编译生成的ipk,或者网上下载的ipk,复制到imagebuilder路径下的packages文件夹内
那么在打包时,集成用到的ipk包将优先使用本地packages文件夹中的ipk包,而不会联网下载
所以,,为了减少每次集成打包时重复下载,可以把用到的ipk包都预下载到packages文件夹中,

点评

好办法 拆开来编译,规避一个包太大,很好的思路。  详情 回复 发表于 2023-2-23 20:00
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| | 显示全部楼层
aming.ou 发表于 2023-2-23 16:45
把自己编译生成的ipk,或者网上下载的ipk,复制到imagebuilder路径下的packages文件夹内
那么在打包时, ...

好办法 拆开来编译,规避一个包太大,很好的思路。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| | 显示全部楼层
得,删了些插件github还是超时,还得折腾一个ubentu实体机。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| | 显示全部楼层
得,删了些插件github还是超时,还得折腾一个ubentu实体机。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2024-4-27 15:06

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com 举报电话:0519-86695797

快速回复 返回顶部 返回列表