自愈SD卡分区


9

许多SD卡都相当脆弱。我已经有pi了大约2年,主要故障是由于sd卡由于某种原因损坏了。

我想知道是否进行了一些开发以“加强”引导时的sd卡。我记得在过去的项目中有这样的事情,如果其中的任何一个的crc32校验和无效,那么uboot会在12个tarball之间进行选择。然后,它将在成功引导后将经过验证的一个复制到所有其他已修改的复制。

我想在“永久”设置中使用我的pi,如果它无需重新刷卡就可以工作,那就太好了。

已经以这种方式完成了一些开发吗?虽然总体思路比较琐碎,但要避免uboot正常工作通常是一个相当痛苦的过程。

编辑:

经过更深入的挖掘之后,看来我所设想的可能是不可能的,或者可能以任何有意义的方式实现。这里介绍了引导过程。我的代码在第一个引导级别运行,因为我的主板为此配备了可编程闪存。使用pi时,将其存储在工厂的ROM中。其他所有东西都来自sd卡,因此,如果该卡损坏,则第二阶段引导加载程序被破坏的机会与任何其他分区一样多。

也许有可能为此目的滥用ROM引导加载程序,但是很难说如何。该代码似乎也是专​​有的。

编辑2:

实际的启动过程说明因来源而异。我会尝试阅读更多

Answers:


9

如果您在使用SD卡时遇到问题,则应按顺序尝试:

  1. 使用另一个(更大)电源。
  2. 在Raspberry和您可能拥有的任何USB外围设备之间连接有源集线器。
  3. 使用知名品牌的SD卡。
  4. 使用更大的SD卡(用于分布式损耗均衡)。
  5. 将您的rootfs设置为只读,从而避免写入SD卡。
  6. 使用完全从RAM运行的“实时”发行版。我的项目Nard SDK是其中之一(但也有其他项目)。使用Nard,SD卡仅在引导时使用。一旦启动并运行文件系统就不再使用了,您甚至可以热插拔SD卡...

请参阅:http : //www.arbetsmyra.dyndns.org/nard/


我要补充一点,您也可以通过USB连接的硬盘运行操作系统-与项目#6相同。
Phil B.

感谢您的建议。但是,SD卡在断电时会损坏。也许将卡设为只读会有所帮助。我同意,首先防止腐败是一个更好的解决方案,但是很难完全防止。
埃里克(Eric)

如果失去权力的腐败是问题所在,那么现场发行是补救措施。
罗尼·尼尔森

1

即使偶尔断电,您也不应经历频繁的戏剧性腐败。

如果文件系统在的第六列中具有非零值/etc/fstab,则将检查文件系统,以查看是否有必要在挂载之前对其进行扫描以查找错误。常规pi发行版(应该)对此进行了设置,/dev/mmcblk0p1并具有根文件系统分区(在Raspbian上mmcblk0p2)。这对于ext4文件系统(例如根fs)意味着什么,无论每N个挂载都发生这种情况。有关N的值,请参见tune2fs -l /dev/[partition]; 输出中的“最大安装数” 。您可以使用调整此值tune2fs -c(请参阅man tune2fs)。

如果未正确卸载文件系统,还将对其进行扫描。这是通过完成的e2fsck。在大多数情况下,一切都会正常进行。但是,您可能会丢失数据而导致损坏;证据将被保留/lost+found。如果可能(通常是这样),此后文件系统仍将保持可用,未损坏的状态。然后的问题是,修复程序中是否丢失了一些关键组件-但这又是非常不寻常的。

之所以不太可能影响关键的事情,是因为大多数东西虽然在技术上不是只读的,但在正常情况下不会改变。该系统具有吨从东西/bin/lib在任何给定的点加载到内存中,但没有改变其在磁盘上源的打算,所以没有机会磁盘将下降同步出与那些不存在的变化。

尽管我不知道第一个包含内核和固件的vfat分区的规则(因为它不是ext格式的),但我还是认为可以进行类似的检查,无论如何,最后一段的逻辑适用-该内容仅适用于系统更新。实际上,如果您想让自己真正地偏执,可以将其安装为只读(更新除外)(或根本不安装,因为正常启动完成后就没有必要了)。

毕竟,除非您真的经常通过降低功率掷骰子,否则您几乎永远不会经历严重的腐败(即使那样也很少)。如果您确实经常遭受腐败,那是非常严重的错误。即使使用只读文件系统,至少有一些人在这里报告损坏问题,这有点令人困惑。这意味着损坏是由有缺陷的硬件或软件错误任意引起的。

实际上,我认为从2013年某个时候到2014年中后期某个时候,都有可能会任意影响pi 的错误(假定操作系统保持最新)。我有一种预感,“我的SD卡已损坏!最近4到6个月内发布的帖子(但Nb。我尚未进行任何实际核算以确认这一点)。



0

对于任何Linux发行版来说,自我修复都是一个问题,其中fsck位于最容易损坏的文件系统上。这是raspbian与几乎所有Linux发行版共享的一个问题-如今,他们希望将所有内容(包括Ubuntu的/ boot包括在内!)都放在一个大ext4分区上。

只读的根分区确实可以避免在Linux失去运行fsck之前就遇到文件系统问题的引导终止问题。

但是,即使是很少更新的读/写根也是一大步。

Raspbian在只读根目录下工作良好。设置需要花费一些精力,并且在对根文件系统进行任何更改之前,您当然必须准备“挂载-o remount,rw /”。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.