openwrt開發(fā)使用-增加package
前言
openwrt開發(fā)中,我們經(jīng)常要增加一些自定義的進程運行,這個時候怎么合入我們的整包呢,這里就用到了package增加開發(fā)。這里以oor為例進行示范:
作者:良知猶存
轉(zhuǎn)載授權(quán)以及圍觀:歡迎關(guān)注微信公眾號:羽林君
或者添加作者個人微信:become_me
package介紹:
openwrt里面有很多目錄,其中package這個目錄包含了額外的軟件包,可以通過OpenWrt的包管理系統(tǒng)進行安裝。這些軟件包包括各種網(wǎng)絡(luò)服務(wù)、應(yīng)用程序和工具,是我們二次開始是必須要熟悉的目錄。
增加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文件:
下面是舊的,我們進行一項一項的修改
include $(TOPDIR)/rules.mk
PKG_NAME:=oor
PKG_REV:=2b0c0b6a5a9ed7fb987ef09b46f9c6fbfaddea4c
PKG_VERSION:=1.3.0
PKG_RELEASE:=6
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=git://github.com/OpenOverlayRouter/oor.git
PKG_SOURCE_PROTO:=git
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
PKG_SOURCE_VERSION:=$(PKG_REV)
make package/oor/compile V=s這個時候會出現(xiàn)拉代碼失敗:
有三處修改,tar.gz 文件名稱修改,commit id修改,clone鏈接修改
打開對應(yīng)的github倉庫
找到對應(yīng)的1.3.0版本,看到最近的commit id是d86a56e
在全部的提交信息搜索d86a56e
復(fù)制commit id
修改對應(yīng)的PKG_REV, 其次修改PKG_SOURCE_URL鏈接,改成https://github.com/OpenOverlayRouter/oor.git,最后修改PKG_SOURCE,因為在驗證下載oor倉庫版本時候,發(fā)現(xiàn)文件是.tar.gz
最終修改后的內(nèi)容
include $(TOPDIR)/rules.mk
PKG_NAME:=oor
PKG_REV:=d86a56e3440c1c190ec2c9370ed5f12285b79b46
PKG_VERSION:=1.3.0
PKG_RELEASE:=6
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://github.com/OpenOverlayRouter/oor.git
PKG_SOURCE_PROTO:=git
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
PKG_SOURCE_VERSION:=$(PKG_REV)
make package/oor/compile V=s,編譯發(fā)現(xiàn)可以正常下載:
不過到最后,發(fā)現(xiàn)編譯代碼有問題
經(jīng)過查看發(fā)現(xiàn)時原始代碼太老,寫的有問題,那我們就用增加一個patch方法修改我們的github倉庫代碼
首先在package/oor目錄建立一個patches目錄
其次在build_dir目錄找到對應(yīng)下載的oor-1.3.0目錄,拷貝一個待修改版本cp -rp oor-1.3.0 oor-1.3.0-bak
開始修改,cd oor-1.3.0-bak,修改tun.h和tun.c,vi oor/data-plane/tun/tun.h
變量增加extern
extern int tun_receive_fd;
extern int tun_ifindex;
extern uint8_t *tun_receive_buf;
vi oor/data-plane/tun/tun.c 增加變量申明
int tun_receive_fd;
int tun_ifindex;
uint8_t *tun_receive_buf;
修改代碼,生成patch,diff -urN oor-1.3.0 oor-1.3.0-bak/ > 001.patch
將001.patch放入patches目錄
scp 001.patch /home/lyn/Documents/lyn_work/openwrt/package/oor/patches/
oor 編譯完成:
再次編譯,001.patch會打到oor代碼里面,問題解決make package/oor/compile V=s
拷貝ipk到路由器
scp bin/packages/mipsel_24kc/base/oor_1.3.0-6_mipsel_24kc.ipk [email protected]:/tmp
在路由器安裝opkg install /tmp/ oor_1.3.0-6_mipsel_24kc.ipk
也可以把路由器的整個固件進行拷貝sysupgrade升級。oor還有些依賴也是同樣的方法處理。
結(jié)語
這就是我自己在openwrt增加package的分享。如果大家有更好的想法,也歡迎大家加我好友交流分享哈。
作者:良知猶存,白天努力工作,晚上原創(chuàng)公號號主。公眾號內(nèi)容除了技術(shù)還有些人生感悟,一個認真輸出內(nèi)容的職場老司機,也是一個技術(shù)之外豐富生活的人,攝影、音樂 and 籃球。關(guān)注我,與我一起同行。
???????????????? END ????????????????
推薦閱讀
【1】jetson nano開發(fā)使用的基礎(chǔ)詳細分享
【2】Linux開發(fā)coredump文件分析實戰(zhàn)分享
【3】CPU中的程序是怎么運行起來的 必讀
【4】cartographer環(huán)境建立以及建圖測試
【5】設(shè)計模式之簡單工廠模式、工廠模式、抽象工廠模式的對比
本公眾號全部原創(chuàng)干貨已整理成一個目錄,回復(fù)[ 資源 ]即可獲得。
