You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

安卓开机自定义.sh脚本仅insmod生效其余命令失效求助

分析与解决方案

嘿,我来帮你捋捋这个问题!从你描述的情况来看,insmod能正常工作但后续命令全部失效,大概率是文件写入权限或者执行环境限制导致的,咱们一步步排查:

1. 核心问题:/system 分区的只读挂载限制

安卓设备的 /system 分区默认是只读挂载的——哪怕你是以root身份运行,也没法直接往 /system/etc 目录里写入文件。这就是为什么 lsmod > /system/etc/curlsmod 这类输出文件没生成、iptables规则的结果也存不下来的根本原因。

解决方法很简单:在脚本开头先把 /system 重新挂载为可读写,执行完所有操作后再改回只读(保证系统稳定性):

#!/system/bin/sh
# 先将/system挂载为可读写
mount -o remount,rw /system

# 原有的命令逻辑
insmod /system/lib/modules/xt_HL.ko
lsmod > /system/etc/curlsmod
/system/bin/iptables -t mangle -L > /system/etc/preiptables
/system/bin/iptables -t mangle -A POSTROUTING -o rmnet+ -j TTL --ttl-set 64
/system/bin/iptables -t mangle -L > /system/etc/postiptables

# 恢复/system为只读(可选但推荐)
mount -o remount,ro /system

2. 给命令加错误日志,精准定位问题

如果还是有问题,可以给每个命令加上错误输出重定向,这样能直接看到失败原因:

insmod /system/lib/modules/xt_HL.ko 2>/system/etc/insmod_err.log
lsmod > /system/etc/curlsmod 2>/system/etc/lsmod_err.log
/system/bin/iptables -t mangle -L > /system/etc/preiptables 2>/system/etc/preiptables_err.log
/system/bin/iptables -t mangle -A POSTROUTING -o rmnet+ -j TTL --ttl-set 64 2>/system/etc/iptables_err.log
/system/bin/iptables -t mangle -L > /system/etc/postiptables 2>/system/etc/postiptables_err.log

开机后查看这些_err.log文件,就能明确是权限问题、命令不存在还是接口名错误。

3. 其他可能的小问题

  • 脚本权限规范:你当前设置的644权限虽然能通过sh调用运行,但为了兼容性,建议改成755:chmod 755 /system/etc/init.fairnet.sh
  • iptables路径验证:有些定制ROM的iptables可能不在/system/bin/下,手动执行which iptables确认路径后再修改脚本
  • 网络接口名检查:rmnet+不一定是你设备的移动数据接口,开机后执行ip link show查看实际接口名(比如rmnet0、rmnet_data0),替换掉脚本里的rmnet+

内容的提问来源于stack exchange,提问作者mustafadjan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:48:50