/[livecd-tools]/trunk/autoconfig
Gentoo

Diff of /trunk/autoconfig

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

Revision 49 Revision 109
1#!/sbin/runscript 1#!/sbin/runscript
2# Copyright 1999-2005 Gentoo Foundation 2# Copyright 1999-2005 Gentoo Foundation
3# Distributed under the terms of the GNU General Public License v2 3# Distributed under the terms of the GNU General Public License v2
4# $Header: /var/cvsroot/gentoo/src/livecd-tools/autoconfig,v 1.25 2005/05/12 13:04:27 wolf31o2 Exp $ 4# $Header: /var/cvsroot/gentoo/src/livecd-tools/autoconfig,v 1.61 2006/06/21 15:29:04 wolf31o2 Exp $
5 5
6echo "0" > /proc/sys/kernel/printk
7DHCP="yes" 6DHCP="yes"
8DETECT="yes" 7DETECT="yes"
9GPM="yes" 8GPM="yes"
10PCMCIA="no" 9PCMCIA="no"
11HOTPLUG="yes" 10HOTPLUG="yes"
12APM="no" 11APM="no"
13ACPI="no" 12ACPI="no"
14IDEDMA="yes" 13IDEDMA="yes"
14ALSA="yes"
15X11="yes"
16
17get_config() {
15CMDLINE="`cat /proc/cmdline`" 18 CMDLINE="$(cat /proc/cmdline)"
19
16for x in ${CMDLINE} ; do 20 for x in ${CMDLINE} ; do
17 if [ "${x}" = "nodetect" ]; then 21 case "${x}" in
22 nodetect)
18 DETECT="no" 23 DETECT="no"
19 GPM="no" 24 GPM="no"
20 HOTPLUG="no" 25 HOTPLUG="no"
21 APM="no" 26 APM="no"
22 ACPI="no" 27 ACPI="no"
23 fi 28 ALSA="no"
24 29 X11="no"
25 if [ "${x}" = "nodhcp" ]; then 30 ;;
31 nodhcp)
26 DHCP="no" 32 DHCP="no"
27 fi 33 ;;
28 34 nogpm)
29 if [ "${x}" = "nogpm" ]; then
30 GPM="no" 35 GPM="no"
31 fi 36 ;;
32 37 dopcmcia)
33 if [ "${x}" = "dopcmcia" ]; then
34 PCMCIA="yes" 38 PCMCIA="yes"
35 fi 39 ;;
36 40 doapm)
37 if [ "${x}" = "doapm" ]; then
38 APM="yes" 41 APM="yes"
39 ACPI="no" 42 ACPI="no"
40 fi 43 ;;
41 44 acpi=on|acpi=force)
42 if [ "${x}" = "acpi=on" -o "${x}" = "acpi=force" ]; then
43 APM="no" 45 APM="no"
44 ACPI="yes" 46 ACPI="yes"
45 fi 47 ;;
46 48 ide=nodma)
47 if [ "${x}" = "ide=nodma" ]; then
48 IDEDMA="no" 49 IDEDMA="no"
49 fi 50 ;;
50 51 nohotplug)
51 if [ "${x}" = "nohotplug" ]; then
52 HOTPLUG="no" 52 HOTPLUG="no"
53 fi 53 ;;
54 nosound)
55 ALSA="no"
56 ;;
57 nox)
58 X11="no"
59 ;;
60 esac
54done 61 done
62}
55 63
56depend() { 64depend() {
57 need modules 65 need modules
58 use alsasound 66 before net
59# provide gpm pcmcia apmd acpid coldplug 67# provide gpm pcmcia apmd acpid coldplug hdparm alsasound x-setup
68}
69
70# Checks whether a service will be started by autoconfig.
71# Usage: check_svc var service [service_alternative]
72check_svc() {
73 if [ "$1" = "yes" ]
74 then
75 if [ -x "/etc/init.d/$2" ]
76 then
77 echo "$2"
78 elif [ -n "$3" -a -x "/etc/init.d/$3" ]
79 then
80 echo "$3"
81 fi
82 fi
83}
84
85# Prints an ordered list of services that will be started by autoconfig.
86list_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 svcs="${svcs} $(check_svc ${X11} x-setup)"
97
98 echo ${svcs}
99}
100
101unpack_firmware() {
102 # This unpacks any firmware tarballs.
103 # This has been moved here from coldplug, but might not be very effective
104 # since udev does coldplugging in 089 and higher.
105 if [ -e /lib/firmware.tar.bz2 ]
106 then
107 ebegin "Unpacking hotplug firmware"
108 tar xjf /lib/firmware.tar.bz2 -C /lib/firmware
109 eend 0
110 fi
111}
112
113get_info() {
114 local tmp
115
116 if [ ! -z "${1}" -a ! -z "${2}" ]
117 then
118 tmp=$(grep "^$1[[:space:]]\+:" /proc/cpuinfo | head -n 1 | cut -d" " -f3-)
119 eval "$2='${tmp}'"
120 fi
121}
122
123detect_mips() {
124 get_info "cpu model" cpuinfo
125 get_info "system type" machinfo
126 cpuinfo="${cpuinfo%% FPU*}"
127
128 case "${machinfo}" in
129 "SGI Indigo2")
130 case "${cpuinfo}" in
131 R4*)
132 machinfo="SGI Indigo2" # I2 R4x00
133 ;;
134 R8*)
135 machinfo="SGI Indigo2 Power" # I2 R8000
136 ;;
137 R10*)
138 machinfo="SGI Indigo2 Impact" # I2 R10000
139 ;;
140 esac
141 ;;
142 esac
143
144 PC="Detected an ${machinfo} w/ ${numcpu} ${cpuinfo} CPU(s)"
145}
146
147detect_x86_amd64_ia64() {
148 [ "$1" = "ia64" ] \
149 && get_info "family" cpuinfo \
150 || get_info "model name" cpuinfo
151 get_info "cpu MHz" mhz
152 mhz="~${mhz%%.*}MHz"
153
154 PC="Detected ${numcpu} ${cpuinfo} CPU(s) @ ${mhz} each"
155}
156
157detect_alpha() {
158 get_info "platform string" machinfo
159 get_info "cpu" cpuinfo1
160 get_info "cpu model" cpuinfo2
161 get_info "cpus detected" numcpu
162
163 PC="Detected ${numcpu} ${cpuinfo1} ${cpuinfo2} CPU(s) in a ${machinfo} system"
164}
165
166detect_ppc() {
167 get_info "cpu" cpuinfo
168 get_info "clock" mhz
169 get_info "detected as" machinfo
170 machinfo="${machinfo##*\(}"
171 machinfo="${machinfo%%\)*}"
172
173 local machtype=""
174
175 case "${machinfo}" in
176 "PowerMac G4 AGP Graphics")
177 machtype="Apple PowerMac G4"
178 ;;
179 "PowerBook Titanium"|'PowerBook G4 15"')
180 machtype="Apple Powerbook G4"
181 ;;
182 "iBook 2 rev. 2")
183 machtype="Apple iBook G3"
184 ;;
185 "PowerMac G5")
186 machtype="Apple PowerMac G5"
187 ;;
188 "PowerMac G5 Dual Core")
189 machtype="Apple PowerMac G5 Dual Core"
190 ;;
191 "Unknown Intrepid-based")
192 machtype="Apple Mac-Mini"
193 ;;
194 "MPC8241")
195 machtype="Kurobox"
196 ;;
197 "CHRP Pegasos2")
198 machtype="Pegasos 2"
199 ;;
200 "CHRP IBM,9124-720")
201 machtype="IBM OP720"
202 ;;
203 *)
204 machtype="Unknown PPC System"
205 ;;
206 esac
207
208 PC="Detected a(n) ${machtype} w/ ${numcpu} ${cpuinfo} CPU(s)"
209}
210
211detect_sparc() {
212 get_info "cpu" cpuinfo
213 get_info "ncpus active" numcpu
214 get_info "ncpus probed" numprobed
215
216 PC="Detected ${numcpu} active ${cpuinfo} CPU(s) of ${numprobed} total"
60} 217}
61 218
62start() { 219start() {
220 echo "0" > /proc/sys/kernel/printk
221 get_config
63 if [ "${DETECT}" = "yes" ]; then 222 if [ "${DETECT}" = "yes" ]
223 then
64 ebegin ${WARN}"Hardware detection started" 224 ebegin "Hardware detection started"
65 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` 225 local numcpu="$(grep -c '^processor[[:space:]]\+:' /proc/cpuinfo)"
66 ebegin ${GOOD}"${PC}" 226 local arch="$(uname -m)"
67 eend 227
228 case ${arch} in
229 mips*)
230 detect_mips
231 ACPI="no"
232 APM="no"
233 IDEDMA="no"
234 ;;
235 i?86|x86_64)
236 detect_x86_amd64_ia64
237 ;;
238 alpha)
239 detect_alpha
240 ACPI="no"
241 APM="no"
242 ;;
243 sparc*)
244 detect_sparc
245 ACPI="no"
246 APM="no"
247 ;;
248 powerpc*)
249 detect_ppc
250 ACPI="no"
251 APM="no"
252 ;;
253 ia64)
254 detect_x86_amd64_ia64 "ia64"
255 APM="no"
256 ;;
257 *)
258 PC=
259 ;;
260 esac
261 [ -n "${PC}" ] && einfo "${PC}"
68 [ -x /usr/sbin/hwsetup ] && hwsetup -p >/dev/null 262 [ -x /usr/sbin/hwsetup ] && hwsetup -p >/dev/null
69 eend 263 eend
70 else 264 else
71 ebegin ${WARN}"Hardware detection disabled via cmdline$NORMAL" 265 ewarn "Hardware detection disabled via cmdline ..."
72 fi 266 fi
73 267
74 if [ "${APM}" = "yes" ]; then 268 if [ "${APM}" = "yes" ]
75 modprobe apm power_off=1 >/dev/null 2>&1 && ebegin ${GOOD}"APM BIOS found, power management functions enabled.${NORMAL}" 269 then
76 [ -x /etc/init.d/apmd ] && /etc/init.d/apmd start 270 modprobe apm power_off=1 >/dev/null 2>&1 && \
271 einfo "APM BIOS found, power management functions enabled ..."
272 [ -x /etc/init.d/apmd ] && start_service apmd
77 else 273 else
78 ebegin ${GOOD}"Not Loading APM Bios support.${NORMAL}" 274 einfo "Not Loading APM Bios support ..."
79 eend
80 fi 275 fi
81 276
82 if [ "${ACPI}" = "yes" ]; then 277 if [ "${ACPI}" = "yes" ]
83 modprobe processor >/dev/null 2>&1 && ebegin ${GOOD} ACPI power management functions enabled.${NORMAL} && modprobe thermal >/dev/null 278 then
279 modprobe processor >/dev/null 2>&1 && \
280 ebegin "ACPI power management functions enabled" && \
281 modprobe thermal >/dev/null
84 modprobe fan >/dev/null 2>&1 282 modprobe fan >/dev/null 2>&1
85 modprobe button >/dev/null 2>&1 283 modprobe button >/dev/null 2>&1
86 modprobe battery >/dev/null 2>&1 284 modprobe battery >/dev/null 2>&1
87 modprobe ac >/dev/null 2>&1 285 modprobe ac >/dev/null 2>&1
88 [ -x /etc/init.d/acpid ] && /etc/init.d/acpid start 286 [ -x /etc/init.d/acpid ] && start_service acpid
89 eend 287 eend
288 else
289 einfo "Not Loading ACPI support ..."
90 fi 290 fi
91 291
92 if [ "${IDEDMA}" = "yes" ]; then 292 if [ "${IDEDMA}" = "yes" ]
93 [ -x /etc/init.d/hdparm ] && /etc/init.d/hdparm start 293 then
294 [ -x /etc/init.d/hdparm ] && start_service hdparm
94 fi 295 fi
95 296
96 if [ "${PCMCIA}" = "yes" ]; then 297 if [ "${PCMCIA}" = "yes" ]
298 then
97 ebegin ${HILITE} "PCMCIA enabled via cmdline" 299 einfo "PCMCIA enabled via cmdline ..."
98 /etc/init.d/pcmcia start 300 [ -x /etc/init.d/pcmcia ] && start_service pcmcia
99 fi 301 fi
100 302
101 if [ "${DHCP}" = "no" ]; then 303 if [ "${DHCP}" = "no" ]
304 then
102 sed -i -e '/^ifconfig_eth.*dhcp.*/ s/^/#/' \ 305 sed -i -e '/^ifconfig_eth.*dhcp.*/ s/^/#/' \
103 -e '/^iface_eth.*dhcp.*/ s/^/#/' \ 306 -e '/^iface_eth.*dhcp.*/ s/^/#/' \
307 -e '/^config_eth.*dhcp.*/ s/^/#/' \
104 /etc/conf.d/net 308 /etc/conf.d/net
105 ebegin ${BAD}"Skipping DHCP broadcast detection as requested on boot commandline." 309 ewarn "Skipping DHCP broadcast detection as requested on boot commandline ..."
106 fi 310 fi
107 311
108 #Read in what hwsetup has found 312 # Read in what hwsetup has found
109 [ -f /etc/sysconfig/knoppix ] && . /etc/sysconfig/knoppix 313 [ -f /etc/sysconfig/gentoo ] && . /etc/sysconfig/gentoo
110 314
111 # Mouse 315 # Mouse
112 if [ -n "${MOUSE_DEVICE}" ]; then 316 if [ -n "${MOUSE_DEVICE}" ]
317 then
113 ebegin ${GOOD}"Mouse is ${HILITE}${MOUSE_FULLNAME}${GOOD} at ${HILITE}${MOUSE_DEVICE}${NORMAL}" 318 einfo "Mouse is ${HILITE}${MOUSE_FULLNAME}${NORMAL} at ${HILITE}${MOUSE_DEVICE}${NORMAL} ..."
114 source /etc/sysconfig/mouse 319 source /etc/sysconfig/mouse
115 if [ -x /usr/sbin/gpm ]; then 320 if [ -x /usr/sbin/gpm ]
321 then
116 if [ `grep "#MOUSE=${MOUSETYPE}" /etc/conf.d/gpm` ]; then 322 [ $(grep "#MOUSE=${MOUSETYPE}" /etc/conf.d/gpm) ] \
117 sed -i "\@MOUSE=${MOUSETYPE}@s@^#@@" /etc/conf.d/gpm 323 && sed -i "\@MOUSE=${MOUSETYPE}@s@^#@@" /etc/conf.d/gpm \
118 else
119 echo "MOUSE=${MOUSETYPE}" >>/etc/conf.d/gpm 324 || echo "MOUSE=${MOUSETYPE}" >>/etc/conf.d/gpm
325
326 [ $(grep "#MOUSEDEV=${DEVICE}" /etc/conf.d/gpm) ] \
327 && sed -i "\@MOUSEDEV=${DEVICE}@s@^#@@" /etc/conf.d/gpm \
328 || echo "MOUSEDEV=${DEVICE}" >>/etc/conf.d/gpm
329
330 [ "${GPM}" = "yes" ] \
331 && [ -x /etc/init.d/gpm ] && start_service gpm
332 fi
333 fi
334
335 if [ "${HOTPLUG}" = "yes" ]
336 then
337 # Check whether we should be using hotplug or coldplug
338 if [ -x /etc/init.d/coldplug ]
339 then
340 start_service coldplug
341 elif [ -x /etc/init.d/hotplug ]
342 then
343 start_service hotplug
344 else
345 unpack_firmware
346 fi
347 else
348 ewarn "Hotplug disabled via cmdline ..."
349 fi
350
351 [ "${DETECT}" = "no" ] && DHCP="no"
352 [ "${DETECT}" = "yes" ] \
353 && NETDEVICES="$(awk -F: '/eth.:|tr.:|ath.:|wlan.:/{print $1}' /proc/net/dev 2>/dev/null)"
354
355 if [ -n "${NETDEVICES}" ]
356 then
357 for nics in ${NETDEVICES}
358 do
359 if [ "${DHCP}" = "yes" ]
360 then
361 einfo "Network device ${HILITE}${nics}${NORMAL} detected, DHCP broadcasting for IP ..."
362 dhcpcd -n -h $(hostname) &
120 fi 363 fi
121 if [ `grep "#MOUSEDEV=${DEVICE}" /etc/conf.d/gpm` ]; then 364 done
122 sed -i "\@MOUSEDEV=${DEVICE}@s@^#@@" /etc/conf.d/gpm
123 else 365 else
124 echo "MOUSEDEV=${DEVICE}" >>/etc/conf.d/gpm 366 ewarn "No Network device auto detected ..."
367 fi
368
369 if [ "${ALSA}" = "yes" ]
370 then
371 if [ -n "${SOUND_FULLNAME}" -o -n "${SOUND_DRIVER}" ]
372 then
373 local sndmsg="Soundcard:\n"
374
375 [ -n "${SOUND_FULLNAME}" ] \
376 && sndmsg="${sndmsg} ${WARN}${SOUND_FULLNAME}\n"
377 [ -n "${SOUND_DRIVER}" ] \
378 && sndmsg="${sndmsg} driver = ${SOUND_DRIVER}\n"
379
380 einfo "${sndmsg}"
381
382
383 if [ -x /etc/init.d/alsasound ]
384 then
385 start_service alsasound
125 fi 386 fi
126 if [ "$GPM" = "yes" ]; then 387
127 [ -x /etc/init.d/gpm ] && /etc/init.d/gpm start 388 if [ -e /proc/asound/cards ]
389 then
390 for i in $(cat /proc/asound/cards | awk '{print $1}' | grep ^[[:digit:]])
391 do
392 if [ -d /proc/asound/card$i ] && [ -x /usr/bin/amixer ]
393 then
394 amixer -c $i scontrols > /etc/amixer
395 [ -n "$(grep Master /etc/amixer)" ] \
396 && amixer -c $i -q set Master 95% unmute \
397 >/dev/null 2>&1
398 [ -n "$(grep PCM /etc/amixer)" ] \
399 && amixer -c $i -q set PCM 95% unmute \
400 >/dev/null 2>&1
401 [ -n "$(grep Mic /etc/amixer)" ] \
402 && amixer -c $i -q set Mic 95% mute cap \
403 >/dev/null 2>&1
404 [ -n "$(grep Wave /etc/amixer)" ] \
405 && amixer -c $i -q set Wave 95% unmute \
406 >/dev/null 2>&1
407 [ -n "$(grep Capture /etc/amixer)" ] \
408 && amixer -c $i -q set Capture 95% unmute cap \
409 >/dev/null 2>&1
410 fi
411 done
128 fi 412 fi
129 fi 413 fi
130 eend
131 fi
132
133 if [ "${HOTPLUG}" = "yes" ]; then
134 #Check whether we should be using hotplug or coldplug
135 if [ -x /etc/init.d/coldplug ]; then
136 /etc/init.d/coldplug start
137 else 414 else
138 [ -x /etc/init.d/hotplug ] && /etc/init.d/hotplug start 415 ewarn "Skipping ALSA detection as requested on command line ..."
416 fi
417
418 if [ "${X11}" = "yes" ]
419 then
420 if [ -x /etc/init.d/x-setup ]
421 then
422 start_service x-setup
423 elif [ -x /etc/init.d/mkxf86config ]
424 then
425 start_service mkxf86config
139 fi 426 fi
140 else 427 else
141 ebegin ${BAD}"Hotplug disabled via cmdline${NORMAL}" 428 touch /etc/init.d/.noxdm
142 fi
143
144 if [ "${DETECT}" = "no" ]; then
145 DHCP="no"
146 fi
147
148 if [ "${DETECT}" = "yes" ]; then
149 NETDEVICES="`awk -F: '/eth.:|tr.:/{print $1}' /proc/net/dev 2>/dev/null`"
150 fi
151
152 if [ -n "${NETDEVICES}" ]; then
153 if [ "${DHCP}" = "yes" ]; then
154 ebegin ${GOOD}"Network device${HILITE}${NETDEVICES}${GOOD} detected,${WARN} DHCP broadcasting for IP.${NORMAL}"
155 dhcpcd -h $(hostname) &
156 fi 429 fi
157 eend
158 430
159 else 431 [ -n "${XDESC}" ] && einfo "VideoCard: ${HILITE}${XDESC}${NORMAL}"
160 ebegin ${BAD}"No Network device auto detected.${NORMAL}"
161 fi
162
163
164 if [ -n "${SOUND_FULLNAME}" -o -n "${SOUND_DRIVER}" ]; then
165 ebegin ${GOOD}"Soundcard:"
166 eend
167 [ -n "${SOUND_FULLNAME}" ]
168 ebegin " ${WARN}${SOUND_FULLNAME}"
169 [ -n "${SOUND_DRIVER}" ]
170 ebegin ${WARN}" driver = ${SOUND_DRIVER}"${HILITE}
171 if [ -d /proc/asound/card0 ] && [ -x /usr/bin/amixer ]; then
172 amixer scontrols > /etc/amixer
173 if [ -n "`grep Master /etc/amixer`" ]
174 then
175 amixer -q set Master 95% unmute >/dev/null 2>&1
176 fi
177 if [ -n "`grep PCM /etc/amixer`" ]
178 then
179 amixer -q set PCM 95% unmute >/dev/null 2>&1
180 fi
181 if [ -n "`grep Mic /etc/amixer`" ]
182 then
183 amixer -q set Mic 95% unmute cap >/dev/null 2>&1
184 fi
185 if [ -n "`grep Wave /etc/amixer`" ]
186 then
187 amixer -q set Wave 95% unmute >/dev/null 2>&1
188 fi
189 if [ -n "`grep Capture /etc/amixer`" ]
190 then
191 amixer -q set Capture 95% unmute cap >/dev/null 2>&1
192 fi
193 fi
194 fi
195
196
197 if [ -n "${XDESC}" -o -n "${XDESC}" ]; then
198 ebegin ${GOOD}"VideoCard: ${WARN} ${XDESC}"
199 eend
200 fi
201 432
202 killall hwsetup 2>/dev/null 433 killall hwsetup 2>/dev/null
203 echo "6" > /proc/sys/kernel/printk 434 echo "6" > /proc/sys/kernel/printk
204
205} 435}
206 436
207# vim: ts=4 437# vim: ts=4

Legend:
Removed from v.49  
changed lines
  Added in v.109

  ViewVC Help
Powered by ViewVC 1.1.20