a3190ec48c
--HG-- extra : convert_revision : 97fb9127cb91659331f1574a19a8871fed30a0ab
67 lines
1.4 KiB
Bash
Executable file
67 lines
1.4 KiB
Bash
Executable file
#!/bin/sh
|
|
#
|
|
# PROVIDE: checkfs
|
|
# REQUIRE: SERVERS
|
|
# BEFORE: NETWORKING
|
|
|
|
$_rc_subr_loaded . /etc/rc.subr
|
|
|
|
name="checkfs"
|
|
start_cmd="checkfs_start"
|
|
stop_cmd=":"
|
|
|
|
NETFS="nonfs,nonfs4,nosmbfs,nocifs,nocodafs,noncpfs,nosysfs,noshfs"
|
|
NETFS="$NETFS,nofuse,nofuseblk"
|
|
|
|
checkfs_start()
|
|
{
|
|
echo -n "Mounting root read-only... "
|
|
mount -n -o remount,ro /
|
|
show_rval
|
|
|
|
FORCEFSCK=
|
|
[ -f /forcefsck ] && FORCEFSCK="-- -f"
|
|
|
|
echo "Checking local filesystems... "
|
|
fsck -A -T -C -a -t $NETFS $FORCEFSCK 2>/dev/null
|
|
fsckret=$?
|
|
echo
|
|
if [ ${fsckret} -gt 1 ]; then
|
|
echo "failed!"
|
|
if [ $((${fsckret}&2)) -eq 2 ]; then
|
|
echo
|
|
echo "************** REBOOT REQUIRED *************"
|
|
echo
|
|
echo " The system will be rebooted automatically"
|
|
echo " in 5 seconds."
|
|
echo
|
|
echo "********************************************"
|
|
echo
|
|
sleep 5
|
|
else
|
|
echo
|
|
echo "********* FILESYSTEM CHECK FAILED ************"
|
|
echo
|
|
echo " Please repair manually and reboot. Note that"
|
|
echo " the root filesystem is currently mounted"
|
|
echo " read-only. To remount it read-write type:"
|
|
echo
|
|
echo " mount -n -o remount,rw /"
|
|
echo
|
|
echo " When you exit the maintenance shell the system"
|
|
echo " will reboot automatically."
|
|
echo
|
|
echo "************************************************"
|
|
echo
|
|
sulogin -p
|
|
fi
|
|
echo "Automatic reboot in progress..."
|
|
umount -a
|
|
mount -n -o remount,ro /
|
|
reboot -f
|
|
exit 0
|
|
fi
|
|
}
|
|
|
|
load_rc_config $name
|
|
run_rc_command "$1"
|