我知道在运行内核之前,u-boot(引导加载程序)会检查内核映像CRC。只有正确了才会走得更远,否则就会出错"Bad CRC"
。
我也想对文件系统做同样的事情。
有什么办法可以做到这一点吗?
内核在加载文件系统之前是否检查文件系统是否正确?如果是的话,这个检查是在哪里进行的?
更新:
我正在使用 jffs2 文件系统。是否可以检查此类文件系统的 CRC?或者任何其他方法来确保 jffs2 文件系统没有损坏?
答案1
答案2
(下面的链接是支持文档,不一定与您的问题直接相关。)
正如“用户”(Michael Kjörling)和 DavAlPi 在对该问题的评论中指出的那样,某些文件系统(例如外部4) 可以选择 CRC 文件系统元数据。和兹夫斯和BTFS文件内容和文件系统元数据的校验和。
对于 ext2,每次挂载时都会修改文件系统,将其设置为“肮脏的”。 (这在 ext3 中被 Needs_recovery 取代。)当它被卸载时,它被取消设置。如果系统初始化发现未挂载的文件系统被标记为脏,它将假设它未干净地卸载,并将运行文件系统检查以确保完整性。在 RHEL 上,这通常是在启动期间出现“重新安装 root”消息时完成的。不管怎样,这将是该发行版首先要做的事情之一。
使用 ext3,您可以获得日志,因此如果文件系统由于意外故障而损坏,它将“重播”日志事务或忽略它们,以最有可能不会引起问题的方式为准。不过,您无法获得 CRC,因此,如果数据完全消失(例如 HDD 盘片出现故障),那么情况就是这样。但如果您需要这些功能,ext3 可以升级到 ext4,并且不会产生任何用户空间问题。
因此,无论怎样,都会检查文件系统的完整性,但使用最新的文件系统可以为您提供一些额外的保护。