自己动手编译luci-app-xx包

博客 321次浏览 收藏

做个笔记,下次用的时候,方便回忆。


为什么要自己动手编译 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


可以正常运行


评论

登录后可以发表评论与回复。

还没有评论,来做第一个发言的人。