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これは廃止FreeBSDは2007年から使用されました。

答え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のツールですe2fsprogsext2/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 /)、コンピュータを再起動します。

関連情報