Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 707 - (hide annotations) (download)
Thu Apr 10 20:26:46 2008 UTC (16 years, 1 month ago) by niro
File size: 12931 byte(s)
-fixed modules.autoload

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

Properties

Name Value
svn:executable *