"systemd"クラッシュ後にfsckディスクを自動的に強制する方法は?-意味がない。
設定fsck_y_enable="YES"
し、何もしbackground_fsck="NO"
ません/etc/rc.conf
。
私のルートファイルシステムはきれいではなく、エラーがたくさんあります(ハードドライブやハードウェアの損傷ではなく、停電による予期しないシャットダウンのため)。
fsck
表示エラー:
root@host2:/usr/home/alex # fsck
** /dev/mirror/gm0p2 (NO WRITE)
** Last Mounted on /
** Root file system
** Phase 1 - Check Blocks and Sizes
** Phase 2 - Check Pathnames
** Phase 3 - Check Connectivity
** Phase 4 - Check Reference Counts
UNREF FILE I=8268305 OWNER=root MODE=140777
SIZE=0 MTIME=Jun 6 21:58 2014
CLEAR? no
[100行以上スキップ]
サーバーへの物理またはKVMアクセス権がありません。これがgmirror
edドライブです
FreeBSD host2.domain.tld 9.2-RELEASE FreeBSD 9.2-RELEASE #0 r255898: Thu Sep 26 22:50:31 UTC 2013 [email protected]:/usr/obj/usr/src/sys/GENERIC amd64
# Device Mountpoint FStype Options Dump Pass#
/dev/mirror/gm0p2 / ufs rw 1 1
/dev/mirror/gm0p3 none swap sw 0 0
答え1
FreeBSDには強制削除機能があるため、実際に起動時にこれを行う必要はありません。 (リモートで)ログインし、rootfsを読み取り専用で再マウントし(mount -fur /
)、fsckを手動で(fsck -y /
)、コンピュータを再起動します。
答え2
起動プロセスの最初に(まだシングルユーザーモードで)コマンドを実行する必要がある場合は、そのコマンドをシェルスクリプトに追加します。/etc/rc.early
このような内容をファイルに追加すると、強制fsck -fy /
的に検索され、すべてのプロンプトに「はい」と答えます。
rc.early
完了したら削除することを忘れないでください。それ以外の場合は、起動するたびに実行されます。
答え3
/etc/rc.initial.reboot
次のコマンドを使用してnextboot
実行をfsck
5回再開します。
/sbin/nextboot -e "pfsense.fsck.force=5"
手動で実行するか、スクリプトに追加してfsck
次の起動時にトリガーできます。
バージョン2.5.0でこれをテストしました。
答え4
FreeBSD 10.3以降、/etc/rc.d/root
runを一時的に変更することでこれを行うことができます/sbin/fsck -fy /
。
これは、fsckを実行するためにコメントアウトされたコマンドを含むように変更された現在のスクリプトです。
#!/bin/sh
#
# $FreeBSD: stable/10/etc/rc.d/root 177062 2008-03-11 17:21:14Z delphij $
#
# PROVIDE: root
# REQUIRE: fsck
# KEYWORD: nojail
. /etc/rc.subr
name="root"
start_cmd="root_start"
stop_cmd=":"
root_start()
{
# root normally must be read/write, but if this is a BOOTP NFS
# diskless boot it does not have to be.
#
case ${root_rw_mount} in
[Nn][Oo] | '')
;;
*)
# Uncomment the below line to run fsck on root during boot:
#/sbin/fsck -fy /
if ! mount -uw /; then
echo 'Mounting root filesystem rw failed, startup aborted'
stop_boot true
fi
;;
esac
umount -a >/dev/null 2>&1
# If we booted a special kernel remove the record
# so we will boot the default kernel next time.
if [ -x /sbin/nextboot ]; then
/sbin/nextboot -D > /dev/null 2>&1
fi
}
load_rc_config $name
run_rc_command "$1"