#!/sbin/runscript # Copyright 1999-2007 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 depend() { use clock hostname need localmount before logger } start() { [[ ${BOOT} != "yes" ]] && return 0 # # 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 &> /dev/null fi if [[ -e /etc/sysctl.conf ]] ; then ebegin "Configuring kernel parameters" /sbin/sysctl -q -p /etc/sysctl.conf eend 0 fi if [[ -z ${CDBOOT} ]] && ! touch /var/run/.keep 2> /dev/null ; then ewarn "Skipping /var and /tmp initialization (ro root?)" return 0 fi if [[ -x /sbin/env-update.sh ]] ; then ebegin "Updating environment" /sbin/env-update.sh -u > /dev/null eend 0 fi # # 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/* if [[ -z ${CDBOOT} ]] ; then # # 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 that we can login. # for x in $(find /var/run/ ! -type d ! -name utmp ! -name innd.pid ! -name random-seed) ; do local daemon=${x##*/} daemon=${daemon%*.pid} # Do not remove pidfiles of already running daemons if [[ -z $(ps --no-heading -C "${daemon}") ]] ; then if [[ -f ${x} || -L ${x} ]] ; then rm -f "${x}" fi fi done fi # Reset pam_console permissions if we are actually using it if [[ -x /sbin/pam_console_apply && ! -c /dev/.devfsd && \ -n $(grep -v -e '^[[:space:]]*#' /etc/pam.d/* | grep 'pam_console') ]] ; then /sbin/pam_console_apply -r fi # Create the .keep to stop portage from removing /var/lock > /var/lock/.keep eend 0 # # Clean up /tmp directory # if [[ -z ${CDBOOT} ]] && [[ -d /tmp ]] ; then cd /tmp if [[ ${WIPE_TMP} == "yes" ]] ; then ebegin "Wiping /tmp directory" # This eval stuff sucks, so if someone has a better *working* # solution, please file a bug at http://bugs.gentoo.org/ # Originally ripped from Debian init scripts local exceptions=" '!' -name . -a '!' '(' -uid 0 -a '(' -path './lost+found/*' -o -path './quota.user/*' -o -path './aquota.user/*' -o -path './quota.group/*' -o -path './aquota.group/*' -o -path './.journal/*' ')' ')'" # First kill most files, then kill empty dirs eval find . -xdev -depth ${exceptions} ! -type d -print0 | xargs -0 rm -f -- eval find . -xdev -depth ${exceptions} -type d -empty -exec rmdir '{}' \\';' eend 0 else ebegin "Cleaning /tmp directory" ( rm -f /tmp/.X*-lock /tmp/esrv* /tmp/kio* /tmp/jpsock.* /tmp/.fam* rm -rf /tmp/.esd* /tmp/orbit-* /tmp/ssh-* /tmp/ksocket-* /tmp/.*-unix ) &> /dev/null 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,X11}-unix mkdir -p /tmp/.{ICE,X11}-unix #chown 0:0 /tmp/.{ICE,X11}-unix chmod 1777 /tmp/.{ICE,X11}-unix [[ -x /sbin/restorecon ]] && restorecon /tmp/.{ICE,X11}-unix ) &> /dev/null 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 &> /dev/null } # vim:ts=4