Magellan Linux

Contents of /trunk/magellan-initscripts/etc/rc.d/init.d/hwdetect

Parent Directory Parent Directory | Revision Log Revision Log


Revision 479 - (show annotations) (download)
Wed Apr 25 13:26:33 2007 UTC (17 years ago) by niro
File size: 12670 byte(s)
-many style updates
-enabled aiglx support

1 #!/bin/bash
2 # $Header: /home/cvsd/magellan-cvs/magellan-src/magellan-initscripts/etc/rc.d/init.d/hwdetect,v 1.6 2007-04-25 13:26:33 niro Exp $
3
4 # note: must be startet before /etc/rc.d/init.d/modules !!!
5
6 #%rlevels: 7:s
7 #%start: 52
8 #%stop:
9
10 #deps
11 #%needs:
12 #%before:
13 #%after:
14
15 add_x11conf()
16 {
17 local var="$1"
18 echo "${var}" >> ${xfconfig} || die "add_x11conf() adding \$var"
19 }
20
21 add_modconf()
22 {
23 local var="$1"
24 echo "${var}" >> /etc/modules.autoload.d/kernel-$(kernel_major_version) || die "add_modconf() adding \$var"
25 }
26
27 write_x11_config()
28 {
29 local xserver
30 local xfconfig
31
32 local HAS_VNC
33 local USE_AIGLX
34
35 local rgbpath
36 local fontpath
37 local modulespath
38 local i
39
40 # check command line for params
41 for i in $(cat /proc/cmdline)
42 do
43 case "${i}" in
44 aiglx) USE_AIGLX=yes;;
45 esac
46 done
47
48 # xfree or xorg ?
49 xserver="$(readlink /usr/X11R6/bin/X)"
50
51 case ${xserver} in
52 Xorg)
53 xfconfig=/etc/X11/xorg.conf
54 ;;
55 XFree86)
56 xfconfig=/etc/X11/XF86Config
57 ;;
58 *)
59 echo " Unkown xserver. aborting."
60 exit 1
61 ;;
62 esac
63
64 # have we vnc support ?
65 if [[ -f /usr/X11R6/lib/modules/vnc.so ]] ||
66 [[ -f /usr/X11R6/lib/modules/extensions/vnc.so ]] ||
67 [[ -f /usr/lib/xorg/modules/extensions/vnc.so ]]
68 then
69 HAS_VNC="yes"
70 else
71 HAS_VNC="no"
72 fi
73
74 # show which xserver we going to use
75 echo -en ${COLOREDSTAR}"Using '${xserver}' as x11-server "
76
77 # show if we have vnc
78 if [[ ${HAS_VNC} = yes ]]
79 then
80 echo "with vnc enabled ..."
81 else
82 echo "..."
83 fi
84
85 # create a new clear xfconfig file
86 echo '# Generated with hwdetect, part of Magellan-Linux initscripts.' > ${xfconfig}
87 echo '' >> ${xfconfig}
88
89
90 # write modules
91 add_x11conf ''
92 add_x11conf 'Section "Module"'
93 add_x11conf ' Load "dbe"'
94 add_x11conf ' SubSection "extmod"'
95 add_x11conf ' Option "omit xfree86-dga"'
96 add_x11conf ' EndSubSection'
97 add_x11conf ' Load "type1"'
98 add_x11conf ' Load "speedo"'
99 add_x11conf ' Load "freetype"'
100 add_x11conf '# Load "xtt"'
101 if [[ ${USE_AIGLX} = yes ]]
102 then
103 add_x11conf ' Load "glx"'
104 else
105 add_x11conf '# Load "glx"'
106 fi
107 add_x11conf ' Load "dri"'
108
109 [[ ${HAS_VNC} = yes ]] && add_x11conf ' Load "vnc"'
110
111 add_x11conf 'EndSection'
112
113 # enable composite for aiglx
114 if [[ ${USE_AIGLX} = yes ]]
115 then
116 add_x11conf 'Section "Extensions"'
117 add_x11conf ' Option "Composite" "Enable"'
118 add_x11conf 'EndSection'
119 fi
120
121
122 # fonts
123 case ${xserver} in
124 Xorg)
125 fontpath="/usr/share/fonts"
126 rgbpath="/usr/share/X11"
127 modulespath="/usr/lib/xorg/modules"
128 ;;
129 XFree86)
130 fontpath="/usr/X11R6/lib/X11/fonts"
131 rgbpath="/usr/X11R6/lib/X11"
132 modulespath="/usr/X11R6/lib/modules"
133 ;;
134 esac
135
136 add_x11conf ''
137 add_x11conf 'Section "Files"'
138 add_x11conf " RgbPath \"${rgbpath}/rgb\""
139 add_x11conf " FontPath \"${fontpath}/local/\""
140 add_x11conf " FontPath \"${fontpath}/misc/\""
141 add_x11conf " FontPath \"${fontpath}/75dpi/:unscaled\""
142 add_x11conf " FontPath \"${fontpath}/100dpi/:unscaled\""
143 add_x11conf ' #prevents slow startup when disabled -> speedo, type1'
144 add_x11conf " #FontPath \"${fontpath}/Speedo/\""
145 add_x11conf " #FontPath \"${fontpath}/fonts/Type1/\""
146 add_x11conf " FontPath \"${fontpath}/fonts/TrueType/\""
147 add_x11conf " FontPath \"${fontpath}/freefont/\""
148 add_x11conf " FontPath \"${fontpath}/75dpi/\""
149 add_x11conf " FontPath \"${fontpath}/100dpi/\""
150 add_x11conf "# ModulePath \"${modulespath}\""
151 add_x11conf 'EndSection'
152
153 # xserver flags
154 add_x11conf ''
155 add_x11conf 'Section "ServerFlags"'
156 add_x11conf '# Option "DontVTSwitch"'
157 add_x11conf '# Option "DontZap"'
158 add_x11conf '# Option "Dont Zoom"'
159 add_x11conf 'EndSection'
160
161
162 # keyboard
163 add_x11conf ''
164 add_x11conf 'Section "InputDevice"'
165 add_x11conf ' Identifier "Keyboard1"'
166
167 case ${xserver} in
168 Xorg) add_x11conf ' Driver "kbd"' ;;
169 XFree86) add_x11conf ' Driver "Keyboard"' ;;
170 esac
171
172 add_x11conf ' Option "AutoRepeat" "500 30"'
173 add_x11conf '# Option "Xleds" "1 2 3"'
174
175 case ${xserver} in
176 Xorg)
177 add_x11conf ' Option "XkbRules" "xorg"'
178 ;;
179 XFree86)
180 add_x11conf ' Option "XkbRules" "xfree86"'
181 ;;
182 esac
183
184 add_x11conf ' Option "XkbModel" "pc104"'
185 add_x11conf ' Option "XkbLayout" "de"'
186 add_x11conf 'EndSection'
187
188
189 # mouse
190 # to be safe
191 local MOUSETYPE XMOUSETYPE FULLNAME DEVICE
192 # get config
193 [ -f /etc/sysconfig/hwsetup/mouse ] && source /etc/sysconfig/hwsetup/mouse
194
195 add_x11conf ''
196 add_x11conf 'Section "InputDevice"'
197 add_x11conf ' Identifier "Mouse1"'
198 add_x11conf ' Driver "mouse"'
199
200 if [[ -n ${XMOUSETYPE} ]]
201 then
202 add_x11conf " Option \"Protocol\" \"${XMOUSETYPE}\""
203 else
204 add_x11conf ' Option "Protocol" "PS/2"'
205 fi
206
207 if [[ -n ${DEVICE} ]]
208 then
209 # show what we got
210 echo -e ${COLOREDSTAR}"Mouse (${MOUSE_FULLNAME} found at ${MOUSE_DEVICE}"
211
212 # is there any mouse module than try to load it
213 if [[ ${MOUSETYPE} = ps2 ]]
214 then
215 # kernel 2.6
216 if [ -f /lib/modules/$(uname -r)/kernel/drivers/input/mouse/psmouse.ko ]
217 then
218 echo -e ${COLOREDSTAR}"Loading kernel-module 'psmouse' ..."
219 add_modconf 'psmouse'
220 fi
221
222 # kernel 2.4
223 #if [ -f /lib/modules/$(uname -r)/kernel/drivers/input/mouse/psmouse.ko ]
224 #then
225 # echo -e ${COLOREDSTAR}"Loading kernel-module 'psmouse' ..."
226 # echo "psmouse" >> /etc/modules.autoload.d/kernel-$(kernel_major_version)
227 #fi
228 else
229 # kernel 2.6
230 if [ -a /lib/modules/$(uname -r)/kernel/drivers/input/mouse/sermouse.ko ]
231 then
232 echo -e ${COLOREDSTAR}"Loading kernel-module 'sermouse' ..."
233 add_modconf 'sermouse'
234 fi
235
236 # kernel 2.4
237 #if [ -f /lib/modules/$(uname -r)/kernel/drivers/input/mouse/psmouse.ko ]
238 #then
239 # echo -e ${COLOREDSTAR}"Loading kernel-module 'psmouse' ..."
240 # echo "psmouse" >> /etc/modules.autoload.d/kernel-$(kernel_major_version)
241 #fi
242 fi
243 add_x11conf " Option \"Device\" \"${DEVICE}\""
244 else
245 add_x11conf ' Option "Device" "/dev/mouse"'
246 fi
247
248 add_x11conf ' Option "Resolution" "1200"'
249
250 [[ ${XMOUSETYPE} = IMPS/2 ]] && add_x11conf ' Option "ZAxisMapping" "4 5"'
251
252 add_x11conf 'EndSection'
253
254 # to be safe
255 unset MOUSETYPE XMOUSETYPE FULLNAME DEVICE
256
257
258 # vnc keyboard && mouse
259 if [[ ${HAS_VNC} = yes ]]
260 then
261 add_x11conf ''
262 add_x11conf 'Section "InputDevice"'
263 add_x11conf ' Identifier "vncKeyboard"'
264 add_x11conf ' Driver "rfbkeyb"'
265 add_x11conf 'EndSection'
266
267 add_x11conf ''
268 add_x11conf 'Section "InputDevice"'
269 add_x11conf ' Identifier "vncMouse"'
270 add_x11conf ' Driver "rfbmouse"'
271 add_x11conf 'EndSection'
272 fi
273
274
275 # monitor
276 add_x11conf ''
277
278 # using knoppix ddcxinfo
279 if [[ -x /sbin/ddcxinfo-knoppix ]]
280 then
281 ddcxinfo-knoppix -monitor >> ${xfconfig}
282 else
283 # some conservative default values
284 add_x11conf 'Section "Monitor"'
285 add_x11conf ' Identifier "mon0"'
286 add_x11conf ' HorizSync 28 - 96'
287 add_x11conf ' VertRefresh 50-60'
288 add_x11conf ' Option "DPMS"'
289 add_x11conf 'EndSection'
290 fi
291
292 # vga
293 # to be safe
294 local XSERVER XMODULE XDESC
295
296 # get config
297 [ -f /etc/sysconfig/hwsetup/xserver ] && source /etc/sysconfig/hwsetup/xserver
298
299 add_x11conf ''
300 add_x11conf 'Section "Device"'
301 add_x11conf ' Identifier "vga0"'
302
303 if [[ -n ${XMODULE} ]]
304 then
305 # vmware module has some probs with fb consoles
306 # very dirty glyphes appear, so we use vesa instead
307 [[ ${XMODULE} = vmware ]] && XMODULE="vesa"
308
309 # i810 needs the intel-agp kernel module to run probably
310 [[ ${XMODULE} = i810 ]] && \
311 [ -f /lib/modules/$(uname -r)/kernel/drivers/char/agp/intel-agp.ko ] && \
312 add_modconf 'intel-agp'
313
314 echo -e ${COLOREDSTAR}"Video: ${XDESC}"
315 echo -e ${COLOREDSTAR}"Video module: ${XMODULE}"
316 add_x11conf " Driver \"${XMODULE}\""
317 else
318 echo -e ${COLOREDSTAR}"Video unknown, trying to use the standard 'vesa' module ..."
319 add_x11conf ' Driver "vesa"'
320 fi
321
322 if [[ ${USE_AIGLX} = yes ]]
323 then
324 add_x11conf ''
325 [[ ${XMODULE} = radeon ]] && add_x11conf ' Option "XAANoOffscreenPixmaps" "true"'
326 add_x11conf ' Option "DRI" "true"'
327 add_x11conf ''
328 fi
329
330 # vnc server options
331 if [[ ${HAS_VNC} = yes ]]
332 then
333 add_x11conf ''
334 add_x11conf ' # rfb options'
335 add_x11conf ' Option "rfbauth" "/root/.vnc/passwd"'
336 add_x11conf ' Option "rfbport" "5900"'
337 add_x11conf ' # Option "nevershared"'
338 add_x11conf ' Option "alwaysshared"'
339 add_x11conf ' Option "dontdisconnect"'
340 add_x11conf ' Option "httpdir" "/usr/share/vnc/classes"'
341 add_x11conf ' Option "httpport" "5800"'
342 add_x11conf ' # Option "useraccept"'
343 add_x11conf ' Option "usevnc"'
344 add_x11conf ' # Option "localhost"'
345 add_x11conf ' # Option "interface" "192.168.0.1"'
346 add_x11conf ' # Option "viewonly"'
347 add_x11conf ' # Option "loginauth"'
348 add_x11conf ''
349 fi
350
351 add_x11conf 'EndSection'
352 # to be safe
353 unset XSERVER XMODULE XDESC
354
355
356 # screens
357 add_x11conf ''
358 add_x11conf 'Section "Screen"'
359 add_x11conf ' Identifier "Screen 1"'
360 add_x11conf ' Device "vga0"'
361 add_x11conf ' Monitor "Monitor0"'
362 add_x11conf ' DefaultDepth 16'
363 add_x11conf ' Subsection "Display"'
364 add_x11conf ' Depth 8'
365 add_x11conf ' Modes "1024x768"'
366 add_x11conf ' ViewPort 0 0'
367 add_x11conf ' EndSubsection'
368 add_x11conf ' Subsection "Display"'
369 add_x11conf ' Depth 16'
370 add_x11conf ' Modes "1024x768"'
371 add_x11conf ' ViewPort 0 0'
372 add_x11conf ' EndSubsection'
373 add_x11conf ' Subsection "Display"'
374 add_x11conf ' Depth 24'
375 add_x11conf ' Modes "1024x768"'
376 add_x11conf ' ViewPort 0 0'
377 add_x11conf ' EndSubsection'
378 add_x11conf 'EndSection'
379
380
381 # server layout
382 add_x11conf ''
383 add_x11conf 'Section "ServerLayout"'
384 add_x11conf ' Identifier "Simple Layout"'
385 add_x11conf ' Screen "Screen 1"'
386 add_x11conf ' InputDevice "Mouse1" "CorePointer"'
387 add_x11conf ' InputDevice "Keyboard1" "CoreKeyboard"'
388
389 # load vnc keyboard && mouse
390 if [[ ${HAS_VNC} = yes ]]
391 then
392 add_x11conf ' InputDevice "vncMouse" "ExtraPointer"'
393 add_x11conf ' InputDevice "vncKeyboard" "ExtraKeyboard"'
394 fi
395
396 if [[ ${USE_AIGLX} = yes ]]
397 then
398 add_x11conf ''
399 add_x11conf ' Option "AIGLX" "true"'
400 add_x11conf ''
401 fi
402
403
404 add_x11conf 'EndSection'
405
406
407 # dri (here disabled, use default of xserver)
408 add_x11conf ''
409 if [[ ${USE_AIGLX} = yes ]]
410 then
411 add_x11conf 'Section "DRI"'
412 add_x11conf ' Group 0'
413 add_x11conf ' Mode 0666'
414 add_x11conf 'EndSection'
415 else
416 add_x11conf '# Section "DRI"'
417 add_x11conf '# Group 0'
418 add_x11conf '# Mode 0666'
419 add_x11conf '# EndSection'
420 fi
421 }
422
423
424 run_hwdetection()
425 {
426 echo -e ${COLOREDSTAR}"Hardware Autodetection started ..."
427 echo -e ${COLOREDSTAR}"Prozessor: $(cat /proc/cpuinfo |grep "model name" | sed -e 's:model\ name*.*\: ::')"
428
429
430 # cleaning up old data-crap
431 if [ -e /etc/sysconfig/hwsetup ]
432 then
433 echo -e ${COLOREDSTAR}"Cleaning up old data ..."
434 rm -f /etc/sysconfig/hwsetup/*
435 fi
436
437 echo -en "${COLOREDSTAR}";hwsetup -p > /dev/null
438
439 # clean up modules
440 if [ -f /etc/modules.autoload.d/kernel-$(kernel_major_version) ]
441 then
442 echo -e ${COLOREDSTAR}"Cleaning up /etc/modules.autoload.d/kernel-$(kernel_major_version) ..."
443 echo > /etc/modules.autoload.d/kernel-$(kernel_major_version)
444 evaluate_retval
445 fi
446
447 # load module for parallel printing if exists
448 if [ -e /lib/modules/$(uname -r)/kernel/drivers/char/lp.o ]
449 then
450 add_modconf 'lp'
451 fi
452
453 # get what hwsetup has found
454 if [ -f /etc/sysconfig/hwsetup/knoppix ]
455 then
456 source /etc/sysconfig/hwsetup/knoppix
457 fi
458
459 # network setup (dhcp)
460 if [[ -n ${NETCARD_DRIVER} ]]
461 then
462 echo -e ${COLOREDSTAR}"Network eth0: ${NETCARD_FULLNAME}"
463 echo -e ${COLOREDSTAR}"Network module: ${NETCARD_DRIVER}"
464 add_modconf "${NETCARD_DRIVER}"
465 evaluate_retval
466 fi
467
468 # sound setup
469 if [[ -n ${SOUND_DRIVER} ]]
470 then
471 echo -e ${COLOREDSTAR}"Sound (${SOUND_FULLNAME}) found"
472 echo -e ${COLOREDSTAR}"Sound module: ${SOUND_DRIVER}"
473 add_modconf "${SOUND_DRIVER}"
474 evaluate_retval
475 fi
476
477 # write default xfree-config
478 echo -e ${COLOREDSTAR}"Generating x11 configuration ..."
479 write_x11_config
480 evaluate_retval
481 }
482
483 ########### main part starts here ##############
484
485 source /etc/sysconfig/rc
486 source $rc_functions
487
488 case $1 in
489 start)
490 # we wouldn't start hwdetection if settings where imported (alx-only)
491 if [ ! -e /etc/alx-config/imported ]
492 then
493 run_hwdetection
494 fi
495
496 update_svcstatus $1
497 splash svc_started "$(basename $0)" 0
498 ;;
499
500 restart)
501 $0 start
502 ;;
503
504 *)
505 echo "Usage: $0 {start|restart}"
506 exit 1
507 ;;
508 esac

Properties

Name Value
svn:executable *