¿Qué debo hacer para forzar la verificación del sistema de archivos raíz (y opcionalmente una solución) en el arranque?

10

Ayer, una de nuestras computadoras cayó al grubshell o, sinceramente, no estoy seguro de qué shell era cuando encendimos la máquina.

Demostró que no puede montar el sistema de archivos raíz o algo así en este sentido, debido a inconsistencias.

Corrí, creo:

fsck -fy /dev/sda2

Reiniciado y el problema desapareció.

Aquí viene la parte de la pregunta:

Ya tengo en el crontab de su raíz:

@reboot /home/ruzena/Development/bash/fs-check.sh

mientras que el script contiene:

#!/bin/bash
touch /forcefsck

Pensando en ello, no sé, por qué creé un archivo de script para un comando tan corto, pero de todos modos ...

Además, en el archivo:

/etc/default/rcS

He definido:

FSCKFIX=yes

Entonces no lo entiendo. ¿Cómo podría surgir la situación?


¿Qué debo hacer para forzar la verificación del sistema de archivos raíz (y opcionalmente una solución) en el arranque?

¿O son estas dos cosas lo máximo que puedo hacer?

Sistema operativo: Linux Mint 18.x Cinnamon 64-bit.

fstab:

cat /etc/fstab | grep ext4

muestra:

UUID=a121371e-eb12-43a0-a5ae-11af58ad09f4    /    ext4    errors=remount-ro    0    1

grub:

fsck.mode=force

ya se agregó a la grubconfiguración.

LinuxSecurityFreak
fuente

Respuestas:

12

ext4 comprobación del sistema de archivos durante el arranque

Probado en el sistema operativo: Linux Mint 18.x en una máquina virtual

Información básica

/etc/fstabtiene el fsckorden como la última (sexta) columna, por ejemplo:

<file system>    <mount point>    <type>    <options>    <dump>    <fsck>
UUID=2fbcf5e7-1234-abcd-88e8-a72d15580c99 / ext4 errors=remount-ro 0 1

FSCKFIX=yes variable en /etc/default/rcS

Esto cambiará el fsck a corrección automática, pero no forzará una verificación de fsck.

De man rcS:

FSCKFIX
    When  the  root  and all other file systems are checked, fsck is
    invoked with the -a option which means "autorepair".   If  there
    are  major  inconsistencies then the fsck process will bail out.
    The system will print a  message  asking  the  administrator  to
    repair  the  file  system manually and will present a root shell
    prompt (actually a sulogin prompt) on the console.  Setting this
    option  to  yes  causes  the fsck commands to be run with the -y
    option instead of the -a option.  This will tell fsck always  to
    repair the file systems without asking for permission.

Desde man tune2fs

If you are using journaling on your filesystem, your filesystem
will never be marked dirty, so it will not normally be checked.

Empezar con

Establecer lo siguiente

FSCKFIX=yes

en el archivo

/etc/default/rcS

Verifique y anote la última vez que se verificó fs:

sudo tune2fs -l /dev/sda1 | grep "Last checked"

Estas dos opciones NO funcionaron

  1. Pasar -F(forzar fsckel reinicio) argumento a shutdown:

    shutdown -rF now
    

    No; ver: man shutdown.

  2. Agregar el /forcefsckarchivo vacío con:

    touch /forcefsck
    

    Estos scripts parecen usar esto:

    /etc/init.d/checkfs.sh
    /etc/init.d/checkroot.sh
    

    hizo NO funciona en el reinicio, pero se eliminó el archivo.

    Verificada por:

    sudo tune2fs -l /dev/sda1 | grep "Last checked"
    sudo less /var/log/fsck/checkfs
    sudo less /var/log/fsck/checkroot
    

    Estos parecen ser los registros de los initscripts.

Repito, ¡estas dos opciones NO funcionaron!


Ambos métodos funcionaron

  1. interruptores de arranque del kernel systemd-fsck

    Edición del grubarchivo de configuración principal :

    sudoedit /etc/default/grub
    
    GRUB_CMDLINE_LINUX="fsck.mode=force"
    
    sudo update-grub
    sudo reboot
    

    Esto hizo una verificación del sistema de archivos como se verificó con:

    sudo tune2fs -l /dev/sda1 | grep "Last checked"
    

    Nota: Este DID un cheque, pero para forzar una solución también debe especificar fsck.repair="preen", o fsck.repair="yes".

  2. Utilizando tune2fspara establecer el número de montajes del sistema de archivos antes de hacer un fsck,man tune2fs

    tune2fs' info is kept in the file system superblock
    

    -c El interruptor establece el número de veces que se debe montar el fs antes de verificar el fs.

    sudo tune2fs -c 1 /dev/sda1
    

    Verificar con:

    sudo tune2fs -l /dev/sda1
    

    Este DID funcionó según lo verificado con:

    sudo tune2fs -l /dev/sda1 | grep "Last checked"
    

Resumen

Para forzar un fsckarranque en cada Linux Mint 18.x, use cualquiera tune2fso fsck.mode=force, con opcional fsck.repair=preen/ fsck.repair=yes, los modificadores de línea de comando del núcleo.

jc__
fuente