blob: ad7637f022f57da94b69ad870f664360df003e9e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
|
#!/sbin/runscript
# Copyright 1999-2005 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 ]
#
if [[ -d /var/lib/net-scripts/state ]] ; then
ebegin "Cleaning /var/lib/net-scripts/state"
rm -rf /var/lib/net-scripts/state/*
eend 0
fi
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
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
|