Contents of /trunk/magellan-initscripts/etc/rc.d/init.d/hwdetect
Parent Directory | Revision Log
Revision 780 -
(show annotations)
(download)
Mon Dec 22 22:00:32 2008 UTC (15 years, 9 months ago) by niro
File size: 12935 byte(s)
Mon Dec 22 22:00:32 2008 UTC (15 years, 9 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 | * |