From: Arne Fitzenreiter Date: Wed, 23 Jul 2008 14:52:31 +0000 (+0200) Subject: Add checkfstab (repair fstab and grup.conf if the rootdevice has changed) X-Git-Tag: v2.3-beta2~6^2~6 X-Git-Url: http://git.ipfire.org/?p=people%2Fpmueller%2Fipfire-2.x.git;a=commitdiff_plain;h=ba3e5905a3bc2a60ece484d092e6174cbf7655fe;hp=668419eec83a263af8651144d6bf7d16b449b0f4 Add checkfstab (repair fstab and grup.conf if the rootdevice has changed) --- diff --git a/config/rootfiles/common/initscripts b/config/rootfiles/common/initscripts index 1b4e0e077f..836f26dc21 100644 --- a/config/rootfiles/common/initscripts +++ b/config/rootfiles/common/initscripts @@ -9,6 +9,7 @@ etc/rc.d/init.d/apache #etc/rc.d/init.d/applejuice etc/rc.d/init.d/beep etc/rc.d/init.d/checkfs +etc/rc.d/init.d/checkfstab #etc/rc.d/init.d/clamav etc/rc.d/init.d/cleanfs etc/rc.d/init.d/connectd @@ -123,6 +124,7 @@ etc/rc.d/rc6.d/S99reboot etc/rc.d/rcsysinit.d/S00mountkernfs etc/rc.d/rcsysinit.d/S05modules etc/rc.d/rcsysinit.d/S10udev +etc/rc.d/rcsysinit.d/S19checkfstab etc/rc.d/rcsysinit.d/S20swap etc/rc.d/rcsysinit.d/S30checkfs etc/rc.d/rcsysinit.d/S40mountfs diff --git a/config/rootfiles/updater/filelists/core15 b/config/rootfiles/updater/filelists/core15 index f4ec6e1fc4..2c19e7db39 100644 --- a/config/rootfiles/updater/filelists/core15 +++ b/config/rootfiles/updater/filelists/core15 @@ -19,3 +19,5 @@ bin/ntfs-3g lib/libntfs-3g.so lib/libntfs-3g.so.31 lib/libntfs-3g.so.31.0.0 +etc/rc.d/init.d/checkfstab +etc/rc.d/rcsysinit.d/S19checkfstab diff --git a/lfs/initscripts b/lfs/initscripts index c56b2b97a2..fff10c1a35 100644 --- a/lfs/initscripts +++ b/lfs/initscripts @@ -126,6 +126,7 @@ $(TARGET) : ln -sf ../init.d/mountkernfs /etc/rc.d/rcsysinit.d/S00mountkernfs ln -sf ../init.d/modules /etc/rc.d/rcsysinit.d/S05modules ln -sf ../init.d/udev /etc/rc.d/rcsysinit.d/S10udev + ln -sf ../init.d/checkfstab /etc/rc.d/rcsysinit.d/S19checkfstab ln -sf ../init.d/swap /etc/rc.d/rcsysinit.d/S20swap ln -sf ../init.d/checkfs /etc/rc.d/rcsysinit.d/S30checkfs ln -sf ../init.d/mountfs /etc/rc.d/rcsysinit.d/S40mountfs diff --git a/src/initscripts/init.d/checkfstab b/src/initscripts/init.d/checkfstab new file mode 100644 index 0000000000..0ccf593d99 --- /dev/null +++ b/src/initscripts/init.d/checkfstab @@ -0,0 +1,50 @@ +#!/bin/sh +######################################################################## +# Begin $rc_base/init.d/checkfstab +# +# Description : Check and repair fstab if the drivename has changed +# +# Authors : Arne Fitzenreiter - arne_f@ipfire.org +# +# Version : 00.00 +# +# Notes : +# +######################################################################## + +. /etc/sysconfig/rc +. ${rc_functions} + +case "${1}" in + start) + boot_mesg "Checking fstab rootdevice entry ..." + OLDROOT=`cat /etc/fstab | grep " / " | cut -d" " -f1`; + NEWROOT=`df | grep " /$" -m1 | cut -d" " -f1`; + OLDDRV=${OLDROOT::`expr length $OLDROOT`-1} + NEWDRV=${NEWROOT::`expr length $NEWROOT`-1} + if [ "$OLDROOT" == "$NEWROOT" ]; then + echo_ok; + exit 0; + fi + echo_failure; + boot_mesg "Warning! Rootdevice not match with fstab entry!" + boot_mesg + boot_mesg "Rootdevice: $NEWROOT" + boot_mesg "fstab-entry: $OLDROOT" + boot_mesg + boot_mesg "Attempt to repair it ..." + mount -o remount,rw / + sed -i -e "s|$OLDDRV|$NEWDRV|g" /etc/fstab + mount /boot + sed -i -e "s|$OLDDRV|$NEWDRV|g" /boot/grub/grub.conf + umount /boot + echo_ok; + exit 0; + ;; + *) + echo "Usage: ${0} {start}" + exit 1 + ;; +esac + +# End $rc_base/init.d/checkfstab