Was kann ich tun, um die Überprüfung des Root-Dateisystems (und optional eine Korrektur) beim Booten zu erzwingen?

10

Gestern ist einer unserer Computer auf grubShell gefallen oder ehrlich gesagt, ich bin mir nicht sicher, welche Shell es war, als wir die Maschine eingeschaltet haben.

Es hat sich gezeigt, dass das Root-Dateisystem oder etwas in diesem Sinne aufgrund von Inkonsistenzen nicht bereitgestellt werden kann.

Ich bin gelaufen, glaube ich:

fsck -fy /dev/sda2

Neustart und das Problem war weg.

Hier kommt der Fragenteil:

Ich habe bereits in der Crontab ihrer Wurzel:

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

während das Skript enthält:

#!/bin/bash
touch /forcefsck

Wenn ich darüber nachdenke, weiß ich nicht, warum ich eine Skriptdatei für einen so kurzen Befehl erstellt habe, aber trotzdem ...

Weiter in der Datei:

/etc/default/rcS

Ich habe definiert:

FSCKFIX=yes

Also verstehe ich es nicht. Wie könnte die Situation überhaupt entstehen?


Was kann ich tun, um die Überprüfung des Root-Dateisystems (und optional eine Korrektur) beim Booten zu erzwingen?

Oder sind diese beiden Dinge das Maximum, das ich tun kann?

Betriebssystem: Linux Mint 18.x Cinnamon 64-Bit.

fstab::

cat /etc/fstab | grep ext4

zeigt an:

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

grub::

fsck.mode=force

wurde bereits zur grubKonfiguration hinzugefügt .

LinuxSecurityFreak
quelle

Antworten:

12

ext4 Dateisystemprüfung beim Booten

Getestet unter OS: Linux Mint 18.x in einer virtuellen Maschine

Grundinformation

/etc/fstabhat die fsckReihenfolge als letzte (6.) Spalte, zum Beispiel:

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

FSCKFIX=yes Variable in /etc/default/rcS

Dadurch wird der fsck in die automatische Korrektur geändert, jedoch keine fsck-Prüfung erzwungen.

Von 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.

Von man tune2fs

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

Beginnen mit

Folgendes einstellen

FSCKFIX=yes

in der Datei

/etc/default/rcS

Überprüfen und notieren Sie das letzte Mal, als fs überprüft wurde:

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

Diese beiden Optionen haben NICHT funktioniert

  1. Übergeben des Arguments -F( fsckbeim Neustart erzwingen ) an shutdown:

    shutdown -rF now
    

    Nee; siehe : man shutdown.

  2. Hinzufügen der /forcefsckleeren Datei mit:

    touch /forcefsck
    

    Diese Skripte scheinen Folgendes zu verwenden:

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

    hat beim Neustart NICHT funktioniert, aber die Datei wurde gelöscht.

    Geprüft von:

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

    Dies scheinen die Protokolle für die initSkripte zu sein.

Ich wiederhole, diese beiden Optionen haben NICHT funktioniert!


Beide Methoden haben funktioniert

  1. Systemd-Fsck- Kernel-Boot-Switches

    Bearbeiten der Hauptkonfigurationsdatei grub:

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

    Dies führte eine Dateisystemprüfung durch, die überprüft wurde mit:

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

    Hinweis: Diese DID einen Scheck, aber ein Update zu erzwingen, müssen Sie angeben fsck.repair="preen", oder fsck.repair="yes".

  2. Verwenden Sie tune2fs, um die Anzahl der Dateisystem-Bereitstellungen festzulegen, bevor Sie a fsck,man tune2fs

    tune2fs' info is kept in the file system superblock
    

    -c Der Schalter legt fest, wie oft die fs gemountet werden sollen, bevor die fs überprüft werden.

    sudo tune2fs -c 1 /dev/sda1
    

    Überprüfen Sie mit:

    sudo tune2fs -l /dev/sda1
    

    Diese DID funktioniert wie verifiziert mit:

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

Zusammenfassung

fsckVerwenden Sie entweder tune2fsoder fsck.mode=forcemit optionalem fsck.repair=preen/ fsck.repair=yesdie Kernel-Befehlszeilenschalter , um bei jedem Start unter Linux Mint 18.x ein a zu erzwingen .

jc__
quelle