I tried to replace "-a" with "-p" in the script and it SEEMS it works better now. I tried with this:
1. create a "/forcecheck" file to make sure the checkroot script was exected.
2. reboot.
3. ...wait for 10 minutes for disk to be scanned... (??? something took some time here atleast)
4. machine surfaced!
Entire script:
Code:
#!/sbin/runscript
# Copyright 1999-2004 Gentoo Technologies, Inc.
# Distributed under the terms of the GNU General Public License v2
# $Header: /home/cvsroot/gentoo-src/rc-scripts/init.d/checkroot,v 1.39 2004/04/21 17:09:18 vapier Exp $
depend() {
before *
}
start() {
local retval=0
if [ ! -f /fastboot -a -z "${CDBOOT}" ]
then
ebegin "Remounting root filesystem read-only (if necessary)"
mount / -n -o remount,ro &>/dev/null
eend $?
ebegin "Checking root filesystem"
if [ -f /forcefsck ]
then
ewarn "A full fsck has been forced"
fsck -C -p -f /
# /forcefsck isn't deleted because checkfs needs it.
# it'll be deleted in that script.
retval=$?
else
fsck -C -T -p /
retval=$?
fi
if [ "${retval}" -eq 0 ]
then
eend 0
elif [ "${retval}" -eq 1 ]
then
ewend 1 "Filesystem repaired"
elif [ "${retval}" -eq 2 -o "${retval}" -eq 3 ]
then
ewend 1 "Filesystem repaired, but reboot needed!"
echo -ne "\a"; sleep 1; echo -ne "\a"; sleep 1
echo -ne "\a"; sleep 1; echo -ne "\a"; sleep 1
ewarn "Rebooting in 10 seconds ..."
sleep 10
einfo "Rebooting"
/sbin/reboot -f
else
eend 2 "Filesystem couldn't be fixed :("
/sbin/sulogin ${CONSOLE}
einfo "Unmounting filesystems"
/bin/mount -a -o remount,ro &>/dev/null
einfo "Rebooting"
/sbin/reboot -f
fi
fi
# Should we mount root rw ?
if mount -vf -o remount / 2> /dev/null | \
awk '{ if ($6 ~ /rw/) exit 0; else exit 1; }'
then
ebegin "Remounting root filesystem read/write"
mount / -n -o remount,rw &>/dev/null
if [ "$?" -ne 0 ]
then
eend 2 "Root filesystem could not be mounted read/write :("
/sbin/sulogin ${CONSOLE}
else
eend 0
fi
fi
if [ "${BOOT}" = "yes" ]
then
local x=
local y=
#
# Create /etc/mtab
#
# Clear the existing mtab
> /etc/mtab
# Add the entry for / to mtab
mount -f /
# Don't list root more than once
awk '$2 != "/" {print}' /proc/mounts >> /etc/mtab
# Now make sure /etc/mtab have additional info (gid, etc) in there
for x in $(awk '{ print $2 }' /proc/mounts | uniq)
do
for y in $(awk '{ print $2 }' /etc/fstab)
do
if [ "${x}" = "${y}" ]
then
mount -f -o remount $x
continue
fi
done
done
# Remove stale backups
rm -f /etc/mtab~ /etc/mtab~~
fi
}
# vim:ts=4