我需要在重新启动时强制进行文件系统检查,以尝试修复已安装的文件系统。我发现的所有命令/方法在 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
答案4
FreeBSD 具有正常工作的强制卸载功能,因此您实际上不需要在启动时执行此操作。只需登录(远程),将 rootfs 重新挂载为只读 ( mount -fur /
),手动执行 fsck ( fsck -y /
),然后重新启动计算机。