用ARM开发板跑OpenWrt的人,多半见过这套剧本:刚刷完固件的前三个月稳得很,千兆跑满;到了半年上下,某天家里突然断网,进后台一看插件配置全丢,重启后干脆不亮灯。论坛老哥的标配回答是"R2S挑卡,换张好卡重刷吧"。于是换卡、重刷、导备份,进入下一个半年轮回。知乎
这个坑现在踩到的人比以前多。百元出头的矿渣路由器被直接称作最适合做软路由的选择,最近的架构横评也把主流ARM方案全部纳入。一位长期嫌AX3000T内存闪存太小的用户,换了R3S开发版做软路由后晒出体验,一条帖子攒出90条评论。这些便宜方案常被忽略的一点是:大多用一张TF卡跑系统。知乎知乎小红书

卡被写死,怪不到"卡不行"头上。有知乎用户对一台变砖的R2S做了底层排查,发现系统哪怕只往卡上改写4KB零碎数据,卡内主控垃圾回收时也要把整个块读出来、擦掉、再写回去。他那张卡的最佳擦除块是4MB,放大几十倍是日常。日子久了,电荷偏移超过纠错极限,不可纠正的ECC错误就会让系统报I/O错误、固件损坏,内核日志里那句"Card stuck being busy"是经典遗言。知乎

更阴的是,写入是系统自己干的。这套排查发现,FriendlyWrt默认就在卡上创建了swap文件并开机挂载。数据库类插件的更新任务还全堆在凌晨同一秒并发落盘,内核明明支持TRIM指令,系统默认却不开定时fstrim。OpenWrt历史包袱、板厂固件默认值、插件各自为战,这块三不管地带的成本全由TF卡默默买单。不同固件默认配置有差异,不必逐条对号入座,但高频小写入的方向是一致的。知乎
社区的自救思路大致几档。最轻的是把写入挪离卡:用zram代替卡上交换,日志进内存,评论区总结得很直白,家用路由器除了系统更新就该是零写入。更新任务也要错峰,别在半夜一起抢总线。知乎

更彻底的是换介质,eMMC转接卡、Optane或小容量SSD,原作者也确认这个问题真只针对TF卡,固态硬盘有自己的维护主控。而系统核心区其实只有2.9GB左右,在主力电脑上留一份镜像和配置,一条dd命令就能备完,卡真死了损失也可控。知乎
开发板便宜、省电、可玩,适合折腾,但引导介质是这套方案最短的板。先确保系统没有在替高频往卡上写东西,电脑上有一份近期备份,比纠结换哪个牌子的卡更有用。

登录