Hallo Leute,
da mich das fsck beim Systemstart immer genervt hat (dauert ewig, Aufnahmen werden abgeschnitten) habe ich ein Skript (um)geschrieben, welches kontrolliert, ob die von fsck zu checkenden Laufwerke beim nächsten Systemstart überprüft werden. Wenn das Skript ein solches Laufwerk findet, dann wird fsck für dieses Laufwerk vom Skript ausgeführt.
Das Skript kann beim Shutdown ausgeführt werden, wo ein langwieriges fsck beim VDR nicht stört.
Die Besonderheit des Skriptes ist, dass es automatisch die zu überprüfenden Laufwerke aus der /etc/fstab liest.
Folgendes HowTo für Ubuntu (sollte bei anderen Distris gleich sein):
Erstellen einer Datei /etc/init.d/force-fsck (z.B. mit vi, nano, mcedit, joe)
Folgendes kommt da rein...
#!/bin/bash
# Vorgezogener fsck, falls ein MountCount +1 = MaxMountCount
# Die zu überprüfenden Laufwerke werden aus der /etc/fstab
# liest (Spalte <pass> nicht 0)
cut -f1 -d"#" /etc/fstab | awk '$6 > 0 {print $1}' | while read HDD; do
RunFsck="false"
MountCount=`tune2fs -l $HDD | grep "Mount count" | cut -c 27-`
echo "$HDD -> Mount count = $MountCount."
MaxMountCount=`tune2fs -l $HDD | grep "Maximum mount count" | cut -c 27-`
echo "$HDD -> Maximum mount count = $MaxMountCount."
let MountCountZahl=$MountCount+1
if [ $MountCountZahl -ge $MaxMountCount ]; then
RunFsck="true"
echo "$HDD -> Running fsck is needed!"
if [ $RunFsck == "true" ]; then
touch /etc/mtab
if [ $? -eq 0 ]; then
echo "$HDD -> File system is still mounted, skipping run of fsck!"
else
# HIER KÖNNTE ETWAS AUF DEM DISPLAY ANGEZEIGT WERDEN...
echo "$HDD -> Now starting fsck..."
STPID=$!
fsck -C0 -y -f $HDD
echo "$HDD -> Filesystemcheck is done."
fi
fi
else
echo "$HDD -> No need to run fsck."
fi
done #| logger -s -t force-fsck
Alles anzeigen
# Datei Speichern und Skript ausführbar machen:
chmod 775 /etc/init.d/force-fsck
# Symlinks erstellen, die beim Shutdown ausgeführt werden:
ln -s /etc/init.d/force-fsck /etc/rc0.d/S61force-fchk
ln -s /etc/init.d/force-fsck /etc/rc6.d/S61force-fchk
Jetzt sollte es funktionieren.
einfach zum testen in der Console: "/etc/init.d/force-fsck"
aufrufen.
Den MaxMountCount einer Platte (hier /dev/hda3) kann man mit: "tune2fs -c30 /dev/hda3" auf z.B. 30 setzten.
Zum Testen kann man den MountCount der Platte mit "tune2fs -C29 /dev/hda3" auf 29 setzen.
Siehe auch: [HowTo]C´T VDR - nerviges fsck vom Start beim Shutdown erledigen + passende Animation für GraphLcd
Gruß
Steffen