编译Lean大的OpenWrt固件踩的那些坑

点击数:1488

记录一下最近编译OpenWrt遇到的几个大坑

最近上油管看到有个UP主分享了一个最新的科学上网技术Trojan,由于我家的V2ray表现不太好,也想试试。无奈我的软路由使用koolshare的固件并没有Trojan插件,就想重新刷一个固件,于是网上搜教程,照着教程做,可是我从上周礼拜天(1月12日)到今天(1月16日)快一周了都没成功,以下记录一下我才的几个坑:

1,编译固件需要全局科学上网,第一天我没在自己家里弄,用windows主机挂代理,虚拟机安装Ubuntu18.04选择桥接模式,主机代理软件设置允许局域网的连接,在Ubuntu里设置代理,结果就是无法科学上网,网上找了好多教程也无法解决,最后直接连百度都打不开了。刚开始也没做快照,重装了一次虚拟机系统才能正常连网,但是让主机共享代理还是不行,试了NAT模式也不行,想通过在虚拟机里安装V2ray客户端,无奈对linux下设置客户端不熟悉一时半会没搞定,第一天基本上就耗费在这件事情上了。

2月12日填坑:虚拟机下的代理设置部分端口号需要+1,比如windows下v2rayN的代理端口设置为1080,在虚拟机下ubuntu要设置端口为1081。

2,吸取这个教训就在家里使用软路由设置全局代理,按照网上的教程给虚拟机和主机之间建立了一个share共享文件夹,方便主机和虚拟机互传文件。用Windows主机在github上下载了lean大的zip格式源码,解压到share文件夹,按照教程修改了一些文件配置添加trojan分流的支持,然后进入虚拟机,先做sudo apt-get update和sudo apt-get -y install build-essential…(省略)结果在这个地方就出问题了,更新速度巨慢,而且有时候还直接无法连接而失败。查看终端显示更新请求的源都是美国的,挂上洛杉矶的代理也很慢。后来想起ubuntu是有国内软件源的,上网找了国内的阿里云,但是在这里还是踩坑了,我插入了阿里源但是没有屏蔽原来脚本里的其它默认源,结果更新的时候还是会卡住或者断掉,在这里反复试了多次浪费了很多时间。后来将默认源里的地址全部屏蔽,换成阿里源和中科大源,关掉全局代理,更新速度就飞快了

2月12日填坑:虚拟机安装ubuntu时选择语言的时候选择为简体中文,地区选择上海,这样软件源就自动设置为国内的源了。

3,到这里以为万事大吉了,没想到遇到第三个坑。更新软件成功后,软路由开全局模式,进入lede文件夹开始./scripts/feeds update -a操作,结果系统老是报错,搞了好几次发现系统提示我的硬盘不是case-sensitive filesystem,搜索后原来我用的share文件夹是windows创建的,windows文件系统不区分大小写,而编译openwrt固件需要对大小写敏感的系统。解决办法是把lede文件夹复制到/home/用户名 文件夹下,再进行操作,成功了!

4,经过一番操作,终于到了编译这一步,看着屏幕上飞奔的一行行代码,心中很有成就感,心想要成功了,程序跑了两三个小时候提示ERROR,研究半天发现是编译程序下载资源失败,原来是我的代理不给力,一到晚上速度巨慢。又是一天过去了。

5,吸取教训第二天一大早4点钟起床,测试了下我的代理速度,这时还不错,又开始进行编译,结果跑了三个小时还没跑完就开着电脑上班去了,下班回去心想该编译好了,结果回家一看又是错误,错误原因是磁盘空间满了,没有地方保存资源了。当初按找的教程的建议给虚拟机分配了25G的空间,但是我反复编译过几次后,虽然每次编译前都做了make clean,但是没想到并没有清理掉垃圾文件,编译固件需要大量空间,当时也不知道该删哪些文件,就还原了快照,按照之前的步骤再做一次,做到make menuconfig时发现LUCI-APP里只有很少的选项,开始编译后就有几个警告提示缺少什么文件还是文件夹,然后跑了一个多小时以后一看失败了。这时想起教程上都是让用git clone https://github.com/coolsnowwolf/lede命令来下载源码到本地,我是用windows主机下载的压缩包解压后复制到虚拟机的,会不会是这里出了问题。

6,今天早上三点起床,还原快照,趁着网速快老老实实git clone到本地,但是跑了3个多小时程序还没结束,硬盘还剩3G,心里有点冒汗,恐怕这次空间又会不够了,虚拟机运行期间尝试给虚拟机硬盘扩容,虚拟机提示必须在关机后才能合并空间,但是又不想中断跑了3个小时的编译程序,就把虚拟机挂起后上班去了。下班回去看看能不能继续编译成功。

7,上班期间又浏览一些教程,下载了几个编译好的固件打算晚上回去直接刷机,电脑上的虚拟机也再试试看能不能编译成功,如果成功后,后期再次编译时间会大大缩短。晚上回去用下载好的1月11日固件刷机,5分钟搞定,支持trojan分流。虚拟机继续编译,今天早上(1月17日)一看又失败了,原因不明,硬盘空间还剩1G。懒得折腾了。

2月12日更新:后来我又研究并试验成功利用谷歌云编译固件用github actions编译固件的方法,现在已经放弃本地编译

总结

1,最好有硬件级的全局科学上网支持比如软路由,编译中需要下载大量资源因此要根据线路质量选择网速较好的时段进行编译

2,虚拟机硬盘空间要设置足够大,个人感觉要至少40G以上,有条件单独挂一块硬盘做编译,本地虚拟机编译前将源更新为国内源同时删除默认源。编译失败后删掉lede文件夹再重新下载,不然硬盘会越占越多,或者做个快照还原。有条件也可以用墙外VPS主机用SSH登录远程编译。

3,用git clone下载源代码,不要用其它方式拷贝源码到虚拟机。

4,实在不行就找别人编译好的最新固件,简单省事。这里贴一个Lean大github上每日自动编译的固件链接(点开最新的OpenWrt-CI就可以看到)

5,最后贴一个比较好的X86_64固件编译教程https://www.jinbo123.com/7672.html

点赞
  1. cony说道:

    和我差不多哈哈。不过最后也成功了。现在用的就是自己编译的固件

发表评论

电子邮件地址不会被公开。 必填项已用*标注