aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWilliam Hubbs <w.d.hubbs@gmail.com>2012-12-06 16:43:24 -0600
committerWilliam Hubbs <w.d.hubbs@gmail.com>2012-12-06 16:43:24 -0600
commite5173b9127a42b7c6a209c278fbbcbcd29dcdccc (patch)
treebaae69c041726d0f61c6f0d88d65db6aea55c354
parenta9272f50f75849f5d7a787cab4c54f5a2d158f58 (diff)
migrate-to-run: do not require a reboot
The script that migrates the @libexecdir@/rc/init.d directory to /run/openrc should not require a reboot. Reported-by: chainsaw@gentoo.org
-rw-r--r--sh/init.sh.Linux.in8
-rw-r--r--sh/migrate-to-run.sh.in37
2 files changed, 17 insertions, 28 deletions
diff --git a/sh/init.sh.Linux.in b/sh/init.sh.Linux.in
index 0eca7361..f45eae1f 100644
--- a/sh/init.sh.Linux.in
+++ b/sh/init.sh.Linux.in
@@ -51,6 +51,10 @@ if [ ! -d /run ]; then
fi
fi
+if [ -L /run/openrc ]; then
+ rm /run/openrc
+fi
+
if [ "$sys" = VSERVER ]; then
rm -rf /run/*
elif ! mountinfo -q /run; then
@@ -84,5 +88,9 @@ if [ -e "$RC_LIBEXECDIR"/cache/deptree ]; then
cp -p "$RC_LIBEXECDIR"/cache/* "$RC_SVCDIR" 2>/dev/null
fi
+if [ -e "$RC_LIBEXECDIR"/init.d ]; then
+ rm -rf "$RC_LIBEXECDIR"/init.d
+fi
+
echo sysinit >"$RC_SVCDIR"/softlevel
exit 0
diff --git a/sh/migrate-to-run.sh.in b/sh/migrate-to-run.sh.in
index 73978e7c..b18c5418 100644
--- a/sh/migrate-to-run.sh.in
+++ b/sh/migrate-to-run.sh.in
@@ -11,38 +11,19 @@ fi
if [ ! -d /run ]; then
eerror "/run is not a directory."
- eerror "This means the OpenRC dependency data cannot be migrated."
- eerror "Please create the /run directory and reboot the system."
- exit 1
+ eerror "moving /run to /run.pre-openrc"
+ mv /run /run.pre-openrc
+ mkdir /run
fi
-if ! mountinfo -q -f tmpfs /run; then
- for x in /run/.* /run/*; do
- case "$x" in
- /run/.|/run/..)
- continue
- ;;
- esac
- if [ -e "$x" ]; then
- eerror "Your /run directory contains files."
- eerror "Please reboot the system."
- exit 1
- fi
- done
+rm -rf /run/openrc
- mount -t tmpfs -o mode=0755,nosuid,nodev tmpfs /run 2> /dev/null
- if [ $? != 0 ]; then
- eerror "Unable to mount a tmpfs on /run."
- eerror "This means the OpenRC dependency data cannot be migrated."
- eerror "Please create the /run directory and reboot the system."
- exit 1
- fi
+if ! mountinfo -q -f tmpfs /run; then
+ ln -s "@LIBEXECDIR@"/init.d /run/openrc
+else
+ cp -a "@LIBEXECDIR@/init.d" /run/openrc
+ rc-update -u
fi
-rm -rf /run/openrc
-cp -a "@LIBEXECDIR@/init.d" /run/openrc
-rc-update -u
-umount "@LIBEXECDIR@/init.d"
-rm -rf "@LIBEXECDIR@/init.d"
einfo "The OpenRC dependency data was migrated successfully."
exit 0