=== modified file 'README' --- README 2008-04-11 11:08:19 +0000 +++ README 2011-08-30 20:58:27 +0000 @@ -5,7 +5,7 @@ "Plugins" can be added easily: -* install a script in /usr/share/recovery-mode/options +* install a script in /lib/recovery-mode/options * recovery-mode will invoke it with "test" - it should return "0" and print its name on stdout - if it returns "1" here it will not be added to the === modified file 'debian/changelog' --- debian/changelog 2011-07-19 11:14:04 +0000 +++ debian/changelog 2011-09-15 20:24:20 +0000 @@ -1,3 +1,26 @@ +friendly-recovery (0.2.13) oneiric; urgency=low + + * Move everything to /lib/recovery-mode/ (LP: #234409) + * Don't use the fullpath to whiptail + * Add new init script starting on recovery-mode (LP: #459376) + * If whiptail can't be found, just start sulogin + * Add a script to start mountall (remount everything read/write) + (LP: #575469, LP: #651782) + * Export READONLY to all scripts so they can test on the read/write state + * Disable most scripts when the system is read only + * Change file system check to happen when remount is called + * Wait after all scripts returning output so the user can read it + * Add postinst script to move any existing script to /lib/recovery-mode + and make /usr/share/recovery-mode a symlink + * Mark as breaking on older grub2, upstart and initramfs-tools + * Small packaging refresh: + - Bump standard to 3.9.2, no change needed + - Drop simple patchsys (no patches) + - No need to depend on bash (essential package) + - Add ${misc:Depends} to dependencies + + -- Stéphane Graber Wed, 07 Sep 2011 20:18:53 -0400 + friendly-recovery (0.2.12) oneiric; urgency=low * usr/share/recovery-mode/options/apt-snapshots: === modified file 'debian/control' --- debian/control 2008-07-04 17:15:00 +0000 +++ debian/control 2011-09-15 20:30:19 +0000 @@ -3,12 +3,13 @@ Priority: optional Maintainer: Michael Vogt Build-Depends: debhelper (>= 5.0.38), cdbs -Standards-Version: 3.7.2 +Standards-Version: 3.9.2 Vcs-Bzr: http://bazaar.launchpad.net/~ubuntu-core-dev/friendly-recovery/ubuntu Package: friendly-recovery Architecture: all -Depends: upstart, bash, whiptail +Depends: ${misc:Depends}, upstart, whiptail +Breaks: upstart (<< 1.3-0ubuntu9), grub2 (<< 1.99-12ubuntu4), initramfs-tools (<< 0.99ubuntu4) Recommends: gettext-base, update-manager-core (>= 0.90.0) Description: Make recovery more user-friendly Make the recovery mode more user-friendly by providing a menu === added file 'debian/friendly-recovery.postinst' --- debian/friendly-recovery.postinst 1970-01-01 00:00:00 +0000 +++ debian/friendly-recovery.postinst 2011-09-15 20:21:13 +0000 @@ -0,0 +1,27 @@ +#!/bin/sh +set -e + +case "$1" in + configure) + if [ -d /usr/share/recovery-mode ] && + [ ! -L /usr/share/recovery-mode ]; then + # Move any existing recovery script + mv -n /usr/share/recovery-mode/options/* /lib/recovery-mode/options/ 2> /dev/null || true + + # Remove what's left + rm -Rf /usr/share/recovery-mode + fi + + # And finally replace it by a symlink + ln -sf /lib/recovery-mode /usr/share/recovery-mode + + # Update grub + if [ -x "$(which update-grub)" ]; then + update-grub + fi + ;; +esac + +#DEBHELPER# + +exit 0 === added file 'debian/friendly-recovery.postrm' --- debian/friendly-recovery.postrm 1970-01-01 00:00:00 +0000 +++ debian/friendly-recovery.postrm 2011-09-15 20:21:29 +0000 @@ -0,0 +1,15 @@ +#!/bin/sh +set -e + +case "$1" in + remove) + # Update grub + if [ -x "$(which update-grub)" ]; then + update-grub + fi + ;; +esac + +#DEBHELPER# + +exit 0 === added file 'debian/friendly-recovery.symlinks' --- debian/friendly-recovery.symlinks 1970-01-01 00:00:00 +0000 +++ debian/friendly-recovery.symlinks 2011-09-14 19:32:12 +0000 @@ -0,0 +1,1 @@ +/usr/share/recovery-mode /lib/recovery-mode === renamed file 'etc/event.d/rcS-sulogin' => 'debian/friendly-recovery.upstart' --- etc/event.d/rcS-sulogin 2007-07-17 16:07:25 +0000 +++ debian/friendly-recovery.upstart 2011-09-15 20:18:07 +0000 @@ -1,29 +1,20 @@ -# rcS-sulogin - "single-user" runlevel compatibility -# -# This task runs the sulogin binary during "single-user" mode. - -start on runlevel S - -stop on runlevel +# Init script for friendly recovery + +start on recovery console owner +task script - runlevel --set S >/dev/null || true - - if [ -x /usr/share/recovery-mode/recovery-menu ]; then - /usr/share/recovery-mode/recovery-menu - else - /sbin/sulogin - fi - - if [ -r /etc/inittab ]; then - RL="$(sed -n -e "/^id:[0-9]*:initdefault:/{s/^id://;s/:.*//;p}" /etc/inittab || true)" - if [ -n "$RL" ]; then - telinit $RL - else - telinit 2 - fi - else - telinit 2 - fi + # Only start friendly-recovery when booting in recovery mode + if ! grep -q "recovery" /proc/cmdline; then + exit 0 + fi + + if [ -x /lib/recovery-mode/recovery-menu ]; then + exec /lib/recovery-mode/recovery-menu + else + exec /sbin/sulogin + fi end script + +post-stop exec initctl emit startup === modified file 'debian/rules' --- debian/rules 2008-04-24 14:39:40 +0000 +++ debian/rules 2011-09-08 20:35:57 +0000 @@ -3,17 +3,16 @@ PKG=friendly-recovery DEBVER=$(shell dpkg-parsechangelog |sed -n -e '/^Version:/s/^Version: //p') DEB_BUILD_PROG:=debuild --preserve-envvar PATH --preserve-envvar CCACHE_DIR -us -uc $(DEB_BUILD_PROG_OPTS) +DEB_DH_INSTALLINIT_ARGS := --no-start include /usr/share/cdbs/1/rules/debhelper.mk -include /usr/share/cdbs/1/rules/simple-patchsys.mk # FIXME: move this into its own makefile install/friendly-recovery:: (cd po; make) mkdir -p debian/friendly-recovery - #cp -ar etc/ debian/friendly-recovery - cp -ar usr/ debian/friendly-recovery + cp -ar lib/ debian/friendly-recovery arch-build: rm -rf debian/arch-build === removed directory 'etc' === removed directory 'etc/event.d' === renamed directory 'usr' => 'lib' === renamed directory 'usr/share/recovery-mode' => 'lib/recovery-mode' === modified file 'lib/recovery-mode/options/apt-snapshots' --- usr/share/recovery-mode/options/apt-snapshots 2011-07-19 10:58:17 +0000 +++ lib/recovery-mode/options/apt-snapshots 2011-09-07 21:21:15 +0000 @@ -2,7 +2,11 @@ set -e -. /usr/share/recovery-mode/l10n.sh +. /lib/recovery-mode/l10n.sh + +if [ "$READONLY" = "true" ]; then + exit 1 +fi # check if its there if [ ! -x /usr/bin/apt-btrfs-snapshot ]; then === modified file 'lib/recovery-mode/options/clean' --- usr/share/recovery-mode/options/clean 2008-07-30 13:52:43 +0000 +++ lib/recovery-mode/options/clean 2011-09-08 00:08:57 +0000 @@ -1,6 +1,10 @@ #!/bin/sh -. /usr/share/recovery-mode/l10n.sh +. /lib/recovery-mode/l10n.sh + +if [ "$READONLY" = "true" ]; then + exit 1 +fi if [ "$1" = "test" ]; then echo $(eval_gettext "Try to make free space") @@ -9,4 +13,8 @@ apt-get clean +echo "" +echo $(eval_gettext "Finished, please press ENTER") +read TMP + exit 0 === modified file 'lib/recovery-mode/options/dpkg' --- usr/share/recovery-mode/options/dpkg 2008-06-02 14:02:59 +0000 +++ lib/recovery-mode/options/dpkg 2011-09-07 21:21:34 +0000 @@ -1,6 +1,10 @@ #!/bin/sh -. /usr/share/recovery-mode/l10n.sh +. /lib/recovery-mode/l10n.sh + +if [ "$READONLY" = "true" ]; then + exit 1 +fi if [ "$1" = "test" ]; then echo $(eval_gettext "Repair broken packages") === modified file 'lib/recovery-mode/options/failsafeX' --- usr/share/recovery-mode/options/failsafeX 2010-01-11 14:18:49 +0000 +++ lib/recovery-mode/options/failsafeX 2011-09-07 21:21:56 +0000 @@ -1,6 +1,10 @@ #!/bin/sh -. /usr/share/recovery-mode/l10n.sh +. /lib/recovery-mode/l10n.sh + +if [ "$READONLY" = "true" ]; then + exit 1 +fi # no failsafe X session if [ ! -e /etc/gdm/failsafeXServer ]; then === modified file 'lib/recovery-mode/options/fsck' --- usr/share/recovery-mode/options/fsck 2011-04-19 15:36:29 +0000 +++ lib/recovery-mode/options/fsck 2011-09-08 00:05:53 +0000 @@ -1,16 +1,14 @@ #!/bin/sh -. /usr/share/recovery-mode/l10n.sh +. /lib/recovery-mode/l10n.sh -set -e +if [ "$READONLY" = "false" ]; then + exit 1 +fi if [ "$1" = "test" ]; then - echo $(eval_gettext "Reboot into file system check") + echo $(eval_gettext "Check all file systems (will exit read-only mode)") exit 0 fi -# forcefsck will trigger a fsck by mountall on the next -# reboot -touch /forcefsck -reboot - +FSCHECK="true" /lib/recovery-mode/options/remount === modified file 'lib/recovery-mode/options/grub' --- usr/share/recovery-mode/options/grub 2008-11-26 16:27:13 +0000 +++ lib/recovery-mode/options/grub 2011-09-08 00:09:34 +0000 @@ -1,6 +1,10 @@ #!/bin/sh -. /usr/share/recovery-mode/l10n.sh +. /lib/recovery-mode/l10n.sh + +if [ "$READONLY" = "true" ]; then + exit 1 +fi if [ "$1" = "test" ]; then echo $(eval_gettext "Update grub bootloader") @@ -12,4 +16,8 @@ #grub-install update-grub +echo "" +echo $(eval_gettext "Finished, please press ENTER") +read TMP + exit 0 === modified file 'lib/recovery-mode/options/netroot' --- usr/share/recovery-mode/options/netroot 2010-04-06 12:35:00 +0000 +++ lib/recovery-mode/options/netroot 2011-09-07 21:28:30 +0000 @@ -1,6 +1,10 @@ #!/bin/sh -. /usr/share/recovery-mode/l10n.sh +. /lib/recovery-mode/l10n.sh + +if [ "$READONLY" = "true" ]; then + exit 1 +fi if [ "$1" = "test" ]; then echo $(eval_gettext "Drop to root shell prompt with networking") === added file 'lib/recovery-mode/options/remount' --- lib/recovery-mode/options/remount 1970-01-01 00:00:00 +0000 +++ lib/recovery-mode/options/remount 2011-09-15 20:22:33 +0000 @@ -0,0 +1,32 @@ +#!/bin/sh + +. /lib/recovery-mode/l10n.sh + +if [ "$READONLY" = "false" ]; then + exit 1 +fi + +if [ "$1" = "test" ]; then + echo $(eval_gettext "Remount / read/write and mount all other file systems") + exit 0 +fi + +. /etc/default/rcS +[ "$FSCHECK" = "true" ] || [ -f /forcefsck ] && force_fsck="--force-fsck" +[ "$FSCKFIX" = "yes" ] && fsck_fix="--fsck-fix" + +# set $LANG so that messages appearing in plymouth are translated +if [ -r /etc/default/locale ]; then + . /etc/default/locale + export LANG LANGUAGE LC_MESSAGES LC_ALL +fi + +mountall $force_fsck $fsck_fix --no-events + +rm -f /forcefsck 2>dev/null || true + +echo "" +echo $(eval_gettext "Finished, please press ENTER") +read TMP + +exit 0 === modified file 'lib/recovery-mode/options/root' --- usr/share/recovery-mode/options/root 2008-05-08 09:37:14 +0000 +++ lib/recovery-mode/options/root 2011-08-30 21:12:30 +0000 @@ -1,6 +1,6 @@ #!/bin/sh -. /usr/share/recovery-mode/l10n.sh +. /lib/recovery-mode/l10n.sh if [ "$1" = "test" ]; then echo $(eval_gettext "Drop to root shell prompt") === modified file 'lib/recovery-mode/recovery-menu' --- usr/share/recovery-mode/recovery-menu 2008-04-24 14:39:40 +0000 +++ lib/recovery-mode/recovery-menu 2011-09-13 20:48:06 +0000 @@ -1,10 +1,12 @@ #!/bin/bash # include gettext stuff -. /usr/share/recovery-mode/l10n.sh +. /lib/recovery-mode/l10n.sh # main -menu_text=$(eval_gettext "Recovery Menu") +menu_text=$(eval_gettext "Recovery Menu (limited read-only menu)") +READONLY=true +export READONLY while true; do unset items @@ -12,7 +14,7 @@ items[c++]="resume" items[c++]=$(eval_gettext " Resume normal boot") - for i in /usr/share/recovery-mode/options/*; do + for i in /lib/recovery-mode/options/*; do if [ -x "$i" ]; then name="`"$i" test`" if [ $? -eq 0 ]; then @@ -22,21 +24,35 @@ fi done - choice="$(/usr/bin/whiptail --menu "$menu_text" 15 70 6 \ + if [ ! -x "$(which whiptail)" ]; then + echo $(eval_gettext "Couldn't find whiptail, starting root shell instead of recovery menu.") + sulogin + clear + exit 0 + fi + choice="$(whiptail --menu "$menu_text" 15 70 6 \ "${items[@]}" \ 3>&1 1>&2 2>&3 3>&-)" if [ $? -ne 0 ]; then - exit + choice="resume" fi if [ "$choice" = "resume" ]; then + clear exit fi - "/usr/share/recovery-mode/options/$choice" - - if [ "$?" -eq 42 ]; then + "/lib/recovery-mode/options/$choice" + retval=$? + + if [ "$choice" = "remount" ] || [ "$choice" = "fsck" ]; then + menu_text=$(eval_gettext "Recovery Menu") + READONLY=false + fi + + if [ "$retval" -eq 42 ]; then + clear exit 0 fi done === modified file 'po/POTFILES.in' --- po/POTFILES.in 2010-04-06 12:35:00 +0000 +++ po/POTFILES.in 2011-08-30 20:59:23 +0000 @@ -1,8 +1,8 @@ -../usr/share/recovery-mode/recovery-menu -../usr/share/recovery-mode/options/dpkg -../usr/share/recovery-mode/options/fsck -../usr/share/recovery-mode/options/root -../usr/share/recovery-mode/options/failsafeX -../usr/share/recovery-mode/options/netroot -../usr/share/recovery-mode/options/grub -../usr/share/recovery-mode/options/clean +../lib/recovery-mode/recovery-menu +../lib/recovery-mode/options/dpkg +../lib/recovery-mode/options/fsck +../lib/recovery-mode/options/root +../lib/recovery-mode/options/failsafeX +../lib/recovery-mode/options/netroot +../lib/recovery-mode/options/grub +../lib/recovery-mode/options/clean === modified file 'po/de.po' --- po/de.po 2011-04-19 15:46:23 +0000 +++ po/de.po 2011-09-07 21:09:24 +0000 @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-04-19 17:40+0200\n" +"POT-Creation-Date: 2011-09-07 17:09-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -17,52 +17,57 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../usr/share/recovery-mode/recovery-menu:7 +#: ../lib/recovery-mode/recovery-menu:7 #, sh-format msgid "Recovery Menu" msgstr "Wiederhestellungs Menü" -#: ../usr/share/recovery-mode/recovery-menu:13 +#: ../lib/recovery-mode/recovery-menu:13 #, sh-format msgid " Resume normal boot" msgstr "" -#: ../usr/share/recovery-mode/options/dpkg:6 +#: ../lib/recovery-mode/recovery-menu:26 +#, sh-format +msgid "Couldn't find whiptail, starting root shell instead of recovery menu." +msgstr "" + +#: ../lib/recovery-mode/options/dpkg:6 #, sh-format msgid "Repair broken packages" msgstr "" -#: ../usr/share/recovery-mode/options/dpkg:33 +#: ../lib/recovery-mode/options/dpkg:33 #, sh-format msgid "Finished, please press ENTER" msgstr "" -#: ../usr/share/recovery-mode/options/fsck:8 +#: ../lib/recovery-mode/options/fsck:8 #, sh-format msgid "Reboot into file system check" msgstr "" -#: ../usr/share/recovery-mode/options/root:6 +#: ../lib/recovery-mode/options/root:6 #, sh-format msgid "Drop to root shell prompt" msgstr "" -#: ../usr/share/recovery-mode/options/failsafeX:11 +#: ../lib/recovery-mode/options/failsafeX:11 #, sh-format msgid "Run in failsafe graphic mode" msgstr "" -#: ../usr/share/recovery-mode/options/netroot:6 +#: ../lib/recovery-mode/options/netroot:6 #, sh-format msgid "Drop to root shell prompt with networking" msgstr "" -#: ../usr/share/recovery-mode/options/grub:6 +#: ../lib/recovery-mode/options/grub:6 #, sh-format msgid "Update grub bootloader" msgstr "" -#: ../usr/share/recovery-mode/options/clean:6 +#: ../lib/recovery-mode/options/clean:6 #, sh-format msgid "Try to make free space" msgstr "" === added file 'po/friendly-recovery.pot' --- po/friendly-recovery.pot 1970-01-01 00:00:00 +0000 +++ po/friendly-recovery.pot 2011-09-07 21:09:19 +0000 @@ -0,0 +1,73 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2011-09-07 17:09-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ../lib/recovery-mode/recovery-menu:7 +#, sh-format +msgid "Recovery Menu" +msgstr "" + +#: ../lib/recovery-mode/recovery-menu:13 +#, sh-format +msgid " Resume normal boot" +msgstr "" + +#: ../lib/recovery-mode/recovery-menu:26 +#, sh-format +msgid "Couldn't find whiptail, starting root shell instead of recovery menu." +msgstr "" + +#: ../lib/recovery-mode/options/dpkg:6 +#, sh-format +msgid "Repair broken packages" +msgstr "" + +#: ../lib/recovery-mode/options/dpkg:33 +#, sh-format +msgid "Finished, please press ENTER" +msgstr "" + +#: ../lib/recovery-mode/options/fsck:8 +#, sh-format +msgid "Reboot into file system check" +msgstr "" + +#: ../lib/recovery-mode/options/root:6 +#, sh-format +msgid "Drop to root shell prompt" +msgstr "" + +#: ../lib/recovery-mode/options/failsafeX:11 +#, sh-format +msgid "Run in failsafe graphic mode" +msgstr "" + +#: ../lib/recovery-mode/options/netroot:6 +#, sh-format +msgid "Drop to root shell prompt with networking" +msgstr "" + +#: ../lib/recovery-mode/options/grub:6 +#, sh-format +msgid "Update grub bootloader" +msgstr "" + +#: ../lib/recovery-mode/options/clean:6 +#, sh-format +msgid "Try to make free space" +msgstr "" === removed directory 'usr/share'