ext4 verificación del sistema de archivos durante el arranque
Probado en OS:Linux Mint 18.x en una máquina virtual
Información básica
/etc/fstab tiene el fsck orden 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 comprobación de fsck.
Desde 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
Configuración de 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
-
Pasando
-F(forzarfsckal reiniciar) argumento parashutdown:shutdown -rF nowNo; ver:
man shutdown. -
Agregar el
/forcefsckarchivo vacío con:touch /forcefsckEstos scripts parecen usar esto:
/etc/init.d/checkfs.sh /etc/init.d/checkroot.shNO funciona al reiniciar, pero el archivo se eliminó.
Verificado por:
sudo tune2fs -l /dev/sda1 | grep "Last checked" sudo less /var/log/fsck/checkfs sudo less /var/log/fsck/checkrootEstos parecen ser los registros del
initguiones.
Repito, ¡estas dos opciones NO funcionaron!
Ambos métodos SÍ funcionaron
-
conmutadores de arranque del kernel systemd-fsck
Editando el
grubprincipal archivo de configuración:sudoedit /etc/default/grubGRUB_CMDLINE_LINUX="fsck.mode=force"sudo update-grub sudo rebootEsto hizo una verificación del sistema de archivos como se verificó con:
sudo tune2fs -l /dev/sda1 | grep "Last checked"Nota:Este HIZO una verificación, pero para forzar una solución también, debe especificar
fsck.repair="preen"ofsck.repair="yes". -
Usando
tune2fspara establecer el número de montajes del sistema de archivos antes de hacer unfsck,man tune2fstune2fs' info is kept in the file system superblock-cinterruptor establece el número de veces para montar el fs antes de comprobar el fs.sudo tune2fs -c 1 /dev/sda1Verifique con:
sudo tune2fs -l /dev/sda1Este HIZO trabajo como verificado con:
sudo tune2fs -l /dev/sda1 | grep "Last checked"
Resumen
Para forzar un fsck en cada arranque en Linux Mint 18.x, use tune2fs , o fsck.mode=force , con fsck.repair=preen opcional / fsck.repair=yes , la línea de comando del kernel cambia.
Investigación adicional y actualizaciones sobre la respuesta existente
Ahora solo quería comprobar si lo anterior todavía funciona en sistemas basados en Ubuntu 20.04 LTS (probado directamente en Linux Mint 20 Cinnamon y Ubuntu MATE 20.04), y descubrí algunas cosas, comencemos con el intervalo de verificación del sistema de archivos (ejecuté todos los comandos como root (como puede notar ~# delante de los comandos):
Intervalo de comprobación del sistema de archivos
~# LC_ALL=C tune2fs -l /dev/nvme0n1p2 | grep 'Check interval'
Check interval: 0 (<none>)
Bueno, esto fue inesperado. Pensé que nos habíamos ocupado de eso, pero afortunadamente se puede arreglar muy fácilmente. Tome nota, el número que toma como argumento está predeterminado en días, así que asegúrese de usar 1s (1 segundo) en lugar de solo 1, lo que significaría 1 día (86400 segundos):
~# LC_ALL=C tune2fs -i 1s /dev/nvme0n1p2
tune2fs 1.45.5 (07-Jan-2020)
Setting interval between checks to 1 seconds
Ahora, si repetimos la verificación anterior, obtenemos:
Check interval: 1 (0:00:01)
Esto no significa que el sistema de archivos será revisado cada segundo, por supuesto. Más bien, en efecto forzará la verificación del sistema de archivos en cada montaje del sistema de archivos. (Ya que no hay forma de iniciar un sistema dos veces en un segundo).
Número máximo de montajes del sistema de archivos antes de comprobar
Configuración predeterminada:
~# LC_ALL=C tune2fs -l /dev/nvme0n1p2 | grep 'Maximum mount count'
Maximum mount count: -1
Esta configuración ajusta cuántos montajes se necesitan hasta que se verifica el sistema de archivos. Está bien lo que está escrito en la respuesta original:
~# LC_ALL=C tune2fs -c 1 /dev/nvme0n1p2
tune2fs 1.45.5 (07-Jan-2020)
Setting maximal mount count to 1
Solo asegúrese de no usar 0 o -1, ya que se ignoraría.
Probablemente agregaré más información más adelante... Entonces, sigue revisando (juego de palabras).
Fuentes de información:
tune2fspágina man