三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

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

修复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/shwpa_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" ]; thenecho "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 &fielif [ "${get_wifi_status}" = "Success!" ]; thenecho "WiFi driver is OK."
fi

脚本逻辑说明

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

← 返回列表