谷动谷力

标题: openwrt开发使用-增加package [打印本页]

作者: sunsili    时间: 2023-8-1 22:14
标题: openwrt开发使用-增加package
本帖最后由 sunsili 于 2024-1-23 11:40 编辑

openwrt开发使用-增加package前言

openwrt开发中,我们经常要增加一些自定义的进程运行,这个时候怎么合入我们的整包呢,这里就用到了package增加开发。这里以oor为例进行示范:

作者:良知犹存

转载授权以及围观:欢迎关注微信公众号:羽林君

或者添加作者个人微信:become_me


package介绍:

openwrt里面有很多目录,其中package这个目录包含了额外的软件包,可以通过OpenWrt的包管理系统进行安装。这些软件包包括各种网络服务、应用程序和工具,是我们二次开始是必须要熟悉的目录。


增加package-以oor为例:oor介绍:

不过它比较老,最近的维护都是几年前,所以适配新的openwrt要做些修改

我的是openwrt 22.03的版本。


oor增加:

找个地方拉代码

git clone https://github.com/OpenOverlayRouter/oor

把里面openWRT目录 放到openwrt/package目录,并改名叫oor目录

我就放在了package目录下:

make menuconfig配置

开始编译make package/oor/compile V=sV=s可以查看编译问题

oor问题解决:

需要修改oor老旧的makefie文件:

下面是旧的,我们进行一项一项的修改

  1. include $(TOPDIR)/rules.mk

  2. PKG_NAME:=oor
  3. PKG_REV:=2b0c0b6a5a9ed7fb987ef09b46f9c6fbfaddea4c
  4. PKG_VERSION:=1.3.0
  5. PKG_RELEASE:=6

  6. PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
  7. PKG_SOURCE_URL:=git://github.com/OpenOverlayRouter/oor.git
  8. PKG_SOURCE_PROTO:=git
  9. PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
  10. PKG_SOURCE_VERSION:=$(PKG_REV)
复制代码

编译:
  1. make package/oor/compile V=s
复制代码

这个时候会出现拉代码失败:

有三处修改,tar.gz 文件名称修改,commit id修改,clone链接修改

打开对应的github仓库


找到对应的1.3.0版本,看到最近的commit id是d86a56e

在全部的提交信息搜索d86a56e

复制commit id

修改对应的PKG_REV, 其次修改PKG_SOURCE_URL链接,改成

https://github.com/OpenOverlayRouter/oor.git,

最后修改PKG_SOURCE,因为在验证下载oor仓库版本时候,发现文件是.tar.gz

最终修改后的内容

  1. include $(TOPDIR)/rules.mk

  2. PKG_NAME:=oor
  3. PKG_REV:=d86a56e3440c1c190ec2c9370ed5f12285b79b46
  4. PKG_VERSION:=1.3.0
  5. PKG_RELEASE:=6

  6. PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
  7. PKG_SOURCE_URL:=https://github.com/OpenOverlayRouter/oor.git
  8. PKG_SOURCE_PROTO:=git
  9. PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
  10. PKG_SOURCE_VERSION:=$(PKG_REV)
复制代码

编译发现可以正常下载:

  1. make package/oor/compile V=s
复制代码

不过到最后,发现编译代码有问题

经过查看发现时原始代码太老,写的有问题,那我们就用增加一个patch方法修改我们的github仓库代码

首先在package/oor目录建立一个patches目录

其次在build_dir目录找到对应下载的oor-1.3.0目录,拷贝一个待修改版本

  1. cp -rp oor-1.3.0 oor-1.3.0-bak
复制代码

开始修改,cd oor-1.3.0-bak,修改tun.htun.c,vi oor/data-plane/tun/tun.h

变量增加extern

  1. extern int tun_receive_fd;
  2. extern int tun_ifindex;
  3. extern uint8_t *tun_receive_buf;
复制代码
vi打开编辑tun.c文件
  1. vi oor/data-plane/tun/tun.c
复制代码

增加变量申明

  1. int tun_receive_fd;
  2. int tun_ifindex;
  3. uint8_t *tun_receive_buf;
复制代码

修改代码,生成patch,

  1. diff -urN oor-1.3.0 oor-1.3.0-bak/ > 001.patch
复制代码

将001.patch放入patches目录

  1. scp 001.patch /home/lyn/Documents/lyn_work/openwrt/package/oor/patches/
复制代码



oor 编译完成:

再次编译,001.patch会打到oor代码里面,问题解决

  1. make package/oor/compile V=s
复制代码

拷贝ipk到路由器

  1. scp bin/packages/mipsel_24kc/base/oor_1.3.0-6_mipsel_24kc.ipk root@192.168.1.1:/tmp
复制代码


在路由器安装

  1. opkg install /tmp/ oor_1.3.0-6_mipsel_24kc.ipk
复制代码

也可以把路由器的整个固件进行拷贝sysupgrade升级。oor还有些依赖也是同样的方法处理。


结语

这就是我自己在openwrt增加package的分享。如果大家有更好的想法,也欢迎大家加我好友交流分享哈。


作者:良知犹存,白天努力工作,晚上原创公号号主。公众号内容除了技术还有些人生感悟,一个认真输出内容的职场老司机,也是一个技术之外丰富生活的人,摄影、音乐 and 篮球。关注我,与我一起同行。







欢迎光临 谷动谷力 (http://bbs.sunsili.com/) Powered by Discuz! X3.2