Força o fsck no momento da inicialização no sistema de arquivos raiz (antes da montagem dos sistemas de arquivos, sem o modo de usuário único)

7

Pergunto-me se existem soluções disponíveis (pesquisado por duas horas).

Como forçar automaticamente os discos fsck depois travar em 'systemd'? - não significa nada.

Definir fsck_y_enable="YES" e background_fsck="NO" em /etc/rc.conf não faz nada.

Meu sistema de arquivos raiz não está limpo e tem muitos erros (devido a uma falta de energia - desligamento inesperado, não porque o disco rígido ou o hardware estão com defeito).

fsck mostra erros:

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

[pulou mais de 100 linhas]

Eu não tenho acesso físico ou KVM ao servidor. Esta é a unidade 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
    
por Alex G 07.06.2014 / 05:06

3 respostas

2

O FreeBSD tem corretamente desmontado, então você não precisa fazer isso na inicialização. Basta efetuar login (remotamente), remontar rootfs como somente leitura ( mount -fur / ), fazer fsck manualmente ( fsck -y / ) e depois reinicializar a máquina.

    
por 01.08.2017 / 17:15
1

Se você precisar de um comando para ser executado no início do processo de inicialização (ainda no modo de usuário único), adicione-os ao script de shell /etc/rc.early

algo como fsck -fy / adicionado a esse arquivo irá forçá-lo a fazer uma varredura e responder "sim" a todos os prompts.

Não se esqueça de removê-lo de rc.early quando estiver pronto, senão ele será executado em todas as inicializações

    
por 15.06.2014 / 17:57
0

A partir do FreeBSD 10.3, você pode conseguir isso modificando temporariamente /etc/rc.d/root para executar /sbin/fsck -fy / .

Aqui está o script atual, modificado para incluir esse comando comentado; descomente a executar o 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"
    
por 20.04.2016 / 22:52

Tags