Apache/2.4.7 (Ubuntu) Linux sman1baleendah 3.13.0-24-generic #46-Ubuntu SMP Thu Apr 10 19:11:08 UTC 2014 x86_64 uid=33(www-data) gid=33(www-data) groups=33(www-data) safemode : OFF MySQL: ON | Perl: ON | cURL: OFF | WGet: ON > / lib / recovery-mode / | server ip : 172.67.156.115 your ip : 172.70.80.171 H O M E |
Filename | |
Size | 3.06 kb |
Permission | rwxr-xr-x |
Owner | root : root |
Create time | 27-Apr-2025 09:55 |
Last modified | 09-Mar-2012 03:28 |
Last accessed | 05-Jul-2025 15:52 |
Actions | edit | rename | delete | download (gzip) |
View | text | code | image |
#!/bin/bash
if [ ! -x "$(which whiptail)" ]; then
echo "Couldn't find whiptail, starting root shell instead of recovery menu."
sulogin
clear
exit
fi
# include gettext stuff
. /lib/recovery-mode/l10n.sh
# main
READONLY=true
while true; do
unset items
if [ "$READONLY" = "true" ]; then
menu_text=$(eval_gettext "Recovery Menu (filesystem state: read-only)")
else
menu_text=$(eval_gettext "Recovery Menu (filesystem state: read/write)")
fi
items[c++]="resume"
items[c++]=$(eval_gettext " Resume normal boot")
for i in /lib/recovery-mode/options/*; do
if [ -x "$i" ]; then
name="`"$i" test`"
if [ $? -eq 0 ]; then
items[c++]="${i##*/}"
items[c++]=" $name"
fi
fi
done
choice="$(whiptail --nocancel --menu "$menu_text" 18 70 10 \
"${items[@]}" \
3>&1 1>&2 2>&3 3>&-)"
if [ -z "$choice" ]; then
continue
fi
if [ "$choice" = "resume" ]; then
box_text=$(eval_gettext "You are now going to exit the recovery mode and continue the boot sequence. Please note that some graphic drivers require a full graphical boot and so will fail when resuming from recovery.
If that's the case, simply reboot from the login screen and then perform a standard boot.")
whiptail --msgbox "$box_text" 12 70
clear
exit
fi
/lib/recovery-mode/options/$choice test mode >/dev/null 2>&1
retval=$?
# Hack for the fsck case (needs to be cosidered read/write only when
# in read-only mode and read-only only when in read/write mode)
if [ "$choice" = "fsck" ] && [ "$READONLY" = "false" ]; then
retval=1
fi
case "$retval" in
0)
# 0 => requires read/write
if [ "$READONLY" = "true" ]; then
box_text=$(eval_gettext "Continuing will remount your / filesystem in read/write mode and mount any other filesystem defined in /etc/fstab.
Do you wish to continue?")
whiptail --yesno "$box_text" 10 70 || continue
if [ "$choice" = "fsck" ]; then
FSCHECK="true"
fi
# Code mostly taken from mountall upstart job
. /etc/default/rcS
[ "$FSCHECK" = "true" ] || [ -f /forcefsck ] && force_fsck="--force-fsck"
[ "$FSCKFIX" = "yes" ] && fsck_fix="--fsck-fix"
mountall $force_fsck $fsck_fix --no-events
rm -f /forcefsck 2>dev/null || true
if [ "$choice" = "fsck" ]; then
echo ""
echo $(eval_gettext "Finished, please press ENTER")
read TMP
fi
READONLY=false
fi
;;
1)
# 1 => read-only only
if [ "$READONLY" = "false" ]; then
box_text=$(eval_gettext "The option you selected requires your filesystem to be in read-only mode. Unfortunately another option you selected earlier, made you exit this mode.
The easiest way of getting back in read-only mode is to reboot your system.")
whiptail --msgbox "$box_text" 12 70
continue
fi
;;
2)
# 2 => works in all cases
# nothing to do
;;
esac
export READONLY
/lib/recovery-mode/options/$choice
done
if [ ! -x "$(which whiptail)" ]; then
echo "Couldn't find whiptail, starting root shell instead of recovery menu."
sulogin
clear
exit
fi
# include gettext stuff
. /lib/recovery-mode/l10n.sh
# main
READONLY=true
while true; do
unset items
if [ "$READONLY" = "true" ]; then
menu_text=$(eval_gettext "Recovery Menu (filesystem state: read-only)")
else
menu_text=$(eval_gettext "Recovery Menu (filesystem state: read/write)")
fi
items[c++]="resume"
items[c++]=$(eval_gettext " Resume normal boot")
for i in /lib/recovery-mode/options/*; do
if [ -x "$i" ]; then
name="`"$i" test`"
if [ $? -eq 0 ]; then
items[c++]="${i##*/}"
items[c++]=" $name"
fi
fi
done
choice="$(whiptail --nocancel --menu "$menu_text" 18 70 10 \
"${items[@]}" \
3>&1 1>&2 2>&3 3>&-)"
if [ -z "$choice" ]; then
continue
fi
if [ "$choice" = "resume" ]; then
box_text=$(eval_gettext "You are now going to exit the recovery mode and continue the boot sequence. Please note that some graphic drivers require a full graphical boot and so will fail when resuming from recovery.
If that's the case, simply reboot from the login screen and then perform a standard boot.")
whiptail --msgbox "$box_text" 12 70
clear
exit
fi
/lib/recovery-mode/options/$choice test mode >/dev/null 2>&1
retval=$?
# Hack for the fsck case (needs to be cosidered read/write only when
# in read-only mode and read-only only when in read/write mode)
if [ "$choice" = "fsck" ] && [ "$READONLY" = "false" ]; then
retval=1
fi
case "$retval" in
0)
# 0 => requires read/write
if [ "$READONLY" = "true" ]; then
box_text=$(eval_gettext "Continuing will remount your / filesystem in read/write mode and mount any other filesystem defined in /etc/fstab.
Do you wish to continue?")
whiptail --yesno "$box_text" 10 70 || continue
if [ "$choice" = "fsck" ]; then
FSCHECK="true"
fi
# Code mostly taken from mountall upstart job
. /etc/default/rcS
[ "$FSCHECK" = "true" ] || [ -f /forcefsck ] && force_fsck="--force-fsck"
[ "$FSCKFIX" = "yes" ] && fsck_fix="--fsck-fix"
mountall $force_fsck $fsck_fix --no-events
rm -f /forcefsck 2>dev/null || true
if [ "$choice" = "fsck" ]; then
echo ""
echo $(eval_gettext "Finished, please press ENTER")
read TMP
fi
READONLY=false
fi
;;
1)
# 1 => read-only only
if [ "$READONLY" = "false" ]; then
box_text=$(eval_gettext "The option you selected requires your filesystem to be in read-only mode. Unfortunately another option you selected earlier, made you exit this mode.
The easiest way of getting back in read-only mode is to reboot your system.")
whiptail --msgbox "$box_text" 12 70
continue
fi
;;
2)
# 2 => works in all cases
# nothing to do
;;
esac
export READONLY
/lib/recovery-mode/options/$choice
done