根据恩山L大的源码编译OpenWRT固件,第三次终于成功,记录下来前两次的坑, OpenWRT 编译恩山L大的源码踩过的坑
2025年加油呀!Fighting!L大源码地址,根据这个地址里面的编译说明进行编译,前两次失败,踩过几个坑,第三次顺利编译成功
sudo apt-get update ,然后输入 sudo apt-get -y install build-essential asciidoc binutils bzip2 gawk gettext git libncurses5-dev libz-dev patch python3.5 python2.7 unzip zlib1g-dev lib32gcc1 libc6-dev-i386 subversion flex uglifyjs git-core gcc-multilib p7zip p7zip-full msmtp libssl-dev texinfo libglib2.0-dev xmlto qemu-utils upx libelf-dev autoconf automake libtool autopoint device-tree-compiler g++-multilib antlr3 gperfgit clone https://github.com/coolsnowwolf/lede 命令下载好源代码 (执行以上两条命令之前先填第1个坑,后面详述) cd lede 进入目录./scripts/feeds update -a (执行此命令之前先填第2个坑,后面详述) ./scripts/feeds install -a make menuconfig make -j8 download V=s 下载dl库(执行此命令之前先填3个坑,后面详述)make -j1 V=s (-j1 后面是线程数。第一次编译推荐用单线程)即可开始编译你要的固件了。说的就是这么简洁有力,我踩了几个坑,记录如下,可能还有更多的坑我还没有踩到
VPS的CPU、内存和硬盘空间对于编译这种固件感觉不够用,所以我是用家里i5-9400F+16G内存+系统盘50G以上空闲空间的Win10机器自带的虚拟机安装Ubuntu 18.04进行编译的,Win10安装虚拟机非常简单,0成本,不需要第三方虚拟机软件,自带的有,但是缺省没有开启,需要先开启自带虚拟机
按照L大源码仓库的说明进行系统升级、依赖安装及源码克隆,电脑开启全局代理,然后就开始漫长漫长漫长的等待,没事的时候看一眼,依赖安装及源码克隆的速度只有10几KB每秒啊, 大半天的等待以后才下完几百M的数据,并且进行第9步使用单线程编译等待3小时左右提示错误,是有些软件下载失败,被服务器拒绝,发现应该是虚拟机没有使用 Windows 全局代理,只有可怜的直连速度, 解决办法一是应该在虚拟机 Ubuntu 上安装代理软件进行全局代理
二是后来发现可以通过设置系统代理的方式给虚拟机使用的,把电脑代理软件设置成绕过局域网或者全局,输入以下命令进行代理设置, 端口根据实际情况修改,前两行是 socks5 端口,后两行是 http 端口:
$ echo "export ALL_PROXY=\"socks5://127.0.0.1:1080\"" >> ~/.bashrc
$ echo "export all_proxy=\"socks5://127.0.0.1:1080\"" >> ~/.bashrc
$ sudo tee -a /etc/apt/apt.conf <<< 'Acquire::http::Proxy "http://127.0.0.1:1080";' > /dev/null
$ sudo tee -a /etc/apt/apt.conf <<< 'Acquire::https::Proxy "http://127.0.0.1:1080";' > /dev/null
# 然后执行以下命令应用配置:
$ source ~/.bashrc
# 最后执行以下命令进行验证,无报错并显示代理 IP 则为成功:
$ sudo apt update && curl ip.sb 同时解决 git clone 慢的方法是修改 hosts 文件, 找到 GitHub.com 这个域名对应的ip地址,然后在hosts文件中加上ip–>域名的映射,刷新DNS缓存便可,查询域名对应的IP地址可以在此网站进行搜索,或者ping域名也可以得到对应的IP地址
$ sudo vi /etc/hosts
140.82.112.4 github.com
$ sudo /etc/init.d/networking restart 此坑不先填的话5、6、7步都要重新来一遍,按照L大源码仓库的说明进行编译,第7步进入到编译插件页面看不到想要的那个插件Luci-app-xxx plus,以为是编译好了会自带(太天真了吧),后来在网上查了很久才发现作者说这个是彩蛋,在feed里面隐藏了此插件,需要进行相应设置
$ git pull
$ rm -rf ./tmp
# 如果还没有编译过可以忽略上面两条
$ vi feeds.conf.default #需要将下面helloworld那一行前面的#号去掉
src-git luci https://github.com/coolsnowwolf/luci
src-git routing https://git.openwrt.org/feed/routing.git;openwrt-19.07
#src-git telephony https://git.openwrt.org/feed/telephony.git;openwrt-19.07
#src-git helloworld https://github.com/fw876/helloworld 去掉helloworld那一行前面的#号后保存,然后重新从第5步开始,就会下载相应的软件包,编译的时候就能看到了
选择好插件和主题后使用第9步编译命令进行编译,开始编译后CPU占用50%左右、内存占用8G左右,系统盘占用2G左右的空间,根据L大的说明是使用单线程进行编译,漫长等待2.5小时的不停跑码以后报错,可以看到 install 错误,根据视频主的介绍,输入以下命令,输入后没有提示,然后再一次进行编译就成功了
$ PATH=$(echo "$PATH" | sed -e 's/:\/mnt.*//g') 前两次执行第9步的时候都是根据L大的命令进行的,采用单线程的方式,都耗时3小时左右,前几个坑填完以后觉得干脆不管单线程,利用本机6核6线程进行编译应该快一些,就对命令进行了修改,去掉了单线程的限制
$ make V=s 结果这一次40分钟就编译完成,并且编译成功,安装以后可以正常使用
$ cd lede
$ git pull
$ ./scripts/feeds update -a && ./scripts/feeds install -a
$ make defconfig
$ make -j8 download
$ make -j$(($(nproc) + 1)) V=s $ cd lede
$ rm -rf ./tmp && rm -rf .config
$ git pull
$ ./scripts/feeds update -a && ./scripts/feeds install -a
$ make menuconfig
$ make -j8 download
$ make -j$(($(nproc) + 1)) V=s 前提是之前至少成功编译过一次固件
$ cd lede
$ git pull #重新拉取最新代码
$ make target/linux/compile V=s #先编译内核
$ make package/lean/luci-app-netdata/compile V=s #编译插件,此处以luci-app-netdata为例