Hallöchen liebe Mit-VDR´ler
gelegentlich muß ich unverhältnissmäßig lange auf den Start von meinem VDR warten, und zwar weil ein FileSystemCheck über meine Video -oder Systempartition fliegt...
Das kann leicht zu Mißverständnissen führen...
...da denkt die Frau im Haus schonmal, der Rechner ist hängen geblieben und drückt den reset !! ...nicht gut...
Außerdem bin ich noch über diese schönen Screens für GraphLcd unter LinVDR gestolpert... An dieser Stelle Vielen Dank an NoTape
Lange Rede, kurzer Sinn :
Ich will den langen fsck anstatt beim Booten beim Shutdown, da stört er nicht.
Außerdem wird der FileSystemCheck auf dem GraphLcd angezeigt, damit man sich nicht wundert, warum die Kiste nicht ausgeht...
-------------------------------------------------------
Erstmal wie hier die FileSystemCheck-Animation zum Laufen bringen.
Ich habe das Verzeichniss für die *.glcd-Dateien "/usr/share/vdr-plugin-graphlcd/splash/fsck" genannt. Dort alle fsck-.graphlcd-Dateien reinkopieren.
Nun der Test: (vdr stoppen) showpic -c /etc/graphlcd.conf -d EuerDisplayType -s 500 -e $(ls /usr/share/vdr-plugin-graphlcd/splash/fsck/*.glcd) &
Anzeige läuft? Na dann, weiter geht´s...
Erstellen einer Datei /etc/init.d/fsck (z.B. mit vi, nano, mcedit)
Folgendes kommt da rein...
#!/bin/bash
# Vorgezogener fsck, falls ein MountCount +1 = MaxMountCount
DrivesToCheck="/dev/hda1 /dev/hda6"
GraphLcdConf=/etc/graphlcd.conf #wer das GraphLcdZeug nicht braucht
GraphLcdType=t6963c #kommentiert GraphLcdConf,GraphLcdType,
FsckSplashDir=/usr/share/vdr-plugin-graphlcd/splash/fsck #FsckSplashDir,showpic und Zeile 30 aus ;-)
showpic=/usr/bin/showpic
for HDD in $DrivesToCheck
do
RunFsck="false"
MountCount=`tune2fs -l $HDD | grep "Mount count" | cut -c 27-`
echo "Mount Count from $HDD = $MountCount"
MaxMountCount=`tune2fs -l $HDD | grep "Maximum mount count" | cut -c 27-`
echo "Max Mount Count from $HDD = $MaxMountCount"
let MountCountZahl=$MountCount+1
if [ $MountCountZahl -ge $MaxMountCount ]
then
RunFsck="true"
echo "---Run fsck for $HDD is needed---"
if [ $RunFsck == "true" ]; then
touch /etc/mtab
if [ $? -eq 0 ]
then
echo "---RootFS still mounted, skipping run of fsck on $HDD!!!---"
else
echo "---Now starting fsck on $HDD---"
$showpic -c $GraphLcdConf -d $GraphLcdType -s 500 -e $(ls $FsckSplashDir/*.glcd)&
STPID=$!
fsck -C0 -y -f $HDD
echo "---Filesystemcheck is done on $HDD---"
fi
fi
else
echo "---No Need to run fsck on $HDD---"
fi
done
Display More
Zeile 5 - 9 müßt ihr noch an eure Gegebenheiten anpassen.
Datei speichern, ausführbar machen mit "chmod a+x /etc/init.d/fsck"
Das ganze wird noch garniert mit einem Link ; entweder in /etc/rc0.d/ oder in /etc/rc6.d/ ; je nachdem, ob euer System beim runterfahren einen Reboot oder Halt macht...
Der Link MUSS nach dem umountfs-Aufruf(hier /etc/rc0.d/S40umountfs)
und nach einem evtl. vorhand. umountrootfs
und vor dem halt-Aufruf(hier /etc/rc0.d/S90halt) erfolgen !!
z. B.
ln -s /etc/init.d/fsck /etc/rc0.d/S41fsck
--------------------------------------------------------
Zur Fehlerüberprüfung kann man das Script mit sh -x /etc/init.d/fsck ausführen, falls das nötig sein sollte...
-------------------------------------------------------
Zum Testen habe ich per "tune2fs -C29 /dev/hda1" den MountCount von hda1 auf 29 erhöht. MaxMountCount der hda1 ist 30.
Wenn jetzt ein Shutdown erfolgt, wird (wenn alles geklappt hatt) vor dem Shutdown noch der Fsck für alle Platten, die es nötig haben, ausgeführt.
Viel Erfolg beim Nachbasteln
Kommentare und Fragen sind gern gesehen
...Dieser Thread hatt mich auf die Idee gebracht
MfG
Crue