记录自己将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