Author: glen Date: Thu May 30 21:52:47 2013 New Revision: 12673 Modified: rc-scripts/trunk/rc.d/rc.sysinit Log: rc.sysinit: add repair_shell moving common code to single place instead of copycat
Modified: rc-scripts/trunk/rc.d/rc.sysinit ============================================================================== --- rc-scripts/trunk/rc.d/rc.sysinit (original) +++ rc-scripts/trunk/rc.d/rc.sysinit Thu May 30 21:52:47 2013 @@ -169,6 +169,31 @@ done } +# launch repair shell +# which after exiting will reboot +repair_shell() { + local reason="$2" + + # don't use '\n' in nls macro ! + echo + echo + echo "$reason" + nls "*** Dropping you to a shell; the system will reboot" + nls "*** when you leave the shell." + echo + + [ "$SELINUX" = "1" ] && disable_selinux + if ! is_no "$RUN_SULOGIN_ON_ERR"; then + /sbin/sulogin + else + /bin/sh + fi + + run_cmd "Unmounting file systems" umount -a + run_cmd "Remounting root filesystem in ro mode" mount -n -o remount,ro / + run_cmd "Automatic reboot in progress" reboot +} + check_root_fs() { show "Checking root filesystem"; started initlog -c "fsck -C -T -a $fsckoptions /" @@ -177,25 +202,10 @@ # A return of 4 or higher means there were serious problems. if [ $rc -gt 3 ]; then [ -e /proc/splash ] && echo "verbose" > /proc/splash - # don't use '\n' in nls macro ! - echo - echo - nls "*** An error occurred during the file system check." - nls "*** Dropping you to a shell; the system will reboot" - nls "*** when you leave the shell." - echo PS1="$(nls '(Repair filesystem)# ')"; export PS1 - [ "$SELINUX" = "1" ] && disable_selinux - if ! is_no "$RUN_SULOGIN_ON_ERR"; then - /sbin/sulogin - else - /bin/sh - fi + repair_shell "$(nls '*** An error occurred during the file system check.')" - run_cmd "Unmounting file systems" umount -a - mount -n -o remount,ro / - run_cmd "Automatic reboot in progress" reboot # A return of 2 or 3 means that filesystem was repaired but we need # to reboot. elif [ "$rc" = "2" -o "$rc" = "3" ]; then @@ -768,24 +778,9 @@ if [ $rc -gt 0 ]; then [ -e /proc/splash ] && echo "verbose" > /proc/splash show "Starting up RAID devices"; fail - echo - echo - nls "*** An error occurred during the RAID startup." - nls "*** Dropping you to a shell; the system will reboot" - nls "*** when you leave the shell." - echo PS1="$(nls '(RAID Repair)# ')"; export PS1 - [ "$SELINUX" = "1" ] && disable_selinux - if ! is_no "$RUN_SULOGIN_ON_ERR"; then - /sbin/sulogin - else - /bin/sh - fi - - run_cmd "Unmounting file systems" umount -a - run_cmd "Remounting root filesystem in ro mode" mount -n -o remount,ro / - run_cmd "Automatic reboot in progress" reboot + repair_shell "$(nls '*** An error occurred during the RAID startup.')" fi # LVM on RAID (keep in sync with LVM setting few lines above) if [ "$golvm" -eq "1" ]; then @@ -811,24 +806,10 @@ # A return of 2 or higher means there were serious problems if [ $rc -gt 1 ]; then [ -e /proc/splash ] && echo "verbose" > /proc/splash - echo - echo - nls "*** An error occurred during the file system check." - nls "*** Dropping you to a shell; the system will reboot" - nls "*** when you leave the shell." - echo PS1="$(nls '(Repair filesystem)# ')"; export PS1 - [ "$SELINUX" = "1" ] && disable_selinux - if ! is_no "$RUN_SULOGIN_ON_ERR"; then - /sbin/sulogin - else - /bin/sh - fi + repair_shell "$(nls '*** An error occurred during the file system check.')" - run_cmd "Unmounting file systems" umount -a - run_cmd "Remounting root filesystem in ro mode" mount -n -o remount,ro / - run_cmd "Automatic reboot in progress" reboot elif [ "$rc" = "1" -a -x /sbin/quotacheck ]; then _RUN_QUOTACHECK=1 fi @@ -874,24 +855,10 @@ # A return of 2 or higher means there were serious problems. if [ $rc -gt 1 ]; then [ -e /proc/splash ] && echo "verbose" > /proc/splash - echo - echo - nls "*** An error occurred during the file system check." - nls "*** Dropping you to a shell; the system will reboot" - nls "*** when you leave the shell." - echo PS1="$(nls '(Repair filesystem)# ')"; export PS1 - [ "$SELINUX" = "1" ] && disable_selinux - if ! is_no "$RUN_SULOGIN_ON_ERR"; then - /sbin/sulogin - else - /bin/sh - fi + repair_shell "$(nls '*** An error occurred during the file system check.')" - run_cmd "Unmounting file systems" umount -a - run_cmd "Remounting root filesystem in ro mode" mount -n -o remount,ro / - run_cmd "Automatic reboot in progress" reboot elif [ "$rc" = "1" -a -x /sbin/quotacheck ]; then _RUN_QUOTACHECK=1 fi _______________________________________________ pld-cvs-commit mailing list pld-cvs-commit@lists.pld-linux.org http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit