我们有基于 BeagleBone Black 的定制嵌入式 Linux 板。它具有 Linux-3.12、256MB RAM 和 4GB eMMC,并带有ext4
文件系统。
有时我们会遇到文件系统错误(罕见但并非不可能)。因此,我们希望检查文件系统错误并在启动时修复它。
显然,我们不希望 fsck 或任何其他实用程序破坏文件系统上的任何数据。
我们有 busybox,SysVinit
所以/forcefsck
不起作用:( 然后我使用/etc/fstab
(将第 5 个字段设置为 1)然后fsck -p
从rcS
脚本运行。
此组合适用于除rootfs
分区之外的分区。我对此有几个问题。
- 有什么办法可以在分区
fsck
上运行吗rootfs
? - 可以
fsck -p
破坏分区上的数据吗? - 有没有更好的方法来处理这种情况,我的意思是任何可以检查并纠正文件系统错误的服务?
答案1
基于 SysVinit 的桌面 Linux 发行版的正常做法是,当它在根文件系统上检测到错误时,在启动过程中要求输入 root 密码。然后您可以使用它fsck
在根文件系统上运行。我不知道您的嵌入式发行版是否这样做,但绝对可以这样配置。
如果在启动期间没有检测到错误,另一个选择是以 root 身份登录,停止所有不必要的操作,以只读方式重新挂载根文件系统,然后在其上运行 fsck。
这是关于块存储的根文件系统,而不是根文件系统. Rootfs 是一个基于 RAM 的最小文件系统,在启动时使用,它不能被损坏(除非你的启动内核映像被损坏,或者你的 RAM 坏了)。
原则上fsck -p
,它只用于执行“安全”修复,但如果您真的想确保不会发生任何不好的事情,请手动运行它,这样您每次操作时都会收到提示。如果由于某种原因根文件系统上有有价值的数据(不应该发生,但也许你会),请先使用进行备份dd
。