aboutsummaryrefslogtreecommitdiff
path: root/init.d/bootmisc
diff options
context:
space:
mode:
Diffstat (limited to 'init.d/bootmisc')
-rwxr-xr-xinit.d/bootmisc138
1 files changed, 138 insertions, 0 deletions
diff --git a/init.d/bootmisc b/init.d/bootmisc
new file mode 100755
index 00000000..1428e874
--- /dev/null
+++ b/init.d/bootmisc
@@ -0,0 +1,138 @@
+#!/sbin/runscript
+# Copyright 1999-2007 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+depend() {
+ use hostname
+ need localmount
+ before logger
+ after clock sysctl
+}
+
+start() {
+ # Put a nologin file in /etc to prevent people from logging
+ # in before system startup is complete.
+ if [ "${DELAYLOGIN}" = "yes" ] ; then
+ echo "System bootup in progress - please wait" \
+ > /etc/nologin
+ cp /etc/nologin /etc/nologin.boot
+ fi
+
+ if ! touch -c /var/run 2> /dev/null ; then
+ ewarn "Skipping /var and /tmp initialization (ro root?)"
+ return 0
+ fi
+
+ if [ "${RC_UNAME}" = "Linux" ] ; then
+ # Setup login records
+ > /var/run/utmp
+ touch /var/log/wtmp
+ chgrp utmp /var/run/utmp /var/log/wtmp
+ chmod 0664 /var/run/utmp /var/log/wtmp
+ fi
+
+ ebegin "Updating environment"
+ /sbin/env-update
+ eend $?
+
+ # Take care of random stuff [ /var/lock | /var/run | pam ]
+ ebegin "Cleaning" /var/lock, /var/run
+ rm -rf /var/run/console.lock /var/run/console/*
+
+ # Clean up any stale locks.
+ find /var/lock -type f -print0 | xargs -0 rm -f --
+
+ # Clean up /var/run and create /var/run/utmp so we can login.
+ for x in $(find /var/run ! -type d ! -name utmp ! -name innd.pid ! -name random-seed ! -name ld-elf.so.hints); do
+ [ ! -f "${x}" ] && continue
+ # Do not remove pidfiles of already running daemons
+ case "${x}" in
+ *.pid)
+ start-stop-daemon --test --quiet --stop --pidfile "${x}"
+ [ $? -eq 0 ] && continue
+ ;;
+ esac
+ rm -f "${x}"
+ done
+
+ # Reset pam_console permissions if we are actually using it
+ if [ -x /sbin/pam_console_apply -a ! -c /dev/.devfsd ] ; then
+ if [ -n $(grep -v -e '^[[:space:]]*#' /etc/pam.d/* | grep 'pam_console') ] ; then
+ /sbin/pam_console_apply -r
+ fi
+ fi
+
+ # Create the .keep to stop portage from removing /var/lock
+ > /var/lock/.keep
+ eend 0
+
+ # Clean up /tmp directory
+ if [ -d /tmp ] ; then
+ cd /tmp
+ if [ "${WIPE_TMP}" = "yes" ] ; then
+ ebegin "Wiping /tmp directory"
+ local startopts="-x . -depth"
+ [ "${RC_UNAME}" = "Linux" ] && startopts=". -xdev -depth"
+
+ # Faster than find
+ rm -rf [b-ikm-pr-zA-Z]*
+
+ find ${startopts} ! -name . \
+ ! -path ./lost+found \
+ ! -path "./lost+found/*" \
+ ! -path ./quota.user \
+ ! -path "./quota.user/*" \
+ ! -path ./aquota.user \
+ ! -path "./aquota.user/*" \
+ ! -path ./quota.group \
+ ! -path "./quota.group/*" \
+ ! -path ./aquota.group \
+ ! -path "./aquota.group/*" \
+ ! -path ./journal \
+ ! -path "./journal/*" \
+ -delete
+ eend 0
+ else
+ ebegin "Cleaning /tmp directory"
+ rm -rf /tmp/.X*-lock /tmp/esrv* /tmp/kio* /tmp/jpsock.* \
+ /tmp/.fam* /tmp/.esd* /tmp/orbit-* /tmp/ssh-* \
+ /tmp/ksocket-* /tmp/.*-unix
+ eend 0
+ fi
+
+ # Make sure our X11 stuff have the correct permissions
+ # Omit the chown as bootmisc is run before network is up
+ # and users may be using lame LDAP auth #139411
+ rm -rf /tmp/.ICE-unix /tmp/.X11-unix
+ mkdir -p /tmp/.ICE-unix /tmp/.X11-unix
+ chmod 1777 /tmp/.ICE-unix /tmp/.X11-unix
+ [ -x /sbin/restorecon ] && restorecon /tmp/.ICE-unix /tmp/.X11-unix
+ fi
+
+ # Create an 'after-boot' dmesg log
+ touch /var/log/dmesg
+ chmod 640 /var/log/dmesg
+ dmesg > /var/log/dmesg
+
+ # Check for /etc/resolv.conf, and create if missing
+ [ -f /etc/resolv.conf ] || touch /etc/resolv.conf 2>/dev/null
+}
+
+stop() {
+ # Reset pam_console permissions if we are actually using it
+ if [ -x /sbin/pam_console_apply -a ! -c /dev/.devfsd ] && \
+ [ -n $(grep -v -e '^[[:space:]]*#' /etc/pam.d/* | grep 'pam_console') ] ; then
+ /sbin/pam_console_apply -r
+ fi
+
+ # Write a halt record if we're shutting down
+ case "${SOFTLEVEL}" in
+ reboot|shutdown)
+ [ "${RC_UNAME}" = "Linux" ] && halt -w
+ ;;
+ esac
+
+ return 0
+}
+
+# vim: set ts=4 :