openwrt编译记录

发布时间 2024-01-12 21:55:17作者: LX2020

最近在做openwrt的开发,因此这里记录一下过程:

这里我用的编译环境是wsl2,虚拟机时ubuntu20.04,因为wsl可以更充分的使用电脑性能,这样编译的快点,实测我编译rk3568的openwrt固件大概就花了三个小时的样子。下面记录下步骤:

1、配置上网环境

这个步骤是必须的,不然会极大概率失败,我之前失败了不知道多少次,配置完之后一次就成了,这个还是很重要,不然浪费时间不说,还编不过,大家时间都是有限的,没必要浪费。

进入后这两个都要打开

image

之后编译的时候建议选择relu的模式,不然有些包也下载不下来,会报openssl的错误

image

之后就是wsl的配置了,进入虚拟机,编辑环境变量.bashrc,加入下面的内容

image

原内容为:(这里的端口配制成自己的)

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,可以看到配置成功
image

这里需要注意,就是wsl因为是和windows公用的,所以他的环境变量里面有些windows的路径,这个部分需要修改,具体参考:
https://www.right.com.cn/FORUM/thread-8212637-1-1.html

如下所示:
image

也可以像我一样,在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 ':' -)

如下所示:
image

2、编译Lubancat的镜像

这里我编译过鲁班猫的,也编译过树莓派的,都差不多,比较建议鲁班猫的,主要参考这个网页
https://doc.embedfire.com/openwrt/user_manal/zh/latest/index.html

首先还是拉代码:

git clone https://github.com/LubanCat/LubanCatWrt.git

这里直接用这个默认的分支即可,下面是他的分支说明:

image
之后是安装一些依赖包,安装就行了(更新软件源的问题这里就不赘述了)

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,就是更新软件包
image
如果执行成功会有打印,执行不成功大概率是网络问题,请检查自己的网络环境

之后开始进行编译的控制make menuconfig,第一次用默认的就行,改一下板卡
image

这里也是,选择自己的板卡
image

首先进行多线程编译(这样是因为可以编的快点)
make V=s -j56

遇到编译错误,尝试单线程编译
make V=s -j1

单线程编译报错软件包通过之后,Ctrl+C打断编译,继续使用多线程编译
make V=s -j56

最后编译好的软件就在这个路径下
image

之后用rk的工具进入烧录模式,准备烧固件(注意编译出来的镜像是压缩包,需要解压后在烧录)
image

这里是uboot和镜像一起烧录
image

烧录完成就这样了
image

3、编译树莓派openwrt镜像

主要参考:
https://blog.csdn.net/m0_52364631/article/details/117428408
https://zhuanlan.zhihu.com/p/661462395

这里我两个都试过了,lede编出来的东西多点,但是相应的编译时间也更长
image

基本上差不多,以lede为例,也是先拉代码:

git clone https://github.com/coolsnowwolf/lede

之后更新dl的包

./scripts/feeds update -a && ./scripts/feeds install -a

开始配置信息

make menuconfig

改下面三个
image

之后进入Target Images,再改一下分区大小
image

之后设置一下USB部分
image

按下esc就可以退出,之后按照提示进行保存,并输入make -j8 download V=s来下载需要的包

之后输入make -j$(($(nproc) + 1)) V=s进行编译,如果编译错误,就输入make -j1 V=s编译这样往复,最后结果如下:

image

image