树莓派:劣质储存可能会导致[Unable to run arch-specific checks]异常

最近一直在树莓派上调试一些软件,然后发现了一个问题,今天能执行的程序,明天就不能执行了,或者明天能执行后天也未必能执行,刚开始还没太过在意这个问题,直到现在越来越严重,可能是现在可以,一小时后就不行,而整个过程树莓派根本没有重启断电过.

大概错误是 error while loading shared libraries: ****.so: Unable to run arch-specific checks (反正没遇到过其他错误!)

因为一开始这些错误从来不会出现在系统库,所以就怀疑是自己程序不对,直到最近,某些系统库也会出问题,比如libc,表现直接开不了机.

但是通常重烧系统就能大概率解决,但是这样也不是办法,后来就把程序都往外部储存器放,结果放在外部储存器的程序从来不出问题,开始怀疑是储存器问题.

然后尝试fsck.ext4修复树莓派本身文件系统,问题竟然也能解决,更能确定是储存器问题.

求证过程:

  • 错误后用fsck.ext4大概率可以修复.(文件系统出问题了,可能是储存,也可以能是逻辑.)
  • 用urwtest测试TF卡读写几圈.(报告没有错误,但是速度很不稳定,时快时慢,有时候甚至卡死.)
  • 用urwtest测试其他TF卡读写几圈.(顺畅没问题,然后这张卡用来树莓派启动完全没问题,基本确定是TF卡问题.)
  • 把疑似问题的TF卡烧了系统后不要启动,放置2小时,基本不能启动.(现在这张TF卡烧好系统启动不到一小时也会出问题了.)
  • 同样树莓派更换好的TF卡,再也没出过问题.(99%确认是储存问题)
  • 用坏的TF卡启动后,把代码存在外部储存器,然后等系统坏了之后又重新烧录系统,代码没问题.
  • 用坏的TF卡启动后,把系统关键的几个lib的hash记录下来,2小时后对比,发生了改变.

所以啊,遇到这种莫名其妙问题,特别是上面那句错误,先看看是不是TF卡挂了.

发表评论

电子邮件地址不会被公开。 必填项已用*标注