Dieser Eintrag wurde vor mehr als 2 Jahren erstellt und vor über einem Monat zuletzt bearbeitet. Eventuell ist längst sein Mindesthaltbarkeitsdatum überschritten!
Was macht man, wenn man Linux auf einem Embedded-System ohne RTC, Bildschirm und Tastatur installiert, und bei jedem Booten einen e2fsck-Fehler bekommt, und das System steht?
Checking root file system...fsck from util-linux-ng 2.16.1
ROOT: Superblock last mount time (Fri Mar 26 18:53:39 2010,
now = Sat Jan 1 00:00:14 2000) is in the future.
ROOT: UNEXPECTED INCONSISTENCY; RUN fsck MANUALLY.
(i.e., without -a or -p options)
Klar, wir haben keine Hardware-Uhr bzw. keine Stützbatterie, es ist "Sat Jan 1 00:00:14 2000" (14 Sekunden nach Power-On), NTP läuft so früh noch nicht, und beim letzten Herunterfahren war es März 2010.
Die Lösung ist, diesen Fehler (und nur diesen!) einfach zu ignorieren. Dafür in /etc/e2fsck.conf
folgendes einfügen:
# See the e2fsck.conf man page for more info
[options]
# allow fsck to run sanely at any point in time #142850
buggy_init_scripts = yes
broken_system_clock = yes
# allow cancel (CTRL-C)
allow_cancellation = true
[problems]
# Superblock last mount time is in the future
# (PR_0_FUTURE_SB_LAST_MOUNT).
0x000031 = {
preen_ok = true
preen_nomessage = true
}
# Superblock last write time is in the future
# (PR_0_FUTURE_SB_LAST_WRITE).
0x000032 = {
preen_ok = true
preen_nomessage = true
}
Hier steht preen_ok = true
für "ignorieren" und preen_nomessage = true
für "Nicht melden". 0x000031 bzw. 0x000031 sind aus den e2fsck-Sourcen, oder auch an anderen Stellen im Netz zu finden.
buggy_init_scripts = 1
ist nur für 24h Toleranz zuständig, schadet aber trotzdem nicht.
Um die lästigen und bremsenden "One of the files in /etc/{conf.d,init.d} or /etc/rc.conf has a modification time in the future"-Meldungen noch los zu werden, kann man in /etc/conf.d/local.stop
(oder das Pendent der jewiligen Distribution) noch folgendes einfügen
# /etc/conf.d/local.stop
# Zurueck in die Steinzeit - 01.01.2000, 01:00 Uhr!
touch -t 198001010100 /etc/conf.d/*
touch -t 198001010100 /etc/init.d/*
touch -t 198001010100 /etc/rc.conf
um die beanstandeten Dateien für das nächste Booten auf den 01.01.1980, 01:00 Uhr zu setzen.
Eine Möglich keit ist natürlich auch, Laufzeit-Basierte fsck
s auf dem Dateisystem mit tune2fs -i 0 /dev/sdx
komplett auszuschalten,.
Um was es geht?
Ein Alix.2D2 - Board mit Gentoo als Router.
Edit (22.04.2011):
In der Schweiz hat man nachgedacht - das Alix 2d13 z.B. hat eine RTC-Batterie - soeben bestellt.