169 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			169 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
		
			Executable File
		
	
	
	
	
#!/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
 | 
						|
}
 | 
						|
 | 
						|
cleanup_tmp_dir() {
 | 
						|
	local dir=$1
 | 
						|
 | 
						|
	mkdir -p ${dir}
 | 
						|
	cd ${dir}
 | 
						|
	if [ "${WIPE_TMP}" = "yes" ] ; then
 | 
						|
		ebegin "Wiping ${dir} 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 ${dir} directory"
 | 
						|
		rm -rf ${dir}/.X*-lock ${dir}/esrv* ${dir}/kio* ${dir}/jpsock.* \
 | 
						|
			${dir}/.fam* ${dir}/.esd* ${dir}/orbit-* ${dir}/ssh-* \
 | 
						|
			${dir}/ksocket-* ${dir}/.*-unix
 | 
						|
		eend 0
 | 
						|
	fi
 | 
						|
}
 | 
						|
 | 
						|
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 [ -e /etc/sysctl.conf -a ! -x /etc/init.d/sysctl ] ; then
 | 
						|
		if [ "${RC_SYS}" != "VPS" ] ; then
 | 
						|
			ebegin "Configuring kernel parameters"
 | 
						|
			sysctl -p /etc/sysctl.conf >/dev/null
 | 
						|
			eend $?
 | 
						|
		fi
 | 
						|
	fi
 | 
						|
	
 | 
						|
	if ! echo 2>/dev/null >/.test.$$ ; then
 | 
						|
		ewarn "Skipping /var and /tmp initialization (ro root?)"
 | 
						|
		return 0
 | 
						|
	fi
 | 
						|
	rm -f /.test.$$
 | 
						|
 | 
						|
	# Ensure that our basic dirs exist
 | 
						|
	for x in /var/lock /var/log /var/run /tmp ; do
 | 
						|
		if ! [ -d "${x}" ] ; then
 | 
						|
			if ! mkdir "${x}" ; then
 | 
						|
				eend 1 "failed to create needed directory ${x}"
 | 
						|
				return 1
 | 
						|
			fi
 | 
						|
		fi 
 | 
						|
	done
 | 
						|
 | 
						|
	# Setup login records
 | 
						|
	printf "" >/var/run/utmp
 | 
						|
	[ -e /var/log/wtmp ] || printf "" >/var/log/wtmp
 | 
						|
	chgrp utmp /var/run/utmp /var/log/wtmp
 | 
						|
	chmod 0664 /var/run/utmp /var/log/wtmp
 | 
						|
 | 
						|
	ebegin "Updating environment"
 | 
						|
	# Use our version, not portage version.
 | 
						|
	/sbin/env-update --fork-ldconfig
 | 
						|
	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 ! -name ld.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 ] && ! [ -c /dev/.devfsd ] ; then
 | 
						|
		if grep -v -e '^[[:space:]]*#' /etc/pam.d/* | grep -q 'pam_console.so' ; then
 | 
						|
			pam_console_apply -r
 | 
						|
		fi
 | 
						|
	fi
 | 
						|
 | 
						|
	# Create the .keep to stop portage from removing /var/lock
 | 
						|
	printf "" >/var/lock/.keep
 | 
						|
	eend 0
 | 
						|
 | 
						|
	# Clean up /tmp directories
 | 
						|
	local tmp
 | 
						|
	for tmp in ${WIPE_TMP_DIRS-/tmp} ; do
 | 
						|
		cleanup_tmp_dir ${tmp}
 | 
						|
	done
 | 
						|
	chmod +t /tmp /var/tmp
 | 
						|
 | 
						|
	# 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
 | 
						|
 | 
						|
	# Create an 'after-boot' dmesg log
 | 
						|
	if [ "${RC_SYS}" != "VPS" ] ; then
 | 
						|
		dmesg > /var/log/dmesg
 | 
						|
		chmod 640 /var/log/dmesg
 | 
						|
	fi
 | 
						|
 | 
						|
	# Check for /etc/resolv.conf, and create if missing
 | 
						|
	[ -e /etc/resolv.conf ] || printf "" >/etc/resolv.conf
 | 
						|
}
 | 
						|
 | 
						|
stop() {
 | 
						|
	# Reset pam_console permissions if we are actually using it
 | 
						|
	if [ -x /sbin/pam_console_apply ] && ! [ -c /dev/.devfsd ] ; then
 | 
						|
		if grep -v -e '^[[:space:]]*#' /etc/pam.d/* | grep -q 'pam_console.so' ; then
 | 
						|
			/sbin/pam_console_apply -r
 | 
						|
		fi
 | 
						|
	fi
 | 
						|
 | 
						|
	# Write a halt record if we're shutting down
 | 
						|
	case "${RC_SOFTLEVEL}" in
 | 
						|
		reboot|shutdown)
 | 
						|
			[ "${RC_UNAME}" = "Linux" ] && halt -w
 | 
						|
			;;
 | 
						|
	esac
 | 
						|
	
 | 
						|
	return 0
 | 
						|
}
 | 
						|
 | 
						|
# vim: set ts=4 :
 |