本文将step by step介绍从编译环境搭建、源码下载、menuconfig到编译出IMG的整个过程。
刚开始装的是Ubuntu22,结果编译过程中有些问题,后来换回Ubuntu20就好了,所以建议稳妥点就20环境。
刚装完的系统,需要按照一些基本的开发套件,反正一股脑全部敲了好了。
sudo apt install build-essential
sudo apt-get install python3-distutils
sudo apt-get install gcc g++ binutils patch bzip2 flex bison make autoconf gettext texinfo unzip sharutils subversion libncurses5-dev ncurses-term zlib1g-dev subversion git-core gawk asciidoc libz-dev zlib1g-dev libssl-dev
因为国内直连官方建议的源码地址https://git.openwrt.org/openwrt/staging/wigyori.git的下载网速就2K,而且一会就断了。后来搭了个梯子,下载到WIN11系统,然后再SCP至编译主机,然后各种权限问题,加上后来绕不过feeds update的问题,于是放弃。
最后采用的是同步至gitee,然后从gitee下载源码的曲线救国方案,虽然gitee同步时常抽风,路途虽远,anyway总算下载下来了。
源码git clone下来后,cd wigyori/
下切换branch:
git checkout riscv-jh71x0-202308b
配置OpenWRT通过在wigyori目录下执行make menuconfig
命令,主要包括开发板BSP配置、LuCI网页配置和无线网络配置。
feeds.conf.default文件中保存着OpenWRT的附加软件包管理器的扩展包索引目录,就是下载管理软件包的,默认的feeds
下载有packages、luci、routing、telephony
。常见的内容如下:
src-git packages https://git.openwrt.org/feed/packages.git
src-git luci https://git.openwrt.org/project/luci.git
src-git routing https://git.openwrt.org/feed/routing.git
src-git telephony https://git.openwrt.org/feed/telephony.git
#src-git video https://github.com/openwrt/video.git
#src-git targets https://github.com/openwrt/targets.git
#src-git oldpackages http://git.openwrt.org/packages.git
#src-link custom /usr/src/openwrt/custom-feed
因为git.openwrt.org坑爹网速,所以我们还是采用gitee同步大法,同步后的gitee地址更新至feeds.conf.default文件。
因为VF2的BSP早就有大神配置好了,我们只需要在menu中选择即可。
1、选择Target System (StarFive JH71x0 (7100/7110))
2、再选择Target Profile (StarFive VisionFive 2 v1.3b)
(手头的VF2是1.3b版,具体看PCB正面的版本号)
3、Target Image
配置如下:
save后退出。
UCI 是 Openwrt 中为实现所有系统配置的一个统一接口,英文名 Unified Configuration Interface,即统一配置接口。轻量级 LUA 语言的官方版本只包括一个精简的核心和最基本的库,这使得 LUA 体积小、启动速度快,从而适合嵌入在别的程序里。 LuCI 即是这两个项目的合体,可以实现路由的网页配置界面。先安装LuCI ,执行./scripts/feeds update packages luci
& ./scripts/feeds install -a -p luci
。
然后行make menuconfig
进行LuCI网页配置。
1、-> Network -> Web Servers/Proxies -> < *> uhttpd;
2、-> LuCI -> 1. Collections -> <* > luci
3、-> LuCI -> 2. Modules -> Translations -> <*> Chinese Simplified (zh_Hans)
4、-> LuCI -> 3. Applications -> <* > luci-app-ddns
-> LuCI -> 3. Applications -> <* > luci-app-firewall
-> LuCI -> 3. Applications -> <* > luci-app-ntpc
-> LuCI -> 3. Applications -> <* > luci-app-samba4
-> LuCI -> 3. Applications -> <* > luci-app-uhttpd
5、-> LuCI -> 4. Themes ->全选
具体截图就不附上了。
VF2板上没有WIFI模组,手头有个MT7601U的USB WiFi卡,一并加上。
1、配置kernel驱动
-> Kernel modules -> Wireless Driver -> < *> kmod-cfg80211
-> Kernel modules -> Wireless Driver -> < *> kmod-cfg80211
-> Kernel modules -> Wireless Driver -> < *> kmod-mt7601u
2、配置WirelessAPD框架
-> Network -> WirelessAPD -> < *> wpad-basic-mbedtls
-> Network -> WirelessAPD ->< *> hostapd-common
-> Network -> WirelessAPD ->< *> wpa-cli
-> Network -> WirelessAPD ->< *> hostapd-utils
下载全部选择好的软件包
./scripts/feeds update -a
./scripts/feeds install -a
make download V=s
在线下载文件包,由于网络关系导致某些文件包无法下载而中断编译过程。一方面可以重复执行make download V=s
命令重新下载,另一种解决方法则是查找出错的包名,至ftp://ftp.gnu.org/gnu/手动下载对应文件包,并复制至“dl”目录后重新编译,直至全部完成。
因为我的Ubuntu机器硬件不行,所以直接make
了,硬件比较高的机器可以make -j4
甚至make -j8
加快编译速度。
大约6-8小时候,终于编完了。
一是https://git.openwrt.org/速度真的太慢了,本次大部分时间耗费在源码下载的解决上,gitee同步勉强能用。
二是新手编译务必按照步骤来,不要乱序,否则很多莫名其妙的问题。
三是编译环境很重要,要想少问题,直接Ubuntu20。
更多回帖