부팅 시 루트 파일 시스템에서 fsck 강제 실행(파일 시스템 마운트 전, 단일 사용자 모드 없음)

부팅 시 루트 파일 시스템에서 fsck 강제 실행(파일 시스템 마운트 전, 단일 사용자 모드 없음)

"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 액세스 권한이 없습니다. 이것이 gmirrored 드라이브 입니다

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실행을 fsck5회 다시 시작합니다.

/sbin/nextboot -e "pfsense.fsck.force=5"

수동으로 실행하거나 스크립트에 추가하여 fsck다음 부팅 시 트리거할 수 있습니다.

버전 2.5.0에서 이것을 테스트했습니다.

답변4

FreeBSD 10.3부터 /etc/rc.d/rootrun 을 일시적으로 수정하여 이를 수행 할 수 있습니다 /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"

관련 정보