openwrt编译,添加自制二进制文件/添加包
文章目录
记录自己将V2RAY二进制可执行文件制作一个包,编译到路由器固件中, 并添加luci(网页)界面支持.
编译二进制文件
编译二进制文件我是交叉编译, windows下直接编译路由器用的V2RAY-core执行文件.
也可以下载官方已经编译好的二进制文件.
关于编译二进制文件我前面博文有记录 --> < openwrt路由器添加编译器gcc和go语言 >
新建一个软件包
也就是制作一个openwrt安装用的软件包.
在package目录新建一个v2ray-bin的目录
#新建目录
mkdir package/v2ray-bin
mkdir package/v2ray-bin/files
#拷贝编译好的v2ray文件到files文件夹
cp xxx/v2ray package/v2ray-bin/files
cp xxx/v2ctl package/v2ray-bin/files #可选,这个文件可能用不上.
# 编辑makefile文件
vi package/v2ray-bin/Makefile
编辑Makefile
相关说明我已经在文件里面了.
include $(TOPDIR)/rules.mk
# PAK NAME 必须和包所在文件夹一样.
PKG_NAME:=v2ray-bin
# 下面三个参数随便填写.
PKG_VERSION:=20200930
PKG_RELEASE:=1
PKG_MAINTAINER:=Y.A.K.E
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)
include $(INCLUDE_DIR)/package.mk
# 下面是显示在menuconfig中的菜单路径
# SUBMENU后面跟着的是我自己diy的一个菜单选项,
# 这个菜单里面全是自己的包,比较好找.
define Package/$(PKG_NAME)
SECTION:=net
CATEGORY:=Network
SUBMENU:=00.Y.A.K.E_BIN
PKGARCH:=all
TITLE:=v2ray bin
endef
# 包介绍说明,不要用中文.
define Package/$(PKG_NAME)/description
v2ray bin ~~~~
endef
define Package/$(PKG_NAME)/preinst
endef
# 安装后执行的脚本
# 这里大概作用就是安装后给./usr/bin/v2ray添加执行权限.
define Package/$(PKG_NAME)/postinst
#!/bin/sh
if [ -z "$${IPKG_INSTROOT}" ]; then
chmod 755 "$${IPKG_INSTROOT}/usr/bin/v2ray" >/dev/null 2>&1
chmod 755 "$${IPKG_INSTROOT}/usr/bin/v2ctl" >/dev/null 2>&1
fi
exit 0
endef
define Build/Prepare
endef
define Build/Configure
endef
define Build/Compile
endef
# 安装作业
# 这里一般就是复制文件
# 如果有更多文件直接参考修改,非常简单.
define Package/$(PKG_NAME)/install
# 两条命令一组
# 第一条是指定复制到的目录
# 第二条是拷贝文件.
$(INSTALL_DIR) $(1)/usr/bin
$(INSTALL_BIN) ./files/v2ray $(1)/usr/bin
$(INSTALL_DIR) $(1)/usr/bin
$(INSTALL_BIN) ./files/v2ctl $(1)/usr/bin
endef
$(eval $(call BuildPackage,$(PKG_NAME)))
执行顺序
preinst : 安装前执行 , 一般可以用来新建目录 ,如果文件拷贝到一个不存在的目录会出错,所以有些需要安装前新建目录.或者处理一些文件冲突,将原来的文件备份...
postinst : 安装完成执行 ,一般就是安装后给权限,或者直接启动.
prerm : 卸载前执行
postrm : 卸载完成执行
让openwrt打包这个包
直接meka menuconfig即可,
我按前面我自己指定路径
Network --> 00.Y.A.K.E_BIN 菜单里面.
用数字0排的比较靠前,这是VX梗,在这里也是.数字排的靠前
按空格选择自己的包
* 号 : 表示默认打包到 openwrt里面
M : 表示仅编译,不打包
空白 : 不处理
之后像编译openwrt一样.
无论选"M"还是"*"生成的包,都会在bin目录,用find搜索ipk文件即可.
单独处理包
如果只是单独编译这个包
下面三条命令不需要一起执行的.需要清理的的时候执行清理指令即可.
#清理
make package/v2ray-bin/clean
#编译
make package/v2ray-bin/compile
#安装
make package/v2ray-bin/install
我用过,只是自己记录下,偶尔需要用.
编译指令只是将项目编译,安装指令才会生成ipk包? (疑问句)
添加Luci支持
也就是添加路由器网页管理页面操作的支持.
luci有大佬做了现成的项目.
这里就是直接clone别人项目到package目录即可
#克隆远程项目并指定分支到 package目录
git clone -b luci2 https://github.com/kuoruan/luci-app-v2ray.git package/luci-app-v2ray
然后直接make menuconfig 在luci-->App...找到并勾选即可.
烧录
不作解释.
luci界面检测到版本V2RAY脚本表示V2RAY正常.
其他配置后面博文再作说明
补充
我上面演示只是为了演示下二进制文件/或者其他文件打包.编译的情况
如果想要直接编译V2RAY-CORE可以参考这个,
https://github.com/kuoruan/openwrt-v2ray
参考
https://wiki.openwrt.org/zh-cn/doc/devel/packages
https://github.com/kuoruan/luci-app-v2ray
https://blog.csdn.net/TSZ0000/article/details/87176944