From a5b35e1b4467d48d74f10c563fd24b115c2d2d50 Mon Sep 17 00:00:00 2001 From: Stefan Saraev Date: Mon, 19 Jan 2015 11:50:35 +0200 Subject: [PATCH] factory-reset: move as systemd target --- .../OpenELEC-settings/scripts/factory-reset | 17 +++++++++++------ .../system.d/factory-reset.service | 17 +++++------------ .../system.d/factory-reset.target | 5 +++++ packages/sysutils/busybox/scripts/init | 4 ++++ 4 files changed, 25 insertions(+), 18 deletions(-) create mode 100644 packages/mediacenter/OpenELEC-settings/system.d/factory-reset.target diff --git a/packages/mediacenter/OpenELEC-settings/scripts/factory-reset b/packages/mediacenter/OpenELEC-settings/scripts/factory-reset index 2e873024e3..964a022eb9 100755 --- a/packages/mediacenter/OpenELEC-settings/scripts/factory-reset +++ b/packages/mediacenter/OpenELEC-settings/scripts/factory-reset @@ -40,8 +40,9 @@ get_target() { done } -# hard reset if [ -f /storage/.cache/reset_oe ] ; then + # hard reset + rm -f /storage/.cache/reset_oe get_target if [ ! -z $target ] ; then echo "hard resetting..." @@ -53,15 +54,19 @@ if [ -f /storage/.cache/reset_oe ] ; then if [ ! -z $uuid ] ; then tune2fs -U $uuid $target fi - reboot + echo "done" + sleep 5 fi -fi - -# soft reset -if [ -f /storage/.cache/reset_xbmc ] ; then +elif [ -f /storage/.cache/reset_xbmc ] ; then + # soft reset + rm -f /storage/.cache/reset_xbmc get_target if [ ! -z $target ] ; then echo "soft resetting..." rm -rf /storage/.??* 2>&1 >/dev/null + echo "done" + sleep 5 fi fi +sync +reboot diff --git a/packages/mediacenter/OpenELEC-settings/system.d/factory-reset.service b/packages/mediacenter/OpenELEC-settings/system.d/factory-reset.service index 2394ede5f8..70aa5e2bd8 100644 --- a/packages/mediacenter/OpenELEC-settings/system.d/factory-reset.service +++ b/packages/mediacenter/OpenELEC-settings/system.d/factory-reset.service @@ -1,17 +1,10 @@ [Unit] Description=Factory reset -DefaultDependencies=false -After=show-version.service -Before=local-fs-pre.target shutdown.target -Conflicts=shutdown.target - -ConditionPathExists=|/storage/.cache/reset_oe -ConditionPathExists=|/storage/.cache/reset_xbmc +DefaultDependencies=no [Service] -Type=oneshot +Type=idle ExecStart=/usr/lib/openelec/factory-reset -StandardOutput=tty - -[Install] -WantedBy=local-fs-pre.target +StandardInput=tty-force +StandardOutput=inherit +StandardError=inherit diff --git a/packages/mediacenter/OpenELEC-settings/system.d/factory-reset.target b/packages/mediacenter/OpenELEC-settings/system.d/factory-reset.target new file mode 100644 index 0000000000..28c5aa4f20 --- /dev/null +++ b/packages/mediacenter/OpenELEC-settings/system.d/factory-reset.target @@ -0,0 +1,5 @@ +[Unit] +Description=Factory reset target +Requires=factory-reset.service +After=factory-reset.service +AllowIsolate=yes diff --git a/packages/sysutils/busybox/scripts/init b/packages/sysutils/busybox/scripts/init index 33e7e5a6b5..1fcd13c22e 100755 --- a/packages/sysutils/busybox/scripts/init +++ b/packages/sysutils/busybox/scripts/init @@ -670,6 +670,10 @@ if [ -f /sysroot/storage/.please_resize_me ] ; then INIT_ARGS="--unit=fs-resize.target" fi + + if [ -f /sysroot/storage/.cache/reset_oe -o -f /sysroot/storage/.cache/reset_xbmc ] ; then + INIT_ARGS="--unit=factory-reset.target" + fi # switch to new sysroot and start real init exec /bin/busybox switch_root /sysroot /usr/lib/systemd/systemd $INIT_ARGS