From 0af7d5bc204cd6b7d03f22aacf4072c5f526c0ee Mon Sep 17 00:00:00 2001 From: Roy Marples Date: Mon, 3 Nov 2008 15:31:01 +0000 Subject: Add a new shutdown runlevel, Gentoo #224537. Split halt.sh into halt, killprocs, romount and savecache services. The reboot runlevel is removed but mapped to shutdown. The halt script should be moved to the sysvinit package. --- sh/init-common-post.sh.in | 12 +++++------- sh/init.sh.BSD.in | 21 --------------------- sh/init.sh.Linux.in | 30 ++++++------------------------ 3 files changed, 11 insertions(+), 52 deletions(-) (limited to 'sh') diff --git a/sh/init-common-post.sh.in b/sh/init-common-post.sh.in index 2b1641df..aa264aa3 100644 --- a/sh/init-common-post.sh.in +++ b/sh/init-common-post.sh.in @@ -9,17 +9,15 @@ retval=0 RC_SVCDIR=${RC_SVCDIR:-/@LIB@/rc/init.d} if [ "${RC_SVCDIR}" != "/" ] && mkdir "${RC_SVCDIR}/.test.$$" 2>/dev/null; then rmdir "${RC_SVCDIR}/.test.$$" - for x in ${RC_SVCDIR}/*; do - [ -e "${x}" ] || continue - case ${x##*/} in - depconfig|deptree|ksoftlevel|rc.log);; - *) rm -rf "${x}";; - esac - done + rm -rf "${RC_SVCDIR}"/* else mount_svcdir retval=$? fi +if [ -e "${RC_LIBDIR}"/cache/deptree ]; then + cp -p "${RC_LIBDIR}"/cache/* "${RC_SVCDIR}" 2>/dev/null +fi + echo "sysinit" > "${RC_SVCDIR}/softlevel" exit ${retval} diff --git a/sh/init.sh.BSD.in b/sh/init.sh.BSD.in index dbff7368..652a3de2 100644 --- a/sh/init.sh.BSD.in +++ b/sh/init.sh.BSD.in @@ -10,18 +10,6 @@ # FreeBSD-7 supports tmpfs now :) mount_svcdir() { - local dotmp=false release=false retval=0 - if [ -e "${RC_SVCDIR}"/deptree ]; then - dotmp=true - if ! mount -t tmpfs none "${RC_LIBDIR}"/tmp 2>/dev/null; then - mdconfig -a -t malloc -s 1m -u 1 - newfs /dev/md1 - mount /dev/md1 "${RC_LIBDIR}"/tmp - release=true - fi - cp -p "${RC_SVCDIR}"/deptree "${RC_SVCDIR}"/depconfig \ - "${RC_SVCDIR}"/nettree "${RC_LIBDIR}"/tmp 2>/dev/null - fi if ! fstabinfo --mount "${RC_SVCDIR}"; then if ! mount -t tmpfs -o rw,noexec,nosuid none "${RC_SVCDIR}" 2>/dev/null; then mdconfig -a -t malloc -s "${rc_svcsize:-1024}"k -u 0 @@ -29,15 +17,6 @@ mount_svcdir() mount -o rw,noexec,nosuid /dev/md0 "${RC_SVCDIR}" fi fi - retval=$? - if ${dotmp}; then - cp -p "${RC_LIBDIR}"/tmp/deptree "${RC_LIBDIR}"/tmp/depconfig \ - "${RC_LIBDIR}"/tmp/nettree "${RC_SVCDIR}" 2>/dev/null - umount "${RC_LIBDIR}"/tmp - ${release} && mdconfig -d -u 1 - fi - - return ${retval} } . "${RC_LIBDIR}"/sh/functions.sh diff --git a/sh/init.sh.Linux.in b/sh/init.sh.Linux.in index 6d99d49e..f38fe4e0 100644 --- a/sh/init.sh.Linux.in +++ b/sh/init.sh.Linux.in @@ -3,14 +3,13 @@ # Copyright 2007-2008 Roy Marples # All rights reserved. Released under the 2-clause BSD license. -# This basically mounts $RC_SVCDIR as a ramdisk, but preserving its content -# which allows us to store service state and generate dependencies if needed. +# This basically mounts $RC_SVCDIR as a ramdisk. # The tricky part is finding something our kernel supports # tmpfs and ramfs are easy, so force one or the other. mount_svcdir() { local fs= fsopts="-o rw,noexec,nodev,nosuid" - local devdir="rc-svcdir" devtmp="none" x= + local devdir="rc-svcdir" x= local svcsize=${rc_svcsize:-1024} if grep -Eq "[[:space:]]+tmpfs$" /proc/filesystems; then @@ -19,41 +18,24 @@ mount_svcdir() elif grep -Eq "[[:space:]]+ramfs$" /proc/filesystems; then fs="ramfs" # ramfs has no special options - elif [ -e /dev/ram0 -a -e /dev/ram1 ] \ + elif [ -e /dev/ram0 ] \ && grep -Eq "[[:space:]]+ext2$" /proc/filesystems; then devdir="/dev/ram0" - devtmp="/dev/ram1" fs="ext2" - for x in ${devdir} ${devtmp}; do - dd if=/dev/zero of="${x}" bs=1k count="${svcsize}" - mkfs -t "${fs}" -i 1024 -vm0 "${x}" "${svcsize}" - done + dd if=/dev/zero of="${devdir}" bs=1k count="${svcsize}" + mkfs -t "${fs}" -i 1024 -vm0 "${devdir}" "${svcsize}" else echo - eerror "OpenRC requires tmpfs, ramfs or 2 ramdisks + ext2" + eerror "OpenRC requires tmpfs, ramfs or a ramdisk + ext2" eerror "compiled into the kernel" echo return 1 fi - local dotmp=false - if [ -e "${RC_SVCDIR}"/deptree ]; then - dotmp=true - mount -n -t "${fs}" -o rw "${devtmp}" "${RC_LIBDIR}"/tmp - cp -p "${RC_SVCDIR}"/deptree "${RC_SVCDIR}"/depconfig \ - "${RC_SVCDIR}"/nettree "${RC_LIBDIR}"/tmp 2>/dev/null - fi - # If we have no entry in fstab for $RC_SVCDIR, provide our own if ! fstabinfo --mount "${RC_SVCDIR}"; then mount -n -t "${fs}" ${fsopts} "${devdir}" "${RC_SVCDIR}" fi - - if ${dotmp}; then - cp -p "${RC_LIBDIR}"/tmp/deptree "${RC_LIBDIR}"/tmp/depconfig \ - "${RC_LIBDIR}"/tmp/nettree "${RC_SVCDIR}" 2>/dev/null - umount -n "${RC_LIBDIR}"/tmp - fi } . /etc/init.d/functions.sh -- cgit v1.2.3