Come forzare fsck ad ogni avvio - tutti i filesystem (rilevanti)?


14

Sto lavorando con un PC fanless (centinaia di loro, in effetti) che ha partizioni debian 6 e 3 (FAT e 2x ext2). Il sistema non ha un pulsante di accensione in quanto tale, quindi la maggior parte delle persone tende a strappare la spina per "spegnerla" piuttosto che init 0 (o equivalente). Di conseguenza il filesystem (s) genera errori abbastanza rapidamente.

Ho provato a usare 'shutdown -rF' per forzare fsck ma questo non sembra funzionare. Mi chiedo se c'è un modo per dire al sistema di controllare ogni punto di montaggio / FS prima che vengano montati.

Ho provato a impostare il parametro fsck in / etc / fstab. Questo in genere mi dà un 'errori trovati. Esegui fsck manualmente ".

Ci sono altre opzioni da provare?


1
A) Chi erano i tuoi utenti? B) Avresti potuto aggiungere un importante pulsante "Spegni" che era sempre visibile sullo schermo? C) In alternativa, potresti aver educato i tuoi utenti? D) Perché le macchine non avevano i pulsanti di accensione nella parte anteriore?
indimenticabileSupportaMonica

Questa domanda è quasi duplicata di unix.stackexchange.com/questions/180488/… dello stesso utente.
indimenticabileSupportaMonica

Risposte:


16

In /etc/init.d/checkfs.shè la linea if [ -f /forcefsck ] || grep -s -w -i "forcefsck" /proc/cmdline, quindi fornire forcefscksulla riga di comando del kernel o generare un /forcefsckfile allo spegnimento dovrebbe causare un fsck al prossimo riavvio.

Per impedire l'esecuzione manuale di fsck, chiedi fsckdi provare a correggere automaticamente gli errori con l' -yopzione decommentando e cambiando no yesnella seguente voce / etc / default / rcS, dopo la modifica dovrebbe apparire come:

# automatically repair filesystems with inconsistencies during boot
FSCKFIX=yes

Un'opzione (forcefsck o FSCKFIX) non implica l'altra.


Gestirà la condizione "Esegui fsck manualmente"?
ethrbunny,

Anzi, ho letto troppo velocemente, ho aggiornato la mia risposta.
grigio finito verde

Ho impostato sia FSCKFIX = yes che il valore in checkfs.sh. In nessun caso fsck è stato eseguito al riavvio (tramite init 6). Qui mi sta sfuggendo qualcosa.
ethrbunny,

Non cambiare nulla in checkfs.sh, modifica solo / etc / defaults / rcS ed eseguilo touch /forcefsckprima del riavvio. L'ultimo comando deve essere eseguito prima di ogni riavvio o subito dopo l'avvio, ma lo script init fsck è terminato.
grigio finito verde

Hmm .. nessuna fortuna. Vedo ancora il messaggio "montaggio di un file system non controllato" seguito da molti errori "Elimina riferimento a inode". Finora cambiare / etc / fstab è stata l'unica cosa che ha avuto alcun effetto. Non sono sicuro di cosa sto facendo in modo che i tuoi suggerimenti non funzionino.
ethrbunny,

8

Aggiungi il fsck.mode=forceparametro Kernel sul tuo bootloader. Aggiungi questa opzione alla GRUB_CMDLINE_LINUX_DEFAULT=variabile interna /etc/default/grub. Come root, genera un nuovo file di configurazione di grub:

[root@host]# grub-mkconfig -o /boot/grub/grub.cfg

Questo parametro ha lo stesso effetto della creazione del forcefsckfile all'interno della radice del punto di montaggio.

La soluzione di usare lo checkfs.shscript si adatterà meglio a Debian, ma non dovrebbe funzionare su altre distro


7

Sto modificando la mia risposta:

Il comando è:

sudo tune2fs -c 1 /dev/sdX

secondo l'argomento manpages -c per tune2fs conta il numero di istanze di mount per una partizione. Quindi, 1 forza per controllare la fs dopo ogni istanza di montaggio.

( http://man7.org/linux/man-pages/man8/tune2fs.8.html )


2
Solo un comando non è sufficiente nella maggior parte dei casi, scrivi anche una spiegazione minima.
Peter - Ripristina Monica
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.