网络持久化与启动脚本
概述
本文档详细记录了 ZTE B860AV1.1-T2 机顶盒的网络配置持久化方法,包括 WiFi 驱动加载、wpa_supplicant 配置、DHCP 获取 IP、以及启动脚本的创建和维护。
1. 网络架构
1.1 网络接口
网络接口
├── eth0 - 有线以太网
├── wlan0 - 无线 WiFi
├── lo - 回环接口
└── eth0.2685 - VLAN 接口1.2 网络配置流程
启动
├── 加载 WiFi 驱动 (8189fs.ko)
├── 启动 wpa_supplicant
├── 连接到 WiFi 网络
├── 获取 IP 地址 (DHCP)
├── 配置 DNS
└── 启用 ADB over TCP2. WiFi 驱动管理
2.1 驱动信息
驱动名称: 8189fs
驱动文件: /system/lib/modules/8189fs.ko
芯片型号: Realtek RTL8189FS
接口类型: SDIO2.2 驱动加载
bash
# 手动加载驱动
insmod /system/lib/modules/8189fs.ko
# 验证驱动加载
lsmod | grep 8189
# 检查网络接口
ifconfig wlan02.3 驱动卸载
bash
# 卸载驱动
rmmod 8189fs
# 或者
modprobe -r 8189fs2.4 驱动参数
bash
# 查看驱动参数
modinfo 8189fs
# 常用参数:
# - rtw_initmac: MAC 地址
# - rtw_ips_mode: 省电模式
# - rtw_power_mgnt: 电源管理3. wpa_supplicant 配置
3.1 配置文件格式
# /data/wpa.conf
ctrl_interface=/var/run/wpa_supplicant
network={
ssid="Xiaomi_F5A3"
psk="123456789"
key_mgmt=WPA-PSK
}3.2 配置参数说明
| 参数 | 描述 | 示例 |
|---|---|---|
| ssid | 网络名称 | "Xiaomi_F5A3" |
| psk | 密码 | "123456789" |
| key_mgmt | 密钥管理 | WPA-PSK |
| pairwise | 配对加密 | CCMP |
| group | 组加密 | TKIP CCMP |
3.3 wpa_supplicant 命令
bash
# 启动 wpa_supplicant
wpa_supplicant -B -iwlan0 -c /data/wpa.conf
# 参数说明:
# -B: 后台运行
# -iwlan0: 指定接口
# -c /data/wpa.conf: 指定配置文件
# 停止 wpa_supplicant
killall wpa_supplicant
# 查看状态
wpa_cli -i wlan0 status3.4 wpa_cli 交互
bash
# 进入交互模式
wpa_cli -i wlan0
# 扫描网络
> scan
> scan_results
# 连接网络
> add_network
> set_network 0 ssid "Xiaomi_F5A3"
> set_network 0 psk "123456789"
> set_network 0 key_mgmt WPA-PSK
> enable_network 0
# 查看状态
> status
> signal_poll4. DHCP 配置
4.1 dhcpcd 命令
bash
# 获取 IP 地址
dhcpcd wlan0
# 释放 IP 地址
dhcpcd -k wlan0
# 后台运行
dhcpcd -B wlan04.2 静态 IP 配置
bash
# 配置静态 IP
ifconfig wlan0 192.168.31.209 netmask 255.255.255.0
# 配置默认网关
route add default gw 192.168.31.1
# 配置 DNS
echo "nameserver 8.8.8.8" > /etc/resolv.conf
echo "nameserver 8.8.4.4" >> /etc/resolv.conf4.3 网络配置文件
bash
# /etc/network/interfaces
auto wlan0
iface wlan0 inet dhcp
wpa-ssid "Xiaomi_F5A3"
wpa-psk "123456789"5. DNS 配置
5.1 Android DNS 机制
Android 使用系统属性配置 DNS:
bash
# 设置 DNS 服务器
setprop net.dns1 8.8.8.8
setprop net.dns2 8.8.4.4
# 查看当前 DNS
getprop net.dns1
getprop net.dns25.2 resolv.conf 配置
bash
# /etc/resolv.conf
nameserver 8.8.8.8
nameserver 8.8.4.4
nameserver 114.114.114.1145.3 DNS 测试
bash
# 测试 DNS 解析
nslookup google.com
ping -c 1 google.com
# 查看 DNS 缓存
dumpsys connectivity6. ADB over TCP 配置
6.1 启用 ADB over TCP
bash
# 设置 ADB TCP 端口
setprop service.adb.tcp.port 5555
# 重启 ADB 服务
stop adbd
start adbd
# 验证 ADB 状态
getprop service.adb.tcp.port6.2 连接 ADB
bash
# 从电脑连接
adb connect 192.168.31.209:5555
# 验证连接
adb devices
# 断开连接
adb disconnect 192.168.31.209:55556.3 ADB 安全配置
bash
# 禁用 ADB 认证
setprop ro.adb.secure 0
# 或者配置认证
setprop ro.adb.secure 17. 启动脚本
7.1 启动流程
Android 启动
├── init 进程
│ ├── 解析 init.rc
│ ├── 启动服务
│ └── 触发事件
├── late_start 事件
│ └── ethernet 服务
│ └── /system/etc/eth0.sh
└── 用户空间
└── 应用程序7.2 eth0.sh 脚本
bash
#!/system/bin/sh
# eth0.sh - 网络初始化脚本
# 加载 WiFi 驱动
insmod /system/lib/modules/8189fs.ko
sleep 2
# 启动 wpa_supplicant
wpa_supplicant -B -iwlan0 -c /data/wpa.conf
sleep 3
# 获取 IP 地址
dhcpcd wlan0
sleep 2
# 配置 DNS
setprop net.dns1 8.8.8.8
setprop net.dns2 8.8.4.4
# 启用 ADB over TCP
setprop service.adb.tcp.port 5555
stop adbd
start adbd
# 设置主机名
setprop persist.sys.hostname alpine
setprop net.hostname alpine
# 设置路由
route add default gw 192.168.31.1
echo "网络初始化完成"7.3 install-recovery.sh 脚本
bash
#!/system/bin/sh
# install-recovery.sh - 主初始化脚本
# 调用 eth0.sh 进行网络初始化
/system/etc/eth0.sh
# 可以添加其他初始化任务
# 例如:
# - 启动自定义服务
# - 配置系统参数
# - 挂载文件系统7.4 init.rc 配置
bash
# init.rc 中的 ethernet 服务配置
service ethernet /system/etc/eth0.sh
class late_start
user root
group root
oneshot
disabled8. 脚本持久化
8.1 持久化挑战
问题: 系统重启后脚本丢失
原因:
/system分区是只读的- 脚本可能被覆盖
- 文件系统可能被重置
8.2 持久化方法
方法 1: 修改 system 分区
bash
# 挂载 system 分区为可读写
mount -o remount,rw /system
# 创建脚本
cat > /system/etc/eth0.sh << 'EOF'
#!/system/bin/sh
insmod /system/lib/modules/8189fs.ko
sleep 2
wpa_supplicant -B -iwlan0 -c /data/wpa.conf
sleep 3
dhcpcd wlan0
EOF
# 设置权限
chmod 755 /system/etc/eth0.sh
# 挂载 system 分区为只读
mount -o remount,ro /system方法 2: 使用 data 分区
bash
# 在 data 分区创建脚本
cat > /data/local/eth0.sh << 'EOF'
#!/system/bin/sh
insmod /system/lib/modules/8189fs.ko
sleep 2
wpa_supplicant -B -iwlan0 -c /data/wpa.conf
sleep 3
dhcpcd wlan0
EOF
# 设置权限
chmod 755 /data/local/eth0.sh
# 在 init.rc 中添加启动项
# 或者使用其他方法触发方法 3: 修改 boot.img
bash
# 修改 ramdisk 中的 init.rc
# 添加自定义服务或触发器8.3 持久化验证
bash
# 重启设备
reboot
# 等待启动完成
sleep 60
# 检查脚本是否存在
ls -la /system/etc/eth0.sh
# 检查网络是否自动连接
ping -c 1 8.8.8.89. 网络诊断
9.1 连接测试
bash
# 测试网络连通性
ping -c 3 8.8.8.8
# 测试 DNS 解析
nslookup google.com
# 测试端口连通性
nc -zv 8.8.8.8 539.2 网络状态查看
bash
# 查看网络接口
ifconfig -a
# 查看路由表
route -n
# 查看 ARP 表
arp -a
# 查看连接状态
netstat -tuln9.3 无线网络诊断
bash
# 查看无线网络信息
iwconfig wlan0
# 扫描无线网络
iwlist wlan0 scan
# 查看信号强度
wpa_cli -i wlan0 signal_poll10. 故障排除
10.1 WiFi 驱动加载失败
问题: insmod 失败
可能原因:
- 驱动文件不存在
- 内核版本不匹配
- 依赖模块未加载
解决方案:
bash
# 检查驱动文件
ls -la /system/lib/modules/8189fs.ko
# 检查内核版本
uname -r
# 检查依赖
modinfo 8189fs | grep depends
# 尝试手动加载
insmod /system/lib/modules/8189fs.ko
dmesg | tail10.2 wpa_supplicant 连接失败
问题: 无法连接到 WiFi
可能原因:
- 配置文件错误
- 密码错误
- 信号弱
解决方案:
bash
# 检查配置文件
cat /data/wpa.conf
# 测试连接
wpa_cli -i wlan0
# 查看日志
logcat -s wpa_supplicant
# 扫描网络
iwlist wlan0 scan10.3 DHCP 获取 IP 失败
问题: 无法获取 IP 地址
可能原因:
- DHCP 服务器不可用
- 网络接口未启用
- 防火墙阻止
解决方案:
bash
# 检查接口状态
ifconfig wlan0
# 手动配置 IP
ifconfig wlan0 192.168.31.209 netmask 255.255.255.0
# 测试连接
ping 192.168.31.111. 高级配置
11.1 网络绑定
bash
# 绑定多个接口
ifconfig bond0 192.168.31.209 netmask 255.255.255.0
ifconfig bond0 up
# 配置绑定模式
echo 1 > /sys/class/net/bond0/bonding/mode11.2 VLAN 配置
bash
# 创建 VLAN 接口
vconfig add eth0 2685
ifconfig eth0.2685 192.168.188.19 netmask 255.255.255.011.3 防火墙配置
bash
# 配置 iptables
iptables -A INPUT -p tcp --dport 5555 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -j DROP
# 保存规则
iptables-save > /data/iptables.rules12. 性能优化
12.1 TCP 参数优化
bash
# 调整 TCP 缓冲区
echo "4096 87380 6291456" > /proc/sys/net/ipv4/tcp_rmem
echo "4096 65536 6291456" > /proc/sys/net/ipv4/tcp_wmem
# 启用 TCP 窗口缩放
echo 1 > /proc/sys/net/ipv4/tcp_window_scaling
# 启用 TCP 时间戳
echo 1 > /proc/sys/net/ipv4/tcp_timestamps12.2 无线网络优化
bash
# 调整发射功率
iwconfig wlan0 txpower 20
# 调整速率
iwconfig wlan0 rate 54M
# 调整模式
iwconfig wlan0 mode managed13. 安全配置
13.1 WiFi 安全
bash
# 使用 WPA2-PSK
network={
ssid="Xiaomi_F5A3"
psk="123456789"
key_mgmt=WPA-PSK
pairwise=CCMP
group=CCMP
proto=RSN
}13.2 ADB 安全
bash
# 启用 ADB 认证
setprop ro.adb.secure 1
# 配置防火墙
iptables -A INPUT -p tcp --dport 5555 -s 192.168.31.0/24 -j ACCEPT
iptables -A INPUT -p tcp --dport 5555 -j DROP14. 监控与日志
14.1 网络监控脚本
bash
#!/system/bin/sh
# 网络监控脚本
LOG_FILE="/data/network_monitor.log"
while true; do
TIMESTAMP=$(date '+%Y-%m-%d %H:%M:%S')
# 检查网络连接
if ping -c 1 8.8.8.8 > /dev/null 2>&1; then
STATUS="CONNECTED"
else
STATUS="DISCONNECTED"
fi
# 获取 IP 地址
IP=$(ifconfig wlan0 | grep 'inet addr' | awk '{print $2}' | cut -d: -f2)
# 记录日志
echo "$TIMESTAMP $STATUS $IP" >> $LOG_FILE
sleep 60
done14.2 日志分析
bash
# 查看网络日志
cat /data/network_monitor.log
# 统计连接状态
grep "CONNECTED" /data/network_monitor.log | wc -l
grep "DISCONNECTED" /data/network_monitor.log | wc -l
# 查看最近状态
tail -10 /data/network_monitor.log15. 总结
本文档详细介绍了 ZTE B860AV1.1-T2 机顶盒的网络配置持久化方法,包括:
- WiFi 驱动管理
- wpa_supplicant 配置
- DHCP 和 DNS 配置
- ADB over TCP 配置
- 启动脚本创建
- 脚本持久化方法
- 网络诊断和故障排除
通过这些配置,成功实现了网络连接的持久化,确保设备重启后能够自动连接到 WiFi 网络并启用 ADB 远程访问。
作者: Xiaomi MiMo
日期: 2026-07-26
版本: 1.0