如何在每次启动时强制fsck-所有(相关)文件系统?


14

我正在使用具有debian 6和3分区(FAT和2x ext2)的无风扇PC(实际上有数百台)。该系统没有电源按钮,因此大多数人倾向于拉动插头以“将其关闭”,而不是初始化为0(或等效值)。结果,文件系统迅速建立了错误。

我尝试使用'shutdown -rF'强制fsck,但这似乎不起作用。我想知道是否有某种方法可以告诉系统在安装每个安装点/ FS之前对其进行检查。

我试过在/ etc / fstab中设置fsck参数。这通常会给我一个“发现错误。手动运行fsck”消息。

还有其他选择吗?


1
A)您的用户是谁?B)您是否可以添加一个醒目的“关闭”按钮,该按钮始终在屏幕上可见?C)或者,您可以教育您的用户吗?D)为什么机器的前面没有电源按钮?
unforgettableidSupportsMonica

这个问题是同一用户的unix.stackexchange.com/questions/180488/…的近似副本。
unforgettableidSupports

Answers:


16

/etc/init.d/checkfs.sh该行中if [ -f /forcefsck ] || grep -s -w -i "forcefsck" /proc/cmdline,因此forcefsck在内核命令行上提供或/forcefsck在关闭时生成文件会在下次重新引导时引起fsck。

为了防止手动运行fsck,请fsck尝试-y通过以下注释取消注释并yes在以下/ etc / default / rcS条目中将no更改为no 来自动修复错误:编辑后,其外观应类似于:

# automatically repair filesystems with inconsistencies during boot
FSCKFIX=yes

一个选项(forcefsck或FSCKFIX)并不暗示另一个。


这会处理“手动运行fsck”条件吗?
ethrbunny 2014年

确实,我读得太快了,更新了答案。
有限graygreen 2014年

我已经设置了FSCKFIX = yes和中的值checkfs.sh。重启后(通过init 6),fsck都没有运行。我一定在这里想念什么。
ethrbunny 2014年

不要更改中的任何内容checkfs.sh,仅编辑/ etc / defaults / rcS并touch /forcefsck在重新启动之前运行。最后一个命令需要在每次重新启动之前或在引导之后运行,但fsck初始化脚本已完成。
有限graygreen 2014年

嗯..没有运气。我仍然看到“正在加载未检查的文件系统”消息,随后出现许多“删除引用的inode”错误。到目前为止,更改/ etc / fstab一直是唯一有效的方法。不知道我在做什么,以致您的建议不起作用。
ethrbunny 2014年

8

fsck.mode=force在引导加载程序上添加内核参数。将此选项附加到GRUB_CMDLINE_LINUX_DEFAULT=里面的变量/etc/default/grub。以root身份生成一个新的grub配置文件:

[root@host]# grub-mkconfig -o /boot/grub/grub.cfg

此参数forcefsck与在安装点的根内部创建文件的效果相同。

使用checkfs.sh脚本的解决方案将更适合Debian,但不适用于其他发行版


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.