如何在 FreeBSD10 上重启时强制进行 fsck?

如何在 FreeBSD10 上重启时强制进行 fsck?

我需要在重新启动时强制进行文件系统检查,以尝试修复已安装的文件系统。我发现的所有命令/方法在 FreeBSD10 中都已过时

[\u@vader:/root] # tune2fs -c 1 /dev/vtbd0p2
tune2fs: not found
[\u@vader:/root] # pkg install tune2fs
Updating FreeBSD repository catalogue...
FreeBSD repository is up-to-date.
All repositories are up-to-date.
pkg: No packages available to install matching 'tune2fs' have been found in the repositories

如何强制文件系统检查并在下次重新启动时修复错误,只是为了一次性修复?

答案1

处理此问题的最佳方法可能是将系统重新启动到单用户模式,然后手动执行此操作fsck。如果出于某种原因,这不适合您,那么处理它的下一个最佳方法是转动几个rc.conf旋钮。具体来说,这些:

background_fsck="NO"
fsck_y_enable="YES"
fsck_y_flags="-f"

重新启动,rc子系统应该会为您处理好它。请注意,这rc.early已弃用早在 2007 年就使用了 FreeBSD。

答案2

对我来说,

background_fsck="NO"
fsck_y_enable="YES"
fsck_y_flags="-f"

方法也不起作用(不同的 10.x 版本)。所以我使用这个“肮脏”的黑客/etc/rc.d/root

--- /tmp/root.orig  2018-06-09 00:56:23.089825000 +0200
+++ /etc/rc.d/root  2018-06-09 00:56:03.831574000 +0200
@@ -22,6 +22,9 @@
    [Nn][Oo] | '')
        ;;
    *)
+                # Uncomment the below line to run FORCED fsck on ALL mounts in /etc/fstab during boot:
+                /sbin/fsck -fy || /sbin/fsck -fy
+
        if ! mount -uw /; then
            echo 'Mounting root filesystem rw failed, startup aborted'
            stop_boot true

这样,它肯定有效。 警告:运行此命令后再次注释 /sbin/fsck... 行,因为如果 fsck 不是您应该做的事情,这会花费时间并且可能存在风险。

答案3

tune2fs是一个工具,来自e2fsprogs用于处理 ext2/3/4 文件系统:)

对于 FreeBSD UFS,曲调可以使用,但无法设置任何fsck相关内容。有一个冗长的讨论fsck关于重启后强制,该线程的最佳答案似乎是“不”并依赖background_fsck="YES"强迫它通过/etc/rc.early

echo '/sbin/fsck -y -f' >> /etc/rc.early

答案4

FreeBSD 具有正常工作的强制卸载功能,因此您实际上不需要在启动时执行此操作。只需登录(远程),将 rootfs 重新挂载为只读 ( mount -fur /),手动执行 fsck ( fsck -y /),然后重新启动计算机。

相关内容