1 |
zhen |
2 |
#!/sbin/runscript |
2 |
wolf31o2 |
44 |
# Copyright 1999-2005 Gentoo Foundation |
3 |
zhen |
2 |
# Distributed under the terms of the GNU General Public License v2 |
4 |
wolf31o2 |
90 |
# $Header: /var/cvsroot/gentoo/src/livecd-tools/autoconfig,v 1.52 2006/01/21 22:38:41 wolf31o2 Exp $ |
5 |
zhen |
4 |
|
6 |
zhen |
2 |
DHCP="yes" |
7 |
|
|
DETECT="yes" |
8 |
wolf31o2 |
24 |
GPM="yes" |
9 |
zhen |
2 |
PCMCIA="no" |
10 |
|
|
HOTPLUG="yes" |
11 |
|
|
APM="no" |
12 |
|
|
ACPI="no" |
13 |
wolf31o2 |
49 |
IDEDMA="yes" |
14 |
wolf31o2 |
68 |
ALSA="yes" |
15 |
wolf31o2 |
76 |
X11="yes" |
16 |
wolf31o2 |
51 |
|
17 |
wolf31o2 |
68 |
get_config() { |
18 |
|
|
CMDLINE="$(cat /proc/cmdline)" |
19 |
wolf31o2 |
51 |
|
20 |
wolf31o2 |
68 |
for x in ${CMDLINE} ; do |
21 |
wolf31o2 |
78 |
case "${x}" in |
22 |
|
|
nodetect) |
23 |
|
|
DETECT="no" |
24 |
|
|
GPM="no" |
25 |
|
|
HOTPLUG="no" |
26 |
|
|
APM="no" |
27 |
|
|
ACPI="no" |
28 |
|
|
ALSA="no" |
29 |
|
|
X11="no" |
30 |
|
|
;; |
31 |
|
|
nodhcp) |
32 |
|
|
DHCP="no" |
33 |
|
|
;; |
34 |
|
|
nogpm) |
35 |
|
|
GPM="no" |
36 |
|
|
;; |
37 |
|
|
dopcmcia) |
38 |
|
|
PCMCIA="yes" |
39 |
|
|
;; |
40 |
|
|
doapm) |
41 |
|
|
APM="yes" |
42 |
|
|
ACPI="no" |
43 |
|
|
;; |
44 |
|
|
acpi=on|acpi=force) |
45 |
|
|
APM="no" |
46 |
|
|
ACPI="yes" |
47 |
|
|
;; |
48 |
|
|
ide=nodma) |
49 |
|
|
IDEDMA="no" |
50 |
|
|
;; |
51 |
|
|
nohotplug) |
52 |
|
|
HOTPLUG="no" |
53 |
|
|
;; |
54 |
|
|
nosound) |
55 |
|
|
ALSA="no" |
56 |
|
|
;; |
57 |
|
|
nox) |
58 |
|
|
X11="no" |
59 |
|
|
;; |
60 |
|
|
esac |
61 |
wolf31o2 |
68 |
done |
62 |
|
|
} |
63 |
|
|
|
64 |
zhen |
2 |
depend() { |
65 |
|
|
need modules |
66 |
wolf31o2 |
50 |
before net |
67 |
wolf31o2 |
76 |
# provide gpm pcmcia apmd acpid coldplug hdparm alsasound x-setup |
68 |
zhen |
2 |
} |
69 |
|
|
|
70 |
wolf31o2 |
69 |
# Checks whether a service will be started by autoconfig. |
71 |
|
|
# Usage: check_svc var service [service_alternative] |
72 |
|
|
check_svc() { |
73 |
wolf31o2 |
78 |
if [ "$1" = "yes" ] |
74 |
|
|
then |
75 |
|
|
if [ -x "/etc/init.d/$2" ] |
76 |
|
|
then |
77 |
wolf31o2 |
69 |
echo "$2" |
78 |
wolf31o2 |
78 |
elif [ -n "$3" -a -x "/etc/init.d/$3" ] |
79 |
|
|
then |
80 |
wolf31o2 |
69 |
echo "$3" |
81 |
|
|
fi |
82 |
|
|
fi |
83 |
|
|
} |
84 |
|
|
|
85 |
|
|
# Prints an ordered list of services that will be started by autoconfig. |
86 |
|
|
list_services() { |
87 |
|
|
get_config |
88 |
|
|
|
89 |
|
|
local svcs="$(check_svc ${APM} apmd)" |
90 |
|
|
svcs="${svcs} $(check_svc ${ACPI} acpid)" |
91 |
|
|
svcs="${svcs} $(check_svc ${IDEDMA} hdparm)" |
92 |
|
|
svcs="${svcs} $(check_svc ${PCMCIA} pcmcia)" |
93 |
|
|
svcs="${svcs} $(check_svc ${GPM} gpm)" |
94 |
|
|
svcs="${svcs} $(check_svc ${HOTPLUG} coldplug hotplug)" |
95 |
|
|
svcs="${svcs} $(check_svc ${ALSA} alsasound)" |
96 |
|
|
|
97 |
|
|
echo ${svcs} |
98 |
|
|
} |
99 |
|
|
|
100 |
wolf31o2 |
79 |
# Only used on SGI CDs, this determines: |
101 |
wolf31o2 |
80 |
# A) CPU Type |
102 |
|
|
# B) System |
103 |
wolf31o2 |
81 |
detect_mips() { |
104 |
wolf31o2 |
80 |
local cpuinfo="$(awk -F: '/^cpu model/{printf $2};/^$/{print ""}' /proc/cpuinfo 2>/dev/null | head -n 1 | cut -d" " -f2,3)" |
105 |
|
|
local machinfo="$(awk -F: '/^system type/{printf $2};/^$/{print ""}' /proc/cpuinfo 2>/dev/null | cut -d" " -f2-)" |
106 |
wolf31o2 |
79 |
local machtype="" |
107 |
|
|
|
108 |
|
|
case "${machinfo}" in |
109 |
|
|
"SGI Indy") |
110 |
|
|
machtype="SGI Indy" # Indy R4x00/R5000 |
111 |
|
|
;; |
112 |
|
|
"SGI Indigo2") |
113 |
|
|
case "${cpuinfo}" in |
114 |
|
|
R4*) |
115 |
|
|
machtype="SGI Indigo2" # I2 R4x00 |
116 |
|
|
;; |
117 |
|
|
R8*) |
118 |
|
|
machtype="SGI Indigo2 Power" # I2 R8000 |
119 |
|
|
;; |
120 |
|
|
R10*) |
121 |
|
|
machtype="SGI Indigo2 Impact" # I2 R10000 |
122 |
|
|
;; |
123 |
|
|
esac |
124 |
|
|
;; |
125 |
|
|
"SGI O2"|"SGI IP32") |
126 |
|
|
machtype="SGI O2" # O2 R5K/RM5K2/RM7K/R10K/R12K |
127 |
|
|
;; |
128 |
|
|
"SGI Octane"|"SGI IP30") |
129 |
|
|
machtype="SGI Octane" # Octane R10K/R12K/R14K |
130 |
|
|
;; |
131 |
|
|
"SGI Origin"|"SGI IP27") |
132 |
|
|
machtype="SGI Origin" # Origin R10K/R12K |
133 |
|
|
;; |
134 |
|
|
*) |
135 |
|
|
machtype="Unknown SGI MIPS" # ??? |
136 |
|
|
;; |
137 |
|
|
esac |
138 |
|
|
|
139 |
|
|
PC="Detected an ${machtype} w/ ${numcpu} ${cpuinfo} ${bit}" |
140 |
|
|
} |
141 |
|
|
|
142 |
wolf31o2 |
81 |
detect_x86_amd64() { |
143 |
|
|
local cpuinfo="$(awk -F: '/^model name/{printf $2};/^$/{print ""}' /proc/cpuinfo 2>/dev/null | head -n 1)" |
144 |
|
|
local mhz="$(awk -F: '/^cpu MHz/{printf " %dMHz",int($2)};/^$/{print ""}' /proc/cpuinfo 2>/dev/null | head -n 1)" |
145 |
wolf31o2 |
79 |
|
146 |
wolf31o2 |
81 |
PC="Detected ${numcpu} ${cpuinfo} ${mhz} ${bit}" |
147 |
|
|
} |
148 |
|
|
|
149 |
wolf31o2 |
89 |
detect_ppc() { |
150 |
|
|
local cpuinfo="$(awk -F: '/^cpu/{printf $2};/^$/{print ""}' /proc/cpuinfo 2>/dev/null | head -n 1)" |
151 |
|
|
local mhz="$(awk -F: '/^clock/{printf " %dMHz",int($2)};/^$/{print ""}' /proc/cpuinfo 2>/dev/null | head -n 1)" |
152 |
|
|
local machinfo="$(awk -F: '/^detected as/{printf $2}' /proc/cpuinfo | cut -d'(' -f2 | cut -d')' -f1)" |
153 |
|
|
local machtype="" |
154 |
|
|
|
155 |
|
|
case "${machinfo}" in |
156 |
|
|
"PowerMac G4 AGP Graphics") |
157 |
|
|
machtype="Apple PowerMac G4" |
158 |
|
|
;; |
159 |
wolf31o2 |
90 |
"PowerBook Titanium") |
160 |
|
|
machtype="Apple Powerbook G4" |
161 |
|
|
;; |
162 |
|
|
"iBook 2 rev. 2") |
163 |
|
|
machtype="Apple iBook G3" |
164 |
|
|
;; |
165 |
|
|
"PowerMac G5 Dual Core") |
166 |
|
|
machtype="Apple PowerMac G5 Dual Core" |
167 |
|
|
;; |
168 |
|
|
"Unknown Intrepid-based") |
169 |
|
|
machtype="Apple Mac-Mini" |
170 |
|
|
;; |
171 |
wolf31o2 |
89 |
*) |
172 |
|
|
machtype="Unknown PPC System" |
173 |
|
|
;; |
174 |
|
|
esac |
175 |
|
|
|
176 |
|
|
PC="Detected an ${machtype} w/ ${numcpu} ${cpuinfo} ${bit}" |
177 |
|
|
} |
178 |
|
|
|
179 |
zhen |
2 |
start() { |
180 |
wolf31o2 |
69 |
echo "0" > /proc/sys/kernel/printk |
181 |
wolf31o2 |
68 |
get_config |
182 |
wolf31o2 |
51 |
if [ "${DETECT}" = "yes" ] |
183 |
|
|
then |
184 |
wolf31o2 |
78 |
ebegin "Hardware detection started" |
185 |
wolf31o2 |
80 |
local numcpu="$(awk -F: '/^processor/{printf $2};/^$/{print ""}' /proc/cpuinfo 2>/dev/null | wc -l)" |
186 |
|
|
local arch="$(uname -m)" |
187 |
wolf31o2 |
79 |
local ismips="no" |
188 |
wolf31o2 |
80 |
[ "${numcpu}" -gt '1' ] && bit="CPUs" || bit="CPU" |
189 |
wolf31o2 |
81 |
case ${arch} in |
190 |
|
|
mips|mips64) |
191 |
|
|
detect_mips |
192 |
|
|
ismips="yes" |
193 |
|
|
;; |
194 |
wolf31o2 |
83 |
i?86|x86_64) |
195 |
wolf31o2 |
81 |
detect_x86_amd64 |
196 |
|
|
;; |
197 |
|
|
*) |
198 |
|
|
PC="$(awk -F: '/^processor/{printf "Processor"$2" is"};/^model name/{printf $2};/^vendor_id/{printf vendor};/^cpu MHz/{printf " %dMHz",int($2)};/^cache size/{printf ","$2" Cache"};/^$/{print ""}' /proc/cpuinfo 2>/dev/null)" |
199 |
|
|
;; |
200 |
|
|
esac |
201 |
wolf31o2 |
78 |
einfo "${PC}" |
202 |
|
|
[ -x /usr/sbin/hwsetup ] && hwsetup -p >/dev/null |
203 |
zhen |
2 |
eend |
204 |
wolf31o2 |
6 |
else |
205 |
wolf31o2 |
78 |
ewarn "Hardware detection disabled via cmdline ..." |
206 |
wolf31o2 |
6 |
fi |
207 |
zhen |
2 |
|
208 |
wolf31o2 |
51 |
if [ "${APM}" = "yes" ] |
209 |
|
|
then |
210 |
wolf31o2 |
78 |
modprobe apm power_off=1 >/dev/null 2>&1 && \ |
211 |
|
|
einfo "APM BIOS found, power management functions enabled ..." |
212 |
wolf31o2 |
77 |
[ -x /etc/init.d/apmd ] && start_service apmd |
213 |
zhen |
2 |
else |
214 |
wolf31o2 |
79 |
[ "${ismips}" = "no" ] && ewarn "Not Loading APM Bios support ..." |
215 |
wolf31o2 |
6 |
fi |
216 |
zhen |
2 |
|
217 |
wolf31o2 |
51 |
if [ "${ACPI}" = "yes" ] |
218 |
|
|
then |
219 |
wolf31o2 |
78 |
modprobe processor >/dev/null 2>&1 && \ |
220 |
|
|
ebegin "ACPI power management functions enabled" && \ |
221 |
|
|
modprobe thermal >/dev/null |
222 |
wolf31o2 |
29 |
modprobe fan >/dev/null 2>&1 |
223 |
|
|
modprobe button >/dev/null 2>&1 |
224 |
|
|
modprobe battery >/dev/null 2>&1 |
225 |
|
|
modprobe ac >/dev/null 2>&1 |
226 |
wolf31o2 |
77 |
[ -x /etc/init.d/acpid ] && start_service acpid |
227 |
wolf31o2 |
6 |
eend |
228 |
wolf31o2 |
78 |
else |
229 |
wolf31o2 |
79 |
[ "${ismips}" = "no" ] && ewarn "Not Loading ACPI support ..." |
230 |
wolf31o2 |
6 |
fi |
231 |
zhen |
2 |
|
232 |
wolf31o2 |
51 |
if [ "${IDEDMA}" = "yes" ] |
233 |
|
|
then |
234 |
wolf31o2 |
79 |
if [ "${ismips}" = "no" ]; then |
235 |
|
|
[ -x /etc/init.d/hdparm ] && start_service hdparm |
236 |
|
|
fi |
237 |
wolf31o2 |
49 |
fi |
238 |
|
|
|
239 |
wolf31o2 |
51 |
if [ "${PCMCIA}" = "yes" ] |
240 |
|
|
then |
241 |
wolf31o2 |
78 |
einfo "PCMCIA enabled via cmdline ..." |
242 |
wolf31o2 |
77 |
[ -x /etc/init.d/pcmcia ] && start_service pcmcia |
243 |
wolf31o2 |
6 |
fi |
244 |
zhen |
2 |
|
245 |
wolf31o2 |
51 |
if [ "${DHCP}" = "no" ] |
246 |
|
|
then |
247 |
wolf31o2 |
48 |
sed -i -e '/^ifconfig_eth.*dhcp.*/ s/^/#/' \ |
248 |
|
|
-e '/^iface_eth.*dhcp.*/ s/^/#/' \ |
249 |
wolf31o2 |
55 |
-e '/^config_eth.*dhcp.*/ s/^/#/' \ |
250 |
wolf31o2 |
25 |
/etc/conf.d/net |
251 |
wolf31o2 |
78 |
ewarn "Skipping DHCP broadcast detection as requested on boot commandline ..." |
252 |
wolf31o2 |
6 |
fi |
253 |
zhen |
2 |
|
254 |
wolf31o2 |
78 |
# Read in what hwsetup has found |
255 |
wolf31o2 |
6 |
[ -f /etc/sysconfig/knoppix ] && . /etc/sysconfig/knoppix |
256 |
wolf31o2 |
64 |
[ -f /etc/sysconfig/gentoo ] && . /etc/sysconfig/gentoo |
257 |
zhen |
2 |
|
258 |
wolf31o2 |
6 |
# Mouse |
259 |
wolf31o2 |
51 |
if [ -n "${MOUSE_DEVICE}" ] |
260 |
|
|
then |
261 |
wolf31o2 |
78 |
einfo "Mouse is ${HILITE}${MOUSE_FULLNAME}${NORMAL} at ${HILITE}${MOUSE_DEVICE}${NORMAL} ..." |
262 |
wolf31o2 |
6 |
source /etc/sysconfig/mouse |
263 |
wolf31o2 |
51 |
if [ -x /usr/sbin/gpm ] |
264 |
|
|
then |
265 |
wolf31o2 |
78 |
[ $(grep "#MOUSE=${MOUSETYPE}" /etc/conf.d/gpm) ] \ |
266 |
|
|
&& sed -i "\@MOUSE=${MOUSETYPE}@s@^#@@" /etc/conf.d/gpm \ |
267 |
|
|
|| echo "MOUSE=${MOUSETYPE}" >>/etc/conf.d/gpm |
268 |
|
|
|
269 |
|
|
[ $(grep "#MOUSEDEV=${DEVICE}" /etc/conf.d/gpm) ] \ |
270 |
|
|
&& sed -i "\@MOUSEDEV=${DEVICE}@s@^#@@" /etc/conf.d/gpm \ |
271 |
|
|
|| echo "MOUSEDEV=${DEVICE}" >>/etc/conf.d/gpm |
272 |
|
|
|
273 |
|
|
[ "${GPM}" = "yes" ] \ |
274 |
|
|
&& [ -x /etc/init.d/gpm ] && start_service gpm |
275 |
wolf31o2 |
29 |
fi |
276 |
wolf31o2 |
6 |
fi |
277 |
zhen |
2 |
|
278 |
wolf31o2 |
51 |
if [ "${HOTPLUG}" = "yes" ] |
279 |
|
|
then |
280 |
wolf31o2 |
78 |
# Check whether we should be using hotplug or coldplug |
281 |
wolf31o2 |
51 |
if [ -x /etc/init.d/coldplug ] |
282 |
|
|
then |
283 |
wolf31o2 |
77 |
start_service coldplug |
284 |
wolf31o2 |
67 |
elif [ -x /etc/init.d/hotplug ] |
285 |
|
|
then |
286 |
wolf31o2 |
77 |
start_service hotplug |
287 |
wolf31o2 |
17 |
fi |
288 |
zhen |
2 |
else |
289 |
wolf31o2 |
78 |
ewarn "Hotplug disabled via cmdline ..." |
290 |
wolf31o2 |
6 |
fi |
291 |
zhen |
2 |
|
292 |
wolf31o2 |
78 |
[ "${DETECT}" = "no" ] && DHCP="no" |
293 |
|
|
[ "${DETECT}" = "yes" ] \ |
294 |
|
|
&& NETDEVICES="$(awk -F: '/eth.:|tr.:|ath.:|wlan.:/{print $1}' /proc/net/dev 2>/dev/null)" |
295 |
zhen |
2 |
|
296 |
wolf31o2 |
51 |
if [ -n "${NETDEVICES}" ] |
297 |
|
|
then |
298 |
wolf31o2 |
74 |
for nics in ${NETDEVICES} |
299 |
|
|
do |
300 |
|
|
if [ "${DHCP}" = "yes" ] |
301 |
|
|
then |
302 |
wolf31o2 |
78 |
einfo "Network device ${HILITE}${nics}${NORMAL} detected, DHCP broadcasting for IP ..." |
303 |
wolf31o2 |
74 |
dhcpcd -n -h $(hostname) & |
304 |
|
|
fi |
305 |
|
|
done |
306 |
zhen |
2 |
else |
307 |
wolf31o2 |
78 |
ewarn "No Network device auto detected ..." |
308 |
wolf31o2 |
6 |
fi |
309 |
zhen |
2 |
|
310 |
wolf31o2 |
68 |
if [ "${ALSA}" = "yes" ] |
311 |
wolf31o2 |
51 |
then |
312 |
wolf31o2 |
68 |
if [ -n "${SOUND_FULLNAME}" -o -n "${SOUND_DRIVER}" ] |
313 |
wolf31o2 |
51 |
then |
314 |
wolf31o2 |
78 |
local sndmsg="Soundcard:\n" |
315 |
|
|
|
316 |
|
|
[ -n "${SOUND_FULLNAME}" ] \ |
317 |
|
|
&& sndmsg="${sndmsg} ${WARN}${SOUND_FULLNAME}\n" |
318 |
|
|
[ -n "${SOUND_DRIVER}" ] \ |
319 |
|
|
&& sndmsg="${sndmsg} driver = ${SOUND_DRIVER}\n" |
320 |
|
|
|
321 |
|
|
einfo "${sndmsg}" |
322 |
|
|
|
323 |
|
|
|
324 |
wolf31o2 |
70 |
if [ -x /etc/init.d/alsasound ] |
325 |
|
|
then |
326 |
wolf31o2 |
77 |
start_service alsasound |
327 |
wolf31o2 |
70 |
fi |
328 |
wolf31o2 |
78 |
|
329 |
wolf31o2 |
82 |
if [ -e /proc/asound/cards ] |
330 |
|
|
then |
331 |
|
|
for i in $(cat /proc/asound/cards | cut -d" " -f1) |
332 |
|
|
do |
333 |
|
|
if [ -d /proc/asound/card$i ] && [ -x /usr/bin/amixer ] |
334 |
|
|
then |
335 |
|
|
amixer -c $i scontrols > /etc/amixer |
336 |
|
|
[ -n "$(grep Master /etc/amixer)" ] \ |
337 |
|
|
&& amixer -c $i -q set Master 95% unmute \ |
338 |
|
|
>/dev/null 2>&1 |
339 |
|
|
[ -n "$(grep PCM /etc/amixer)" ] \ |
340 |
|
|
&& amixer -c $i -q set PCM 95% unmute \ |
341 |
|
|
>/dev/null 2>&1 |
342 |
|
|
[ -n "$(grep Mic /etc/amixer)" ] \ |
343 |
|
|
&& amixer -c $i -q set Mic 95% mute cap \ |
344 |
|
|
>/dev/null 2>&1 |
345 |
|
|
[ -n "$(grep Wave /etc/amixer)" ] \ |
346 |
|
|
&& amixer -c $i -q set Wave 95% unmute \ |
347 |
|
|
>/dev/null 2>&1 |
348 |
|
|
[ -n "$(grep Capture /etc/amixer)" ] \ |
349 |
|
|
&& amixer -c $i -q set Capture 95% unmute cap \ |
350 |
|
|
>/dev/null 2>&1 |
351 |
|
|
fi |
352 |
|
|
done |
353 |
|
|
fi |
354 |
wolf31o2 |
15 |
fi |
355 |
wolf31o2 |
68 |
else |
356 |
wolf31o2 |
86 |
ewarn "Skipping ALSA detection as requested on command line ..." |
357 |
wolf31o2 |
6 |
fi |
358 |
zhen |
2 |
|
359 |
wolf31o2 |
76 |
if [ "${DETECT}" = "yes" ] |
360 |
|
|
then |
361 |
wolf31o2 |
87 |
[ -x /etc/init.d/x-setup ] && start_service x-setup |
362 |
wolf31o2 |
76 |
fi |
363 |
|
|
|
364 |
wolf31o2 |
78 |
[ "${X11}" = "no" ] && touch /etc/init.d/.noxdm |
365 |
|
|
[ -n "${XDESC}" ] && einfo "VideoCard: ${HILITE}${XDESC}${NORMAL}" |
366 |
wolf31o2 |
76 |
|
367 |
wolf31o2 |
6 |
killall hwsetup 2>/dev/null |
368 |
|
|
echo "6" > /proc/sys/kernel/printk |
369 |
zhen |
2 |
} |
370 |
wolf31o2 |
6 |
|
371 |
|
|
# vim: ts=4 |