最近在做openwrt的开发,因此这里记录一下过程:
这里我用的编译环境是wsl2,虚拟机时ubuntu20.04,因为wsl可以更充分的使用电脑性能,这样编译的快点,实测我编译rk3568的openwrt固件大概就花了三个小时的样子。下面记录下步骤:
1、配置上网环境
这个步骤是必须的,不然会极大概率失败,我之前失败了不知道多少次,配置完之后一次就成了,这个还是很重要,不然浪费时间不说,还编不过,大家时间都是有限的,没必要浪费。
进入后这两个都要打开
之后编译的时候建议选择relu的模式,不然有些包也下载不下来,会报openssl的错误
之后就是wsl的配置了,进入虚拟机,编辑环境变量.bashrc,加入下面的内容
原内容为:(这里的端口配制成自己的)
host_ip=$(cat /etc/resolv.conf |grep "nameserver" |cut -f 2 -d " ")
export http_proxy="http://$host_ip:7890"
export https_proxy="http://$host_ip:7890"
之后输入source ~/.bashrc
保存之前的修改,然后输入wget www.google.com
,可以看到配置成功
这里需要注意,就是wsl因为是和windows公用的,所以他的环境变量里面有些windows的路径,这个部分需要修改,具体参考:
https://www.right.com.cn/FORUM/thread-8212637-1-1.html
如下所示:
也可以像我一样,在barsh里面加一下过滤
export PATH=$(echo $PATH | sed -e 's|:[^:]*WindowsApps[^:]*||g')
export PATH=$(echo $PATH | tr ':' '\n' | grep -v NVIDIA | tr '\n' ':')
export PATH=$(echo $PATH | tr ':' '\n' | grep -v 'Files' | paste -sd ':' -)
export PATH=$(echo $PATH | tr ':' '\n' | grep -v 'VS' | paste -sd ':' -)
export PATH=$(echo $PATH | tr ':' '\n' | grep -v '/mnt/' | paste -sd ':' -)
如下所示:
2、编译Lubancat的镜像
这里我编译过鲁班猫的,也编译过树莓派的,都差不多,比较建议鲁班猫的,主要参考这个网页
https://doc.embedfire.com/openwrt/user_manal/zh/latest/index.html
首先还是拉代码:
git clone https://github.com/LubanCat/LubanCatWrt.git
这里直接用这个默认的分支即可,下面是他的分支说明:
之后是安装一些依赖包,安装就行了(更新软件源的问题这里就不赘述了)
sudo apt install -y subversion g++ zlib1g-dev build-essential git python rsync man-db
sudo apt install -y libncurses5-dev gawk gettext unzip file libssl-dev wget zip time aria2
之后进入到openwrt的目录,执行下面的命令
./mk-fire.sh
选择1,就是更新软件包
如果执行成功会有打印,执行不成功大概率是网络问题,请检查自己的网络环境
之后开始进行编译的控制make menuconfig
,第一次用默认的就行,改一下板卡
这里也是,选择自己的板卡
首先进行多线程编译(这样是因为可以编的快点)
make V=s -j56
遇到编译错误,尝试单线程编译
make V=s -j1
单线程编译报错软件包通过之后,Ctrl+C打断编译,继续使用多线程编译
make V=s -j56
最后编译好的软件就在这个路径下
之后用rk的工具进入烧录模式,准备烧固件(注意编译出来的镜像是压缩包,需要解压后在烧录)
这里是uboot和镜像一起烧录
烧录完成就这样了
3、编译树莓派openwrt镜像
主要参考:
https://blog.csdn.net/m0_52364631/article/details/117428408
https://zhuanlan.zhihu.com/p/661462395
这里我两个都试过了,lede编出来的东西多点,但是相应的编译时间也更长
基本上差不多,以lede为例,也是先拉代码:
git clone https://github.com/coolsnowwolf/lede
之后更新dl的包
./scripts/feeds update -a && ./scripts/feeds install -a
开始配置信息
make menuconfig
改下面三个
之后进入Target Images,再改一下分区大小
之后设置一下USB部分
按下esc就可以退出,之后按照提示进行保存,并输入make -j8 download V=s
来下载需要的包
之后输入make -j$(($(nproc) + 1)) V=s
进行编译,如果编译错误,就输入make -j1 V=s
编译这样往复,最后结果如下: