本帖最后由 怀揣少年梦 于 2023-8-15 23:57 编辑
###一、openwrt是什么?
openwrt是一个常用于路由器嵌入式linux操作系统,它具有高度模块化、高度自动化,拥有强大的网络组件和扩展性的特点。
###二、openwrt可以用来干什么
1.学习linux;
2.定制自己的路由器开发功能,访问外网或者做内网穿透。
###三、移植openwrt到starfive2
以下仓库链接均是个人仓库从https://gitclone.com/git.openwrt.org/openwrt/staging/hauke.git导入的。
####1.下载openwrt源码
git clone https://gitee.com/liu-xingguo/hauke.git
####2.下载后,切换分支(支持visionfive的分支)
git checkout -t origin/kitchensink-202205-2
####3.下载相关软件package
下载源码后,首先要做的就是下载安装软件包列表,因为安装软件包后,menuconfig配置界面才会有相关设备和软件包。
a.先更新下载源
因为源都是github上的。我同步了github仓库到gitee上。所以在feeds.文件中把之前的注释掉,加上gitee的仓库链接,如下。
```c
src-git-full packages https://gitee.com/liu-xingguo/packages.git^3ea3a0657775d5eceecf2c8ea847dbe00ecb5870
src-git-full luci https://gitee.com/liu-xingguo/luci.git^51e4558461cfc7339461dcd5c7516957b2d01a29
src-git-full routing https://gitee.com/liu-xingguo/routing.git^cc1dd763e08cc03926883a8943212f7edf2bf2ce
src-git-full telephony https://gitee.com/liu-xingguo/telephony.git^5087c7ecbc4f4e3227bd16c6f4d1efb0d3edf460
```
b.下载指令
./scripts/feeds update -a
下载10分钟左右,就下载完了。下载了四个仓库。
下载完成
4.安装相关软件包
安装指令
./scripts/feeds install -a
安装完成
以上两个下载安装指令主要是使用了feeds脚本。
5.配置
说明,由于hauke仓库没有visionfive2设备,因此是基于visionfive修改进行编译
根目录下执行make menuconfig
1)选择target system
2)选择target profile
3)选择生成的文件
4)配置luci web界面
5)配置外部内核路径
主要是由于openwrt与开发部很多配置不一样,所以需要用星光2开发板自己的内核
不过,在配置之前,建议先编译一下内核,确保在openwrt编译的时候不会报错。
内核编译参考链接:
https://doc.rvspace.org/VisionFive2/SW_TRM/VisionFive2_SW_TRM/swtrm_compiling_linux_kernel%20-%20vf2.html
编译完之后,还需要在内核目录的.config文件中修改编译环境;
在.config文件中加入如下:
```c
CONFIG_CC_VERSION_TEXT="riscv64-openwrt-linux-musl-gcc (OpenWrt GCC 11.2.0 r19678-ddd46033c2) 11.2.0"
CONFIG_CC_IS_GCC=y
CONFIG_GCC_VERSION=110200
CONFIG_CLANG_VERSION=0
CONFIG_AS_IS_GNU=y
CONFIG_AS_VERSION=23700
CONFIG_LD_IS_BFD=y
CONFIG_LD_VERSION=23700
CONFIG_LLD_VERSION=0
CONFIG_CC_CAN_LINK=y
CONFIG_CC_CAN_LINK_STATIC=y
CONFIG_CC_HAS_ASM_GOTO=y
CONFIG_CC_HAS_ASM_GOTO_OUTPUT=y
CONFIG_CC_HAS_ASM_INLINE=y
CONFIG_CC_HAS_NO_PROFILE_FN_ATTR=y
CONFIG_IRQ_WORK=y
CONFIG_BUILDTIME_TABLE_SORT=y
CONFIG_THREAD_INFO_IN_TASK=y
```
6)修改Makefile文件
在hauke-starfive2/hauke/target/linux/visionfive/image目录,使用vim打开Makefile,在dts那一行修改为starfive/jh7110_visionfive_v2.dts
6.编译
1)下载dl包
整个编译过程耗时主要在下载相关工具软件包,其实可以直接下载相关软件包,缩短编译时间。
具体操作如下:
1)在根目录创建dl文件夹
2)单独下载所需要的软件包
我已经打包好所有软件。链接如下:
链接:https://pan.baidu.com/s/187ytBTfFLFO3z_-xBMIgaA
提取码:2d32
2)编译
make V=99
3)编译成功
4)编译生成物
###四、编译报错
1、显示undefined reference to 'pthread_once'
解决方法;
在内核目录scripts/Makefile 在CRYPTO_LIBS 这一行加上-pthread
2、lzo.ko is missing
解决方法:添加lzo压缩
3、asm/rwonce.h:No such file or directory
解决方法,把下面这一行删掉即可
以上就是openwrt移植visionfive2上篇--编译篇,下篇就是移植具体文件到开发板上。