修复V831因/dev/root分区只读造成的WiFi网卡丢失问题

手动修复方案

场景一:文件系统可读写,但 wpa 配置文件损坏

症状: WiFi 无法连接,但文件系统挂载状态为 rw

修复步骤:

  1. 删除损坏的配置文件并重新创建:
rm /etc/wifi/wpa_supplicant.conf && touch /etc/wifi/wpa_supplicant.conf && sync
  1. 联网成功后,备份配置文件以防下次故障:
cp -f /etc/wifi/wpa_supplicant.conf /home/res/wpa_supplicant.conf.bk && sync

场景二:文件系统只读,wpa 配置文件损坏

症状: WiFi 无法连接,且文件系统挂载状态为 ro(只读),无法直接修改文件。

修复步骤:

  1. 先修复文件系统只读问题并重启:
fsck.ext4 -y /dev/root && reboot
  1. 重启后,用备份文件替换损坏的配置:
cp -f /home/res/wpa_supplicant.conf.bk /etc/wifi/wpa_supplicant.conf && sync

提示: 步骤二依赖之前在场景一中创建的备份文件,建议在设备正常运行时提前做好备份。


自动化修复脚本

针对以上两种场景,编写了一个 Shell 脚本,可在系统启动时或定时任务中调用,实现 WiFi 故障的自动检测与修复。

#!/bin/sh

wpa_dist="/etc/wifi/wpa_supplicant.conf"
wpa_bk="/home/res/wpa_supplicant.conf.bk"

# 获取 /dev/root 分区的读写状态(rw 或 ro)
get_dev_partition_status=$(mount | awk '/\/dev\/root/ {print $6}' | awk -F '[,(]' '{print $2}')

# 获取 WiFi 驱动测试结果
get_wifi_status=$(wifi_on_off_test | grep 'Test' | awk -F ' ' '{print $NF}')

if [ "${get_wifi_status}" = "failed" ]; then
  echo "WiFi driver is failed!"

  if [ "${get_dev_partition_status}" = "rw" ]; then
    # 文件系统可写:直接替换损坏的 wpa 配置
    echo "Fixing wifi driver..."
    rm "${wpa_dist}" && cp -f "${wpa_bk}" "${wpa_dist}" && sync &
    echo "WiFi driver is fixed!"

  elif [ "${get_dev_partition_status}" = "ro" ]; then
    # 文件系统只读:修复分区后重启
    echo "Fixing partition and rebooting..."
    fsck.ext4 -y /dev/root && reboot &
  fi

elif [ "${get_wifi_status}" = "Success!" ]; then
  echo "WiFi driver is OK."
fi

脚本逻辑说明

条件 处理方式
WiFi 正常 无需处理,输出正常提示
WiFi 异常 + 分区可读写 删除并替换 wpa 配置文件
WiFi 异常 + 分区只读 执行 fsck 修复分区,然后重启

posted @ 2026-05-19 10:24  weixizhou  阅读(14)  评论(0)    收藏  举报