Nagyon zavart, hogy minden 26. újraindításnál a debián csinált egy fsck-t a root filesystem-emen. Az rendben van, hogy egy journaling file-system-en is érdemes ezt megcsinálni, de azért a 26 kicsit sűrűnek tűnik. Főként annak fényében, hogy ketten használjuk a gépet és ez azt jelent, hogy legfeljebb 2 hetente végigbogarássza a diszket. Ehhez még hozzájön, hogy mindig "szépen" van leállítva. Azt sem éreztem túl szerencsésnek, hogy akkor is elkezdi a diszket ellenőrizni, ha akkumulátorról megy a laptop. Ezért felkutattam, hogyan lehet ezt a beállítást megváltoztatni.
A boot folyamat közben, eléggé az elején jön fel az fsck üzenete, hogy a root partíció clean. Tehát keressünk a /etc/init.d könyvtárban valami beszédes nevű szkriptet. Találtam is egy "checkroot.sh" shell szkriptet. Böngésszünk csak bele.
Olvasás közben találtam pár "$rootcheck" = yes sort. No ez már gyanús. Kb. a közepén egy ilyen megjegyzést is találtam:
# Disabled AC power check until fsck can be told to only check the
Az alatta levő sorokat kell egy picit átírni és akkor aksiról nem fog fsck-zni. Ezek elől kiszedtem a '#'-ot:
# file system if it is corrupt when running on battery. (bug #526398)
if which on_ac_power >/dev/null 2>&1 && [ "$rootcheck" = yes ]
then
on_ac_power >/dev/null 2>&1
if [ "$?" -eq 1 ]
then
log_warning_msg "On battery power, so skipping file system check."
rootcheck=no
fi
fi
Ez elé meg betettem egyet:
#rootcheck=yes
No ezzel megvagyunk. Marad a kérdés, hogy mitől fsck-zik minden 26-ikra. A szkriptből ez nem derült ki számomra. Külső file-ra nem hivatkozik. Akkor marad az, hogy a filesystem tudja magáról, hogy mikor volt ellenőrizve. Némi guglizás után találtam egy tune2fs programocskát. A szokásos módon működik "tune2fs mit_csináljon melyik_FSen_csinálja". Először a melyik kérdésre kell a választ megkeresni. Mondjuk "df"-fel, vagy a mount-tal meg lehet nézni, hogy a root fs ("/") melyik partícióra van mount-olva. A /dev/sda1 lett a nyertes. Néhány a hasznosnak talált lehetőség közül:
tune2fs -c 100 /dev/sda1 # minden 100-ikra ellenőriz
tune2fs -C number /dev/sda1 # beállítja, hogy hanyadik mount-nál áll
tune2fs -i 30 /dev/sda1 # minden 30 nap elteltével ellenőriz
tune2fs -l /dev/sda1 # mindenféle okosságot kilistáz
Én végül is az elsőt adtam meg. Illetve a checkroot.sh-ba beletettem egy sort az fsck-zó blokk elé:
tune2fs -l /dev/sda1|fgrep -e "Mount count:" -e "Maximum mount count:" -e "Last checked:" -e "Next check after:" -e "Filesystem state:"
Így látom, hogy hanyadik mount-nál tartok és eldönthetem, hogy inkább lejjebb veszem a mount számlálót (tune2fs -C...), vagy inkább beállítom, hogy a következőre csinálja meg. Lehet erőltetni is az fsck futását. A shoutdown -F paramétere erre jó. Ez létrehoz egy /forcefsck file-t, amit persze mi is megtehetünk. A checkroot.sh ennek a file-nak a megléte alapján is elvégzi a rárótt feladatot.
Az is meg lehet persze oldani, hogy ha boot alatt bekapcsolom a Caps Lock-ot, akkor megcsinálja az fsck-t. A /etc/init.d/checkroot.sh-hoz a kiemelt részeket adtam hozzá:
/usr/bin/setleds|awk '/^Current leds:/{exit $6!="on"}' && fforce=1
...
if [ "$rootcheck" = yes ]
then
if [ -f /forcefsck -o -n "$fforce" ] || grep -s -w -i "forcefsck" /proc/cmdline
Állítgassunk valamit minden nap!
+jegyzések