找回密码
 立即注册
img_loading
智能检测中

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888广告投放联系QQ68610888
查看: 4955|回复: 5

(方法分享)编译稳定版的OpenWRT并且混入Lienol大神的插件

[复制链接]
发表于 2022-6-12 02:07 | 显示全部楼层 |阅读模式
本帖最后由 忘忧GX 于 2023-2-18 15:58 编辑

  OpenWRT的强大相信知道这个英文名的人都知道哈,用的人很多,编译出来发固件的人更多,但是基于源码开发的人很少(国内、符合国情需求的开发者)

  在OpenWRT官方分有trunk\Snapshot\稳定版,大多数开发者会选择trunk\Snapshot进行开发,也不做版本管理,所以非官方版本很多时候都被贴上“折腾版”的标签;功能、插件是很多,也很好用,但是Bug也多,是否fix还要看开发者(通常是个人非团队)的心情;没办法,毕竟是开源嘛。

  作为OpenWRT的重度用户,秉承稳定大于一切的理念,也不想三天两头地反复刷固件查bug;于是在网上搜罗了各路大神开发者的源码并编译测试后,发现Lienol这个开发者基于源码疯狂魔改地比较少,也比较接近源码,于是萌生了官方稳定版混合民间开发者插件的想法。

混合Lienol编译的优势:
  1. 1.可以使用很多插件(仔细发现部分插件来源于Lean),比如本人喜欢的前台status下看到cpu型号\瞬时频率\温度信息等
  2. 2.一些网络功能上的增强优化,比如fullconenat\BBR等
  3. 3.功能插件多的同时,还能继续用官方稳定版的opkg源!甚至还可以随意安装opkg源里面的kmod
复制代码
目前已知Bug:
  1. 1.shortcut-fe编译会报错,搞不定,建议make menuconfig时不要选shortcut-fe
  2. 2.smartdns前端网页是英文,即便安装了luci-i18n-smartdns-zh-cn还是英文
复制代码


郑重声明:本人小白,不懂开发不懂源码不懂linux内核,都是胡编乱造,以下方法仅限个人研究讨论,不确保一定成功,请大家多多包涵!


编译需要提前准备好Ubuntu,个人推荐20.04版本,安装Ubuntu过程+编译环境准备就不再展开了,请自行百度或者g.com

以下是本人混合并编译的操作步骤

  1. #注意: 1.本脚本仅适用于openwrt v21.02.X 版本编译
  2. ###### 2.本脚本仅适用于X86 64位架构编译
  3. ###### 3.需要手工执行make menuconfig 产生.config文件


  4. #openwrt官方git稳定版版本号
  5. tag_ver="v21.02.3"
  6. #目前lienol基于官方SNAPSHOT版分支,最新是openwrt-21.02
  7. lienol_ver=$(echo $tag_ver|sed 's/v//g'|awk -F '.' '{print $1"."$2}')
  8. current_dir=$(pwd)
  9. lienol_dir=$(echo ${current_dir}/lienol_openwrt)
  10. #官方git地址
  11. openwrt_git="https://github.com/openwrt/openwrt"
  12. #lienol地址
  13. lienol_git="https://github.com/Lienol/openwrt"
  14. git clone $openwrt_git
  15. git clone -b $lienol_ver --single-branch $lienol_git $lienol_dir
  16. ddir=$(echo $openwrt_git|awk -F '/' '{print $NF}')
  17. cd $ddir
  18. #git tag
  19. #切换到稳定tag
  20. git checkout $tag_ver
  21. kernel_git=$(echo "$tag_ver"|sed 's/v//g')
  22. feeds_conf=feeds.conf.default
  23. #此处获取稳定版内核md5值并替换到编译配置文件中
  24. wget https://downloads.openwrt.org/releases/${kernel_git}/targets/x86/64/packages/Packages.gz
  25. zgrep -m 1 "Depends: kernel (=.*)$" Packages.gz | sed -e 's/.*-\(.*\))/\1/' > .vermagic
  26. sed -i -e 's/^\(.\).*vermagic$/\1cp $(TOPDIR)\/.vermagic $(LINUX_DIR)\/.vermagic/' include/kernel-defaults.mk

  27. #更换官方的packages为lienol的packages
  28. sed -i "/ packages /d" $feeds_conf
  29. echo "src-git packages https://github.com/Lienol/openwrt-packages.git;${lienol_ver}" >> $feeds_conf

  30. #替换官方的luci为lienol的luci
  31. sed -i "/ luci /d" $feeds_conf
  32. echo "src-git luci https://github.com/Lienol/openwrt-luci.git;${lienol_ver}" >> $feeds_conf

  33. #加入lienol的特殊加成
  34. sed -i "/ lienol /d" $feeds_conf
  35. echo "src-git lienol https://github.com/Lienol/openwrt-package.git;main" >> $feeds_conf

  36. #加入lienol的其他特殊加成
  37. sed -i "/ other /d" $feeds_conf
  38. echo "src-git other https://github.com/Lienol/openwrt-package.git;other" >> $feeds_conf

  39. #更改官方默认的连接数,改为65536
  40. sed -i 's/16384/65536/g' package/kernel/linux/files/sysctl-nf-conntrack.conf

  41. #复制lienol的samba36\fullconenat 等
  42. cp -R ${lienol_dir}/package/network/services/samba36 package/network/services
  43. cp -R ${lienol_dir}/package/kernel/shortcut-fe package/kernel
  44. cp -R ${lienol_dir}/package/network/config/firewall/patches package/network/config/firewall
  45. cp -R ${lienol_dir}/package/network/fullconenat package/network

  46. ########################
  47. #加入fw876的helloworld
  48. echo "src-git helloworld https://github.com/fw876/helloworld" >> feeds.conf.default
  49. mkdir -p package/helloworld
  50. for i in "dns2socks" "microsocks" "ipt2socks" "pdnsd-alt" "redsocks2"; do \
  51.   svn checkout "https://github.com/immortalwrt/packages/trunk/net/$i" "package/helloworld/$i"; \
  52. done
  53. ########################
  54. ./scripts/feeds update -a
  55. ./scripts/feeds install -a

  56. #./scripts/feeds update helloworld
  57. #./scripts/feeds install -a -f -p helloworld

  58. #手工配置你的配置项,否则无.config无法编译
  59. #如需要本人的配置项请执行 wget runchar.com:92/openwrt_${tag_ver}.config -O ${current_dir}/${ddir}/.config
  60. make menuconfig
复制代码
编辑好配置后,执行下载,下载失败可以反复执行,因为提交后台,注意不要同时间执行多个(htop或者ps查看进程)

  1. #提交后台下载,需要下载完成方可编译(提高编译成功率),为了方便分析问题,下载线程thread设置成了1,可以调大
  2. thread=1;nohup  make -j${thread} download V=s > ${ddir}/j${thread}_down.log 2>&1 &

  3. #查看下载日志
  4. tail -f ${ddir}/j${thread}_down.log
复制代码





下载完成后,执行编译,因为提交后台,注意不要同时间执行多个

  1. #开始编译,为了方便分析问题,编译线程thread设置成了1,可以调大
  2. thread=1;nohup  make -j${thread} V=s > ${ddir}/j${thread}.log 2>&1 &

  3. #查看编译日志
  4. tail -f ${ddir}/j${thread}.log
复制代码



有兴趣讨论的话请反馈,不常上论坛,有问题请博客留言,本人博客:编译稳定版的OpenWRT并且混入Lienol大神的插件













只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
 楼主| 发表于 2022-6-12 12:27 来自手机 | 显示全部楼层
自顶一下
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2022-6-12 18:19 | 显示全部楼层
不错不错,帮你顶一下
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2022-6-16 22:19 | 显示全部楼层
好贴啊,就该多发这种
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2022-7-2 07:55 | 显示全部楼层
帮顶~~~~~~~~~~~~~~感谢分享
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2022-10-13 18:26 | 显示全部楼层
好贴,学以致用,感谢分享…

一直在想弄个稳定版的OpenWRT来使用,又想使用一些好用的插件,矛盾,终于在这个文章上学到了。
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

欢迎大家光临恩山无线论坛

只谈技术、莫论政事!切勿转播谣言!为了你也为了他人。
只谈技术、莫论政事!(点击见详情) 切记不要随意传播谣言,把自己的日子过安稳了就行,为了自己好也为了大家好。 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。

查看 »

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

GMT+8, 2025-7-3 09:01

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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

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