/[livecd-tools]/trunk/autoconfig
Gentoo

Contents of /trunk/autoconfig

Parent Directory Parent Directory | Revision Log Revision Log


Revision 110 - (show annotations) (download)
Fri Jun 23 21:01:30 2006 UTC (8 years, 2 months ago) by wolf31o2
File size: 9708 byte(s)
Change a few greps to bash built-in after reading Uberlord's blog post.

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

Properties

Name Value
svn:eol-style native
svn:executable *

  ViewVC Help
Powered by ViewVC 1.1.20