自己动手编译luci-app-xx包
做个笔记,下次用的时候,方便回忆。
为什么要自己动手编译 luci-app-xx包
我的路由器当年买的早了 是 128M 内存,但目前openwrt官方支持的 23.05 和24.10固件 开机 就默认72+的内存了,占比62% 以上 装插件有点困难了。
我观察了下用21.02 和 22.03版本固件的话,路由器开机内存占用只有42M多一点 占比35%。适合我装插件
对比发现主要是升级了 Linux 内核,从5.x升级到6.x了,也没关注到底增加了那些功能,但对我的老旧设备来说还是用低版本吧。
结果发现,有的插件几乎现在不提供23.05以下的包了,所以自己编译吧。上网做功课,花了4个小时基本搞定,写个记录。
操作系统
推荐在 Ubuntu 20.04 或更高版本(如 22.04、24.04)上操作。以下是最常用且覆盖大多数场景的安装命令(基于 OpenWrt 官方文档和社区实践):
sudo apt update
sudo apt install build-essential clang flex bison g++ gawk gcc-multilib g++-multilib gettext git libncurses5-dev libssl-dev zlib1g-dev python3 python3-distutils python3-setuptools rsync swig unzip wget quilt libglib2.0-dev libarchive-dev xsltproc
解释主要包的作用
build-essential:基本编译工具(gcc、make 等)。
git:克隆 OpenWrt 源码。
libncurses5-dev:支持 make menuconfig 配置界面。
libssl-dev:加密相关支持。
zlib1g-dev:压缩支持。
python3 和相关:Python 脚本支持(新版 Ubuntu 用 python3-setuptools 替换 distutils)。
flex、bison、gawk:解析和脚本工具。
rsync、unzip、wget、quilt:下载、解压和补丁管理。
swig:某些包需要。
确定你的目标设备架构
也就是路由器用的什么CPU 是否在openwrt系统的支持列表。你需要知道路由器的具体目标系统(target/subtarget),例如:ramips/mt7621 ath79/generic 如果不确定,可以在运行中的 OpenWrt 系统的状态页面可以看到。
下载对应的 OpenWrt 22.03.7 SDK
去官网下载页面:https://downloads.openwrt.org/releases/22.03.7/targets/
解压SDK
tar -Jxf openwrt-sdk-22.03.7-ramips-mt7621_*_Linux-x86_64.tar.xz
cd openwrt-sdk-*/
后面的操作都时以这个目录为 当前目录
1.编辑 feeds
用文本编辑器gedit 修改sdk目录下的 feeds.conf.default
确保有:
src-git packages https://git.openwrt.org/feed/packages.git;openwrt-22.03 src-git luci https://git.openwrt.org/project/luci.git;openwrt-22.03 src-git routing https://git.openwrt.org/feed/routing.git;openwrt-22.03 src-git telephony https://git.openwrt.org/feed/telephony.git;openwrt-22.03
2.更新 feeds
./scripts/feeds update -a
3.安装 LuCI 基础包
./scripts/feeds install -a
编译 passwall
拿这个依赖很多的包练练手
编辑 feeds.conf.default,追加一行:
src-git passwall https://github.com/xiaorouji/openwrt-passwall.git;main
重新执行
./scripts/feeds update -a ./scripts/feeds install -a
会提示
WARNING: No feed for package 'chinadns-ng' found
WARNING: No feed for package 'dns2socks' found
WARNING: No feed for package 'microsocks' found
WARNING: No feed for package 'tcping' found
不用担心,passwall会有提供的单独安装包。我们在编译的时候 注意 Error错误,警告可以忽略。
查看目录结构 主要找 Makefile 在那
./feeds/passwall/luci-app-passwall/Makefile
修改Makefile 因为我们是降级移植app
LUCI_DEPENDS:=+coreutils +coreutils-base64 +coreutils-nohup +curl \ +chinadns-ng +dns2socks +dnsmasq-full +ip-full \ +luci-base +luci-compat +luci-lib-jsonc \ +microsocks +resolveip +tcping \ +kmod-nft-socket +kmod-nft-tproxy +iptables +ipset
配置编译选项
make menuconfig
如果在里面选错了 怎么恢复默认值
1.恢复 OpenWrt 官方默认
rm -f .config make defconfig
效果:等同于“从没进过 menuconfig” 所有选项恢复为默认 最干净、最不容易出问题
2.保留架构,仅重置包选择 大多数情况应该是这个 因为我们下载SDK就是为了编译包。在make menuconfig菜单里:
Exit → Exit → Load Defaults → Yes → Save
也就是加载默认 直接保存。然后重新选择。
开始编译。注意这里的路径写法和 上面那个Makefile所在目录的对应关系
make -j6 package/feeds/passwall/luci-app-passwall/compile V=s
一定请注意这里的 命令路径 和 对应的上面 源代码的 路径关系.
最终会在 */bin/packages/下生成*.ipk
编译 : luci-app-xray
1.编辑 feeds
用文本编辑器gedit 修改sdk目录下的 feeds.conf.default
确保有:
src-git packages https://git.openwrt.org/feed/packages.git;openwrt-22.03 src-git luci https://git.openwrt.org/project/luci.git;openwrt-22.03 src-git routing https://git.openwrt.org/feed/routing.git;openwrt-22.03 src-git telephony https://git.openwrt.org/feed/telephony.git;openwrt-22.03
追加一行:
src-git luci_app_xray https://github.com/yichya/luci-app-xray.git;master
然后执行
./scripts/feeds update -a ./scripts/feeds install -a
接着 make menuconfig
在 扩展app 里 选择 luci-app-xray
分别编译
make package/feeds/luci_app_xray/core/compile V=s make -j6 package/feeds/luci_app_xray/geodata/compile V=s make -j6 package/feeds/luci_app_xray/status/compile V=s
安装
opkg install luci-app-xxx.ipk
忽略依赖 安装 基本废了 关键性依赖 没有跑不起来
opkg install *.ipk --force-depends
当然这样操作是为了: 先验证功能,依赖问题后面再补。
3️
让 luci-web界面 早点显示出来 重启uhttpd
/etc/init.d/uhttpd restart
删除清理
rm -rf /tmp/luci-*
后面了 再补充。
测试
还需要 安装几个依赖
opkg install iptables-mod-tproxy iptables-mod-socket iptables-mod-iprange iptables-mod-conntrack-extra kmod-ipt-nat
可以正常运行
登录后可以发表评论与回复。
还没有评论,来做第一个发言的人。