Skip to content

网络持久化与启动脚本

🕒 Published at:

网络持久化与启动脚本 ​

概述 ​

本文档详细记录了 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 TCP

2. WiFi 驱动管理 ​

2.1 驱动信息 ​

驱动名称: 8189fs
驱动文件: /system/lib/modules/8189fs.ko
芯片型号: Realtek RTL8189FS
接口类型: SDIO

2.2 驱动加载 ​

bash
# 手动加载驱动
insmod /system/lib/modules/8189fs.ko

# 验证驱动加载
lsmod | grep 8189

# 检查网络接口
ifconfig wlan0

2.3 驱动卸载 ​

bash
# 卸载驱动
rmmod 8189fs

# 或者
modprobe -r 8189fs

2.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 status

3.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_poll

4. DHCP 配置 ​

4.1 dhcpcd 命令 ​

bash
# 获取 IP 地址
dhcpcd wlan0

# 释放 IP 地址
dhcpcd -k wlan0

# 后台运行
dhcpcd -B wlan0

4.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.conf

4.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.dns2

5.2 resolv.conf 配置 ​

bash
# /etc/resolv.conf
nameserver 8.8.8.8
nameserver 8.8.4.4
nameserver 114.114.114.114

5.3 DNS 测试 ​

bash
# 测试 DNS 解析
nslookup google.com
ping -c 1 google.com

# 查看 DNS 缓存
dumpsys connectivity

6. 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.port

6.2 连接 ADB ​

bash
# 从电脑连接
adb connect 192.168.31.209:5555

# 验证连接
adb devices

# 断开连接
adb disconnect 192.168.31.209:5555

6.3 ADB 安全配置 ​

bash
# 禁用 ADB 认证
setprop ro.adb.secure 0

# 或者配置认证
setprop ro.adb.secure 1

7. 启动脚本 ​

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
    disabled

8. 脚本持久化 ​

8.1 持久化挑战 ​

问题: 系统重启后脚本丢失

原因:

  1. /system 分区是只读的
  2. 脚本可能被覆盖
  3. 文件系统可能被重置

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.8

9. 网络诊断 ​

9.1 连接测试 ​

bash
# 测试网络连通性
ping -c 3 8.8.8.8

# 测试 DNS 解析
nslookup google.com

# 测试端口连通性
nc -zv 8.8.8.8 53

9.2 网络状态查看 ​

bash
# 查看网络接口
ifconfig -a

# 查看路由表
route -n

# 查看 ARP 表
arp -a

# 查看连接状态
netstat -tuln

9.3 无线网络诊断 ​

bash
# 查看无线网络信息
iwconfig wlan0

# 扫描无线网络
iwlist wlan0 scan

# 查看信号强度
wpa_cli -i wlan0 signal_poll

10. 故障排除 ​

10.1 WiFi 驱动加载失败 ​

问题: insmod 失败

可能原因:

  1. 驱动文件不存在
  2. 内核版本不匹配
  3. 依赖模块未加载

解决方案:

bash
# 检查驱动文件
ls -la /system/lib/modules/8189fs.ko

# 检查内核版本
uname -r

# 检查依赖
modinfo 8189fs | grep depends

# 尝试手动加载
insmod /system/lib/modules/8189fs.ko
dmesg | tail

10.2 wpa_supplicant 连接失败 ​

问题: 无法连接到 WiFi

可能原因:

  1. 配置文件错误
  2. 密码错误
  3. 信号弱

解决方案:

bash
# 检查配置文件
cat /data/wpa.conf

# 测试连接
wpa_cli -i wlan0

# 查看日志
logcat -s wpa_supplicant

# 扫描网络
iwlist wlan0 scan

10.3 DHCP 获取 IP 失败 ​

问题: 无法获取 IP 地址

可能原因:

  1. DHCP 服务器不可用
  2. 网络接口未启用
  3. 防火墙阻止

解决方案:

bash
# 检查接口状态
ifconfig wlan0

# 手动配置 IP
ifconfig wlan0 192.168.31.209 netmask 255.255.255.0

# 测试连接
ping 192.168.31.1

11. 高级配置 ​

11.1 网络绑定 ​

bash
# 绑定多个接口
ifconfig bond0 192.168.31.209 netmask 255.255.255.0
ifconfig bond0 up

# 配置绑定模式
echo 1 > /sys/class/net/bond0/bonding/mode

11.2 VLAN 配置 ​

bash
# 创建 VLAN 接口
vconfig add eth0 2685
ifconfig eth0.2685 192.168.188.19 netmask 255.255.255.0

11.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.rules

12. 性能优化 ​

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_timestamps

12.2 无线网络优化 ​

bash
# 调整发射功率
iwconfig wlan0 txpower 20

# 调整速率
iwconfig wlan0 rate 54M

# 调整模式
iwconfig wlan0 mode managed

13. 安全配置 ​

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 DROP

14. 监控与日志 ​

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
done

14.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.log

15. 总结 ​

本文档详细介绍了 ZTE B860AV1.1-T2 机顶盒的网络配置持久化方法,包括:

  1. WiFi 驱动管理
  2. wpa_supplicant 配置
  3. DHCP 和 DNS 配置
  4. ADB over TCP 配置
  5. 启动脚本创建
  6. 脚本持久化方法
  7. 网络诊断和故障排除

通过这些配置,成功实现了网络连接的持久化,确保设备重启后能够自动连接到 WiFi 网络并启用 ADB 远程访问。


作者: Xiaomi MiMo
日期: 2026-07-26
版本: 1.0