Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 780 - (show annotations) (download)
Mon Dec 22 22:00:32 2008 UTC (15 years, 4 months ago) by niro
File size: 12935 byte(s)
-fixed some minor issues

1 #!/bin/bash
2 # $Header: /home/cvsd/magellan-cvs/magellan-src/magellan-initscripts/etc/rc.d/init.d/hwdetect,v 1.8 2008-12-22 22:00:32 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 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 }
36
37 write_x11_config()
38 {
39 local xserver
40 local xfconfig
41
42 local HAS_VNC
43 local USE_AIGLX
44
45 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 # xfree or xorg ?
59 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 echo " Unkown xserver. aborting."
70 exit 1
71 ;;
72 esac
73
74 # have we vnc support ?
75 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 then
79 HAS_VNC="yes"
80 else
81 HAS_VNC="no"
82 fi
83
84 # show which xserver we going to use
85 echo -en ${COLOREDSTAR}"Using '${xserver}' as x11-server "
86
87 # show if we have vnc
88 if [[ ${HAS_VNC} = yes ]]
89 then
90 echo "with vnc enabled ..."
91 else
92 echo "..."
93 fi
94
95 # create a new clear xfconfig file
96 echo '# Generated with hwdetect, part of Magellan-Linux initscripts.' > ${xfconfig}
97 echo '' >> ${xfconfig}
98
99
100 # write modules
101 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
119 [[ ${HAS_VNC} = yes ]] && add_x11conf ' Load "vnc"'
120
121 add_x11conf 'EndSection'
122
123 # 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
131
132 # fonts
133 case ${xserver} in
134 Xorg)
135 fontpath="/usr/share/fonts"
136 rgbpath="/usr/share/X11"
137 modulespath="/usr/lib/xorg/modules"
138 ;;
139 XFree86)
140 fontpath="/usr/X11R6/lib/X11/fonts"
141 rgbpath="/usr/X11R6/lib/X11"
142 modulespath="/usr/X11R6/lib/modules"
143 ;;
144 esac
145
146 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
163 # xserver flags
164 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
171
172 # keyboard
173 add_x11conf ''
174 add_x11conf 'Section "InputDevice"'
175 add_x11conf ' Identifier "Keyboard1"'
176
177 case ${xserver} in
178 Xorg) add_x11conf ' Driver "kbd"' ;;
179 XFree86) add_x11conf ' Driver "Keyboard"' ;;
180 esac
181
182 add_x11conf ' Option "AutoRepeat" "500 30"'
183 add_x11conf '# Option "Xleds" "1 2 3"'
184
185 case ${xserver} in
186 Xorg)
187 add_x11conf ' Option "XkbRules" "xorg"'
188 ;;
189 XFree86)
190 add_x11conf ' Option "XkbRules" "xfree86"'
191 ;;
192 esac
193
194 add_x11conf ' Option "XkbModel" "pc104"'
195 add_x11conf ' Option "XkbLayout" "de"'
196 add_x11conf 'EndSection'
197
198
199 # mouse
200 # to be safe
201 local MOUSETYPE XMOUSETYPE FULLNAME DEVICE
202 # get config
203 [ -f /etc/sysconfig/hwsetup/mouse ] && source /etc/sysconfig/hwsetup/mouse
204
205 add_x11conf ''
206 add_x11conf 'Section "InputDevice"'
207 add_x11conf ' Identifier "Mouse1"'
208 add_x11conf ' Driver "mouse"'
209
210 if [[ -n ${XMOUSETYPE} ]]
211 then
212 add_x11conf " Option \"Protocol\" \"${XMOUSETYPE}\""
213 else
214 add_x11conf ' Option "Protocol" "PS/2"'
215 fi
216
217 if [[ -n ${DEVICE} ]]
218 then
219 # show what we got
220 echo -e ${COLOREDSTAR}"Mouse (${MOUSE_FULLNAME} found at ${MOUSE_DEVICE}"
221
222 # is there any mouse module than try to load it
223 if [[ ${MOUSETYPE} = ps2 ]]
224 then
225 # kernel 2.6
226 if [ -f /lib/modules/$(uname -r)/kernel/drivers/input/mouse/psmouse.ko ]
227 then
228 echo -e ${COLOREDSTAR}"Loading kernel-module 'psmouse' ..."
229 add_modconf 'psmouse'
230 fi
231
232 # kernel 2.4
233 #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 # kernel 2.6
240 if [ -a /lib/modules/$(uname -r)/kernel/drivers/input/mouse/sermouse.ko ]
241 then
242 echo -e ${COLOREDSTAR}"Loading kernel-module 'sermouse' ..."
243 add_modconf 'sermouse'
244 fi
245
246 # kernel 2.4
247 #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 add_x11conf " Option \"Device\" \"${DEVICE}\""
254 else
255 add_x11conf ' Option "Device" "/dev/mouse"'
256 fi
257
258 add_x11conf ' Option "Resolution" "1200"'
259
260 [[ ${XMOUSETYPE} = IMPS/2 ]] && add_x11conf ' Option "ZAxisMapping" "4 5"'
261
262 add_x11conf 'EndSection'
263
264 # to be safe
265 unset MOUSETYPE XMOUSETYPE FULLNAME DEVICE
266
267
268 # vnc keyboard && mouse
269 if [[ ${HAS_VNC} = yes ]]
270 then
271 add_x11conf ''
272 add_x11conf 'Section "InputDevice"'
273 add_x11conf ' Identifier "vncKeyboard"'
274 add_x11conf ' Driver "rfbkeyb"'
275 add_x11conf 'EndSection'
276
277 add_x11conf ''
278 add_x11conf 'Section "InputDevice"'
279 add_x11conf ' Identifier "vncMouse"'
280 add_x11conf ' Driver "rfbmouse"'
281 add_x11conf 'EndSection'
282 fi
283
284
285 # monitor
286 add_x11conf ''
287
288 # using knoppix ddcxinfo
289 if [[ -x /sbin/ddcxinfo-knoppix ]]
290 then
291 ddcxinfo-knoppix -monitor >> ${xfconfig}
292 else
293 # some conservative default values
294 add_x11conf 'Section "Monitor"'
295 add_x11conf ' Identifier "Monitor0"'
296 add_x11conf ' HorizSync 28 - 96'
297 add_x11conf ' VertRefresh 50-60'
298 add_x11conf ' Option "DPMS"'
299 add_x11conf 'EndSection'
300 fi
301
302 # vga
303 # to be safe
304 local XSERVER XMODULE XDESC
305
306 # get config
307 [ -f /etc/sysconfig/hwsetup/xserver ] && source /etc/sysconfig/hwsetup/xserver
308
309 add_x11conf ''
310 add_x11conf 'Section "Device"'
311 add_x11conf ' Identifier "vga0"'
312
313 if [[ -n ${XMODULE} ]]
314 then
315 # vmware module has some probs with fb consoles
316 # very dirty glyphes appear, so we use vesa instead
317 #[[ ${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 add_modconf 'intel-agp'
323
324 echo -e ${COLOREDSTAR}"Video: ${XDESC}"
325 echo -e ${COLOREDSTAR}"Video module: ${XMODULE}"
326 add_x11conf " Driver \"${XMODULE}\""
327 else
328 echo -e ${COLOREDSTAR}"Video unknown, trying to use the standard 'vesa' module ..."
329 add_x11conf ' Driver "vesa"'
330 fi
331
332 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 # vnc server options
341 if [[ ${HAS_VNC} = yes ]]
342 then
343 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 fi
360
361 add_x11conf 'EndSection'
362 # to be safe
363 unset XSERVER XMODULE XDESC
364
365
366 # screens
367 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
390
391 # server layout
392 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
399 # load vnc keyboard && mouse
400 if [[ ${HAS_VNC} = yes ]]
401 then
402 add_x11conf ' InputDevice "vncMouse" "ExtraPointer"'
403 add_x11conf ' InputDevice "vncKeyboard" "ExtraKeyboard"'
404 fi
405
406 if [[ ${USE_AIGLX} = yes ]]
407 then
408 add_x11conf ''
409 add_x11conf ' Option "AIGLX" "true"'
410 add_x11conf ''
411 fi
412
413
414 add_x11conf 'EndSection'
415
416
417 # dri (here disabled, use default of xserver)
418 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 }
432
433
434 run_hwdetection()
435 {
436 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 # cleaning up old data-crap
441 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 # clean up modules
450 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 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
463 # load module for parallel printing if exists
464 if [ -e /lib/modules/$(uname -r)/kernel/drivers/char/lp.o ]
465 then
466 add_modconf 'lp'
467 fi
468
469 # get what hwsetup has found
470 if [ -f /etc/sysconfig/hwsetup/knoppix ]
471 then
472 source /etc/sysconfig/hwsetup/knoppix
473 fi
474
475 # network setup (dhcp)
476 if [[ -n ${NETCARD_DRIVER} ]]
477 then
478 echo -e ${COLOREDSTAR}"Network eth0: ${NETCARD_FULLNAME}"
479 echo -e ${COLOREDSTAR}"Network module: ${NETCARD_DRIVER}"
480 add_modconf "${NETCARD_DRIVER}"
481 evaluate_retval
482 fi
483
484 # sound setup
485 if [[ -n ${SOUND_DRIVER} ]]
486 then
487 echo -e ${COLOREDSTAR}"Sound (${SOUND_FULLNAME}) found"
488 echo -e ${COLOREDSTAR}"Sound module: ${SOUND_DRIVER}"
489 add_modconf "${SOUND_DRIVER}"
490 evaluate_retval
491 fi
492
493 # write default xfree-config
494 echo -e ${COLOREDSTAR}"Generating x11 configuration ..."
495 write_x11_config
496 evaluate_retval
497 }
498
499 ########### main part starts here ##############
500
501 source /etc/conf.d/rc
502 source ${rc_functions}
503
504 case $1 in
505 start)
506 # we wouldn't start hwdetection if settings where imported (alx-only)
507 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
516 restart)
517 $0 start
518 ;;
519
520 *)
521 echo "Usage: $0 {start|restart}"
522 exit 1
523 ;;
524 esac

Properties

Name Value
svn:executable *