|
本帖最后由 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开头的启动条件改成
这样就能手动开启编译,不然没按钮,好神奇。
在线编译最好再学会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+。
开始地狱地编译,
推荐命令
- make -j1 V=s | tee make.log
复制代码 会把编译错误,存放在根目录的make.log 文件,方便打开搜索错误。
多半会各种报错的,它末尾爆error2类似:
- target-arm_cortex-a15+neon-vfpv4_musl_eabi/stamp/.package_compile] Error 2
- make[1]: Leaving directory '/home/sysnk/lede_openwrt/Openwrt_lede'
- 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缺依赖。
- ake[3]: Leaving directory '/home/sysnk/lede_openwrt/Openwrt_lede/feeds/helloworld/hysteria'
- time: package/feeds/helloworld/hysteria/compile#0.50#0.18#660.68
- ERROR: package/feeds/helloworld/hysteria failed to build.
复制代码 i/o timeout
这里helloworld,是个依赖库前面feed选上他会有。
然后这个其实是go语言编译会遇到的,这东西类似沙盒编译,他的变量是需要单独指定,同时他也不走系统设定的代理用自己的!可以换成国内的https://goproxy.cn/,用法按照这个网里的命令全来一遍!
#奇怪地东西安装失败报错,偷懒解法
- time: package/wwan/driver/quectel_cm_5G/compile#0.12#0.01#0.11
- ERROR: package/wwan/driver/quectel_cm_5G failed to build.
- make[2]: *** [package/Makefile:116: package/wwan/driver/quectel_cm_5G/compile] Error 1
- make[2]: Leaving directory '/home/sysnk/lede_openwrt/Openwrt_lede'
- 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
- make[1]: Leaving directory '/home/sysnk/lede_openwrt/Openwrt_lede'
- 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,再#注释掉。
#插件冲突
- make[2]: *** [package/Makefile:70: package/install] Error 255
- make[2]: Leaving directory '/home/sysnk/lede_openwrt/Openwrt_lede'
- 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
- make[1]: Leaving directory '/home/sysnk/lede_openwrt/Openwrt_lede'
- make: *** [/home/sysnk/lede_openwrt/Openwrt_lede/include/toplevel.mk:231:world] 错误 2
复制代码 好奇怪?往前搜!“error出来!”发现:
- CoCollected errors:
- * check_conflicts_for: The following packages conflict with samba4-server:
- * check_conflicts_for: samba36-server *
- * opkg_install_cmd: Cannot install package autosamba.
- * pkg_hash_check_unresolved: cannot find dependency quectel-CM-5G for luci-app-usbmodem
- * pkg_hash_fetch_best_installation_candidate: Packages for luci-app-usbmodem found, but incompatible with the architectures configured
- * opkg_install_cmd: Cannot install package luci-app-usbmodem.
- * satisfy_dependencies_for: Cannot satisfy the following dependencies for luci-i18n-usbmodem-zh-cn:
- * quectel-CM-5G
- * opkg_install_cmd: Cannot install package luci-i18n-usbmodem-zh-cn.
- * check_conflicts_for: The following packages conflict with samba4-server:
- * check_conflicts_for: samba36-server *
- * opkg_install_cmd: Cannot install package samba4-server.
复制代码 这就是一个典型的插件冲突,机翻一下很清楚,去.config 搜索samba36去掉,有时候是要取舍的,总比装好系统再去找ipk来装发现无力回天好得多。
#有时候排查半天,其实是之前下载东西坏包了
- Configuring kmod-ath1Collected errors:
- * pkg_hash_check_unresolved: cannot find dependency kmod-sched-core for tc-tiny
- * pkg_hash_fetch_best_installation_candidate: Packages for tc-tiny found, but incompatible with the architectures configured
- * opkg_install_cmd: Cannot install package tc-tiny.
- (省略一堆)
- make[2]: *** [package/Makefile:70: package/install] Error 255
- make[2]: Leaving directory '/home/sysnk/lede_openwrt/Openwrt_lede'
- 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
- make[1]: Leaving directory '/home/sysnk/lede_openwrt/Openwrt_lede'
- 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有什么好的....)。
如果有愿意帮看下的大佬,先行拜谢~!
|
|