Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 479 - (hide 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 niro 2 #!/bin/bash
2 niro 479 # $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 niro 2
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 niro 479 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 niro 2 local xserver
30     local xfconfig
31 niro 479
32 niro 2 local HAS_VNC
33 niro 479 local USE_AIGLX
34 niro 148
35 niro 479 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 niro 148 # xfree or xorg ?
49 niro 2 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 niro 11 echo " Unkown xserver. aborting."
60 niro 2 exit 1
61     ;;
62     esac
63 niro 71
64 niro 148 # have we vnc support ?
65 niro 479 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 niro 2 then
69     HAS_VNC="yes"
70     else
71     HAS_VNC="no"
72     fi
73 niro 71
74 niro 148 # show which xserver we going to use
75 niro 2 echo -en ${COLOREDSTAR}"Using '${xserver}' as x11-server "
76 niro 71
77 niro 148 # show if we have vnc
78     if [[ ${HAS_VNC} = yes ]]
79 niro 2 then
80     echo "with vnc enabled ..."
81     else
82     echo "..."
83     fi
84 niro 71
85 niro 148 # create a new clear xfconfig file
86 niro 2 echo '# Generated with hwdetect, part of Magellan-Linux initscripts.' > ${xfconfig}
87     echo '' >> ${xfconfig}
88 niro 71
89 niro 148
90     # write modules
91 niro 479 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 niro 71
109 niro 479 [[ ${HAS_VNC} = yes ]] && add_x11conf ' Load "vnc"'
110 niro 71
111 niro 479 add_x11conf 'EndSection'
112 niro 71
113 niro 479 # 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 niro 71
121 niro 479
122 niro 148 # fonts
123 niro 2 case ${xserver} in
124     Xorg)
125 niro 479 fontpath="/usr/share/fonts"
126     rgbpath="/usr/share/X11"
127     modulespath="/usr/lib/xorg/modules"
128 niro 2 ;;
129     XFree86)
130 niro 479 fontpath="/usr/X11R6/lib/X11/fonts"
131     rgbpath="/usr/X11R6/lib/X11"
132     modulespath="/usr/X11R6/lib/modules"
133 niro 2 ;;
134     esac
135 niro 71
136 niro 479 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 niro 71
153 niro 148 # xserver flags
154 niro 479 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 niro 71
161    
162 niro 148 # keyboard
163 niro 479 add_x11conf ''
164     add_x11conf 'Section "InputDevice"'
165     add_x11conf ' Identifier "Keyboard1"'
166 niro 71
167 niro 2 case ${xserver} in
168 niro 479 Xorg) add_x11conf ' Driver "kbd"' ;;
169     XFree86) add_x11conf ' Driver "Keyboard"' ;;
170 niro 2 esac
171 niro 71
172 niro 479 add_x11conf ' Option "AutoRepeat" "500 30"'
173     add_x11conf '# Option "Xleds" "1 2 3"'
174 niro 71
175 niro 2 case ${xserver} in
176     Xorg)
177 niro 479 add_x11conf ' Option "XkbRules" "xorg"'
178 niro 2 ;;
179     XFree86)
180 niro 479 add_x11conf ' Option "XkbRules" "xfree86"'
181 niro 2 ;;
182     esac
183 niro 71
184 niro 479 add_x11conf ' Option "XkbModel" "pc104"'
185     add_x11conf ' Option "XkbLayout" "de"'
186     add_x11conf 'EndSection'
187 niro 71
188    
189 niro 148 # mouse
190     # to be safe
191 niro 2 local MOUSETYPE XMOUSETYPE FULLNAME DEVICE
192 niro 148 # get config
193 niro 2 [ -f /etc/sysconfig/hwsetup/mouse ] && source /etc/sysconfig/hwsetup/mouse
194 niro 71
195 niro 479 add_x11conf ''
196     add_x11conf 'Section "InputDevice"'
197     add_x11conf ' Identifier "Mouse1"'
198     add_x11conf ' Driver "mouse"'
199 niro 71
200 niro 479 if [[ -n ${XMOUSETYPE} ]]
201 niro 2 then
202 niro 479 add_x11conf " Option \"Protocol\" \"${XMOUSETYPE}\""
203 niro 2 else
204 niro 479 add_x11conf ' Option "Protocol" "PS/2"'
205 niro 2 fi
206 niro 71
207 niro 479 if [[ -n ${DEVICE} ]]
208 niro 2 then
209 niro 148 # show what we got
210 niro 2 echo -e ${COLOREDSTAR}"Mouse (${MOUSE_FULLNAME} found at ${MOUSE_DEVICE}"
211 niro 71
212 niro 148 # is there any mouse module than try to load it
213 niro 479 if [[ ${MOUSETYPE} = ps2 ]]
214 niro 2 then
215 niro 148 # kernel 2.6
216 niro 2 if [ -f /lib/modules/$(uname -r)/kernel/drivers/input/mouse/psmouse.ko ]
217     then
218     echo -e ${COLOREDSTAR}"Loading kernel-module 'psmouse' ..."
219 niro 479 add_modconf 'psmouse'
220 niro 2 fi
221 niro 71
222 niro 148 # kernel 2.4
223 niro 2 #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 niro 148 # kernel 2.6
230 niro 2 if [ -a /lib/modules/$(uname -r)/kernel/drivers/input/mouse/sermouse.ko ]
231     then
232     echo -e ${COLOREDSTAR}"Loading kernel-module 'sermouse' ..."
233 niro 479 add_modconf 'sermouse'
234 niro 2 fi
235 niro 71
236 niro 148 # kernel 2.4
237 niro 2 #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 niro 479 add_x11conf " Option \"Device\" \"${DEVICE}\""
244 niro 2 else
245 niro 479 add_x11conf ' Option "Device" "/dev/mouse"'
246 niro 2 fi
247 niro 71
248 niro 479 add_x11conf ' Option "Resolution" "1200"'
249 niro 71
250 niro 479 [[ ${XMOUSETYPE} = IMPS/2 ]] && add_x11conf ' Option "ZAxisMapping" "4 5"'
251 niro 71
252 niro 479 add_x11conf 'EndSection'
253 niro 71
254 niro 148 # to be safe
255 niro 2 unset MOUSETYPE XMOUSETYPE FULLNAME DEVICE
256 niro 71
257    
258 niro 148 # vnc keyboard && mouse
259     if [[ ${HAS_VNC} = yes ]]
260 niro 2 then
261 niro 479 add_x11conf ''
262     add_x11conf 'Section "InputDevice"'
263     add_x11conf ' Identifier "vncKeyboard"'
264     add_x11conf ' Driver "rfbkeyb"'
265     add_x11conf 'EndSection'
266 niro 2
267 niro 479 add_x11conf ''
268     add_x11conf 'Section "InputDevice"'
269     add_x11conf ' Identifier "vncMouse"'
270     add_x11conf ' Driver "rfbmouse"'
271     add_x11conf 'EndSection'
272 niro 2 fi
273    
274 niro 71
275 niro 148 # monitor
276 niro 479 add_x11conf ''
277 niro 11
278 niro 148 # using knoppix ddcxinfo
279 niro 479 if [[ -x /sbin/ddcxinfo-knoppix ]]
280 niro 11 then
281     ddcxinfo-knoppix -monitor >> ${xfconfig}
282     else
283 niro 148 # some conservative default values
284 niro 479 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 niro 11 fi
291 niro 71
292 niro 148 # vga
293     # to be safe
294 niro 2 local XSERVER XMODULE XDESC
295 niro 71
296 niro 148 # get config
297 niro 2 [ -f /etc/sysconfig/hwsetup/xserver ] && source /etc/sysconfig/hwsetup/xserver
298 niro 71
299 niro 479 add_x11conf ''
300     add_x11conf 'Section "Device"'
301     add_x11conf ' Identifier "vga0"'
302 niro 71
303 niro 479 if [[ -n ${XMODULE} ]]
304 niro 2 then
305 niro 11 # vmware module has some probs with fb consoles
306     # very dirty glyphes appear, so we use vesa instead
307 niro 221 [[ ${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 niro 479 add_modconf 'intel-agp'
313 niro 221
314 niro 2 echo -e ${COLOREDSTAR}"Video: ${XDESC}"
315     echo -e ${COLOREDSTAR}"Video module: ${XMODULE}"
316 niro 479 add_x11conf " Driver \"${XMODULE}\""
317 niro 2 else
318     echo -e ${COLOREDSTAR}"Video unknown, trying to use the standard 'vesa' module ..."
319 niro 479 add_x11conf ' Driver "vesa"'
320 niro 2 fi
321    
322 niro 479 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 niro 148 # vnc server options
331     if [[ ${HAS_VNC} = yes ]]
332 niro 2 then
333 niro 479 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 niro 2 fi
350    
351 niro 479 add_x11conf 'EndSection'
352 niro 148 # to be safe
353 niro 2 unset XSERVER XMODULE XDESC
354 niro 71
355    
356 niro 148 # screens
357 niro 479 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 niro 71
380    
381 niro 148 # server layout
382 niro 479 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 niro 2
389 niro 148 # load vnc keyboard && mouse
390     if [[ ${HAS_VNC} = yes ]]
391 niro 2 then
392 niro 479 add_x11conf ' InputDevice "vncMouse" "ExtraPointer"'
393     add_x11conf ' InputDevice "vncKeyboard" "ExtraKeyboard"'
394 niro 2 fi
395    
396 niro 479 if [[ ${USE_AIGLX} = yes ]]
397     then
398     add_x11conf ''
399     add_x11conf ' Option "AIGLX" "true"'
400     add_x11conf ''
401     fi
402    
403 niro 71
404 niro 479 add_x11conf 'EndSection'
405 niro 71
406 niro 479
407 niro 148 # dri (here disabled, use default of xserver)
408 niro 479 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 niro 2 }
422    
423    
424 niro 479 run_hwdetection()
425     {
426 niro 2 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 niro 148 # cleaning up old data-crap
431 niro 2 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 niro 148 # clean up modules
440 niro 2 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 niro 148 # load module for parallel printing if exists
448     if [ -e /lib/modules/$(uname -r)/kernel/drivers/char/lp.o ]
449 niro 2 then
450 niro 479 add_modconf 'lp'
451 niro 221 fi
452 niro 2
453 niro 148 # get what hwsetup has found
454 niro 2 if [ -f /etc/sysconfig/hwsetup/knoppix ]
455     then
456     source /etc/sysconfig/hwsetup/knoppix
457     fi
458    
459 niro 148 # network setup (dhcp)
460 niro 479 if [[ -n ${NETCARD_DRIVER} ]]
461 niro 2 then
462     echo -e ${COLOREDSTAR}"Network eth0: ${NETCARD_FULLNAME}"
463     echo -e ${COLOREDSTAR}"Network module: ${NETCARD_DRIVER}"
464 niro 479 add_modconf "${NETCARD_DRIVER}"
465 niro 2 evaluate_retval
466     fi
467    
468 niro 148 # sound setup
469 niro 479 if [[ -n ${SOUND_DRIVER} ]]
470 niro 2 then
471     echo -e ${COLOREDSTAR}"Sound (${SOUND_FULLNAME}) found"
472     echo -e ${COLOREDSTAR}"Sound module: ${SOUND_DRIVER}"
473 niro 479 add_modconf "${SOUND_DRIVER}"
474 niro 2 evaluate_retval
475     fi
476    
477 niro 148 # write default xfree-config
478 niro 2 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 niro 148 # we wouldn't start hwdetection if settings where imported (alx-only)
491 niro 2 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 niro 148
500 niro 2 restart)
501     $0 start
502     ;;
503 niro 148
504 niro 2 *)
505     echo "Usage: $0 {start|restart}"
506     exit 1
507     ;;
508     esac

Properties

Name Value
svn:executable *