--- trunk/magellan-initscripts/etc/rc.d/init.d/hwdetect 2007/04/23 16:41:45 478 +++ trunk/magellan-initscripts/etc/rc.d/init.d/hwdetect 2007/04/25 13:26:33 479 @@ -1,5 +1,5 @@ #!/bin/bash -# $Header: /home/cvsd/magellan-cvs/magellan-src/magellan-initscripts/etc/rc.d/init.d/hwdetect,v 1.5 2005-08-31 21:46:24 niro Exp $ +# $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 $ # note: must be startet before /etc/rc.d/init.d/modules !!! @@ -12,10 +12,38 @@ #%before: #%after: -write_x11_config() { +add_x11conf() +{ + local var="$1" + echo "${var}" >> ${xfconfig} || die "add_x11conf() adding \$var" +} + +add_modconf() +{ + local var="$1" + echo "${var}" >> /etc/modules.autoload.d/kernel-$(kernel_major_version) || die "add_modconf() adding \$var" +} + +write_x11_config() +{ local xserver local xfconfig + local HAS_VNC + local USE_AIGLX + + local rgbpath + local fontpath + local modulespath + local i + + # check command line for params + for i in $(cat /proc/cmdline) + do + case "${i}" in + aiglx) USE_AIGLX=yes;; + esac + done # xfree or xorg ? xserver="$(readlink /usr/X11R6/bin/X)" @@ -34,8 +62,9 @@ esac # have we vnc support ? - if [ -f /usr/X11R6/lib/modules/vnc.so ] || \ - [ -f /usr/X11R6/lib/modules/extensions/vnc.so ] + if [[ -f /usr/X11R6/lib/modules/vnc.so ]] || + [[ -f /usr/X11R6/lib/modules/extensions/vnc.so ]] || + [[ -f /usr/lib/xorg/modules/extensions/vnc.so ]] then HAS_VNC="yes" else @@ -59,100 +88,102 @@ # write modules - echo '' >> ${xfconfig} - echo 'Section "Module"' >> ${xfconfig} - echo ' Load "dbe"' >> ${xfconfig} - echo ' SubSection "extmod"' >> ${xfconfig} - echo ' Option "omit xfree86-dga"' >> ${xfconfig} - echo ' EndSubSection' >> ${xfconfig} - echo ' Load "type1"' >> ${xfconfig} - echo ' Load "speedo"' >> ${xfconfig} - echo ' Load "freetype"' >> ${xfconfig} - echo '# Load "xtt"' >> ${xfconfig} - echo '# Load "glx"' >> ${xfconfig} - echo ' Load "dri"' >> ${xfconfig} + add_x11conf '' + add_x11conf 'Section "Module"' + add_x11conf ' Load "dbe"' + add_x11conf ' SubSection "extmod"' + add_x11conf ' Option "omit xfree86-dga"' + add_x11conf ' EndSubSection' + add_x11conf ' Load "type1"' + add_x11conf ' Load "speedo"' + add_x11conf ' Load "freetype"' + add_x11conf '# Load "xtt"' + if [[ ${USE_AIGLX} = yes ]] + then + add_x11conf ' Load "glx"' + else + add_x11conf '# Load "glx"' + fi + add_x11conf ' Load "dri"' - [[ ${HAS_VNC} = yes ]] && echo ' Load "vnc"' >> ${xfconfig} + [[ ${HAS_VNC} = yes ]] && add_x11conf ' Load "vnc"' - echo 'EndSection' >> ${xfconfig} + add_x11conf 'EndSection' + # enable composite for aiglx + if [[ ${USE_AIGLX} = yes ]] + then + add_x11conf 'Section "Extensions"' + add_x11conf ' Option "Composite" "Enable"' + add_x11conf 'EndSection' + fi - # fonts - echo '' >> ${xfconfig} - echo 'Section "Files"' >> ${xfconfig} - echo ' RgbPath "/usr/X11R6/lib/X11/rgb"' >> ${xfconfig} + # fonts case ${xserver} in Xorg) - echo ' FontPath "/usr/share/fonts/local/"' >> ${xfconfig} - echo ' FontPath "/usr/share/fonts/misc/"' >> ${xfconfig} - echo ' FontPath "/usr/share/fonts/75dpi/:unscaled"' >> ${xfconfig} - echo ' FontPath "/usr/share/fonts/100dpi/:unscaled"' >> ${xfconfig} - echo ' #prevents slow startup when disabled -> speedo, type1' >> ${xfconfig} - echo ' #FontPath "/usr/share/fonts/Speedo/"' >> ${xfconfig} - echo ' #FontPath "/usr/share/fonts/Type1/"' >> ${xfconfig} - echo ' FontPath "/usr/share/fonts/TrueType/"' >> ${xfconfig} - echo ' FontPath "/usr/share/fonts/freefont/"' >> ${xfconfig} - echo ' FontPath "/usr/share/fonts/75dpi/"' >> ${xfconfig} - echo ' FontPath "/usr/share/fonts/100dpi/"' >> ${xfconfig} + fontpath="/usr/share/fonts" + rgbpath="/usr/share/X11" + modulespath="/usr/lib/xorg/modules" ;; XFree86) - echo ' FontPath "/usr/X11R6/lib/X11/fonts/local/"' >> ${xfconfig} - echo ' FontPath "/usr/X11R6/lib/X11/fonts/misc/"' >> ${xfconfig} - echo ' FontPath "/usr/X11R6/lib/X11/fonts/75dpi/:unscaled"' >> ${xfconfig} - echo ' FontPath "/usr/X11R6/lib/X11/fonts/100dpi/:unscaled"' >> ${xfconfig} - echo ' #prevents slow startup when disabled -> speedo, type1' >> ${xfconfig} - echo ' #FontPath "/usr/X11R6/lib/X11/fonts/Speedo/"' >> ${xfconfig} - echo ' #FontPath "/usr/X11R6/lib/X11/fonts/Type1/"' >> ${xfconfig} - echo ' FontPath "/usr/X11R6/lib/X11/fonts/TrueType/"' >> ${xfconfig} - echo ' FontPath "/usr/X11R6/lib/X11/fonts/freefont/"' >> ${xfconfig} - echo ' FontPath "/usr/X11R6/lib/X11/fonts/75dpi/"' >> ${xfconfig} - echo ' FontPath "/usr/X11R6/lib/X11/fonts/100dpi/"' >> ${xfconfig} + fontpath="/usr/X11R6/lib/X11/fonts" + rgbpath="/usr/X11R6/lib/X11" + modulespath="/usr/X11R6/lib/modules" ;; esac - echo '# ModulePath "/usr/X11R6/lib/modules"' >> ${xfconfig} - echo 'EndSection' >> ${xfconfig} - + add_x11conf '' + add_x11conf 'Section "Files"' + add_x11conf " RgbPath \"${rgbpath}/rgb\"" + add_x11conf " FontPath \"${fontpath}/local/\"" + add_x11conf " FontPath \"${fontpath}/misc/\"" + add_x11conf " FontPath \"${fontpath}/75dpi/:unscaled\"" + add_x11conf " FontPath \"${fontpath}/100dpi/:unscaled\"" + add_x11conf ' #prevents slow startup when disabled -> speedo, type1' + add_x11conf " #FontPath \"${fontpath}/Speedo/\"" + add_x11conf " #FontPath \"${fontpath}/fonts/Type1/\"" + add_x11conf " FontPath \"${fontpath}/fonts/TrueType/\"" + add_x11conf " FontPath \"${fontpath}/freefont/\"" + add_x11conf " FontPath \"${fontpath}/75dpi/\"" + add_x11conf " FontPath \"${fontpath}/100dpi/\"" + add_x11conf "# ModulePath \"${modulespath}\"" + add_x11conf 'EndSection' # xserver flags - echo '' >> ${xfconfig} - echo 'Section "ServerFlags"' >> ${xfconfig} - echo '# Option "DontVTSwitch"' >> ${xfconfig} - echo '# Option "DontZap"' >> ${xfconfig} - echo '# Option "Dont Zoom"' >> ${xfconfig} - echo 'EndSection' >> ${xfconfig} + add_x11conf '' + add_x11conf 'Section "ServerFlags"' + add_x11conf '# Option "DontVTSwitch"' + add_x11conf '# Option "DontZap"' + add_x11conf '# Option "Dont Zoom"' + add_x11conf 'EndSection' # keyboard - echo '' >> ${xfconfig} - echo 'Section "InputDevice"' >> ${xfconfig} - echo ' Identifier "Keyboard1"' >> ${xfconfig} + add_x11conf '' + add_x11conf 'Section "InputDevice"' + add_x11conf ' Identifier "Keyboard1"' case ${xserver} in - Xorg) - echo ' Driver "kbd"' >> ${xfconfig} - ;; - XFree86) - echo ' Driver "Keyboard"' >> ${xfconfig} - ;; + Xorg) add_x11conf ' Driver "kbd"' ;; + XFree86) add_x11conf ' Driver "Keyboard"' ;; esac - echo ' Option "AutoRepeat" "500 30"' >> ${xfconfig} - echo '# Option "Xleds" "1 2 3"' >> ${xfconfig} + add_x11conf ' Option "AutoRepeat" "500 30"' + add_x11conf '# Option "Xleds" "1 2 3"' case ${xserver} in Xorg) - echo ' Option "XkbRules" "xorg"' >> ${xfconfig} + add_x11conf ' Option "XkbRules" "xorg"' ;; XFree86) - echo ' Option "XkbRules" "xfree86"' >> ${xfconfig} + add_x11conf ' Option "XkbRules" "xfree86"' ;; esac - echo ' Option "XkbModel" "pc104"' >> ${xfconfig} - echo ' Option "XkbLayout" "de"' >> ${xfconfig} - echo 'EndSection' >> ${xfconfig} + add_x11conf ' Option "XkbModel" "pc104"' + add_x11conf ' Option "XkbLayout" "de"' + add_x11conf 'EndSection' # mouse @@ -161,31 +192,31 @@ # get config [ -f /etc/sysconfig/hwsetup/mouse ] && source /etc/sysconfig/hwsetup/mouse - echo '' >> ${xfconfig} - echo 'Section "InputDevice"' >> ${xfconfig} - echo ' Identifier "Mouse1"' >> ${xfconfig} - echo ' Driver "mouse"' >> ${xfconfig} + add_x11conf '' + add_x11conf 'Section "InputDevice"' + add_x11conf ' Identifier "Mouse1"' + add_x11conf ' Driver "mouse"' - if [ -n "${XMOUSETYPE}" ] + if [[ -n ${XMOUSETYPE} ]] then - echo " Option \"Protocol\" \"${XMOUSETYPE}\"" >> ${xfconfig} + add_x11conf " Option \"Protocol\" \"${XMOUSETYPE}\"" else - echo ' Option "Protocol" "PS/2"' >> ${xfconfig} + add_x11conf ' Option "Protocol" "PS/2"' fi - if [ -n "${DEVICE}" ] + if [[ -n ${DEVICE} ]] then # show what we got echo -e ${COLOREDSTAR}"Mouse (${MOUSE_FULLNAME} found at ${MOUSE_DEVICE}" # is there any mouse module than try to load it - if [ "${MOUSETYPE}" = "ps2" ] + if [[ ${MOUSETYPE} = ps2 ]] then # kernel 2.6 if [ -f /lib/modules/$(uname -r)/kernel/drivers/input/mouse/psmouse.ko ] then echo -e ${COLOREDSTAR}"Loading kernel-module 'psmouse' ..." - echo "psmouse" >> /etc/modules.autoload.d/kernel-$(kernel_major_version) + add_modconf 'psmouse' fi # kernel 2.4 @@ -199,7 +230,7 @@ if [ -a /lib/modules/$(uname -r)/kernel/drivers/input/mouse/sermouse.ko ] then echo -e ${COLOREDSTAR}"Loading kernel-module 'sermouse' ..." - echo "sermouse" >> /etc/modules.autoload.d/kernel-$(kernel_major_version) + add_modconf 'sermouse' fi # kernel 2.4 @@ -209,16 +240,16 @@ # echo "psmouse" >> /etc/modules.autoload.d/kernel-$(kernel_major_version) #fi fi - echo " Option \"Device\" \"${DEVICE}\"" >> ${xfconfig} + add_x11conf " Option \"Device\" \"${DEVICE}\"" else - echo ' Option "Device" "/dev/mouse"' >> ${xfconfig} + add_x11conf ' Option "Device" "/dev/mouse"' fi - echo ' Option "Resolution" "1200"' >> ${xfconfig} + add_x11conf ' Option "Resolution" "1200"' - [[ ${XMOUSETYPE} = IMPS/2 ]] && echo ' Option "ZAxisMapping" "4 5"' >> ${xfconfig} + [[ ${XMOUSETYPE} = IMPS/2 ]] && add_x11conf ' Option "ZAxisMapping" "4 5"' - echo 'EndSection' >> ${xfconfig} + add_x11conf 'EndSection' # to be safe unset MOUSETYPE XMOUSETYPE FULLNAME DEVICE @@ -227,35 +258,35 @@ # vnc keyboard && mouse if [[ ${HAS_VNC} = yes ]] then - echo '' >> ${xfconfig} - echo 'Section "InputDevice"' >> ${xfconfig} - echo ' Identifier "vncKeyboard"' >> ${xfconfig} - echo ' Driver "rfbkeyb"' >> ${xfconfig} - echo 'EndSection' >> ${xfconfig} - - echo '' >> ${xfconfig} - echo 'Section "InputDevice"' >> ${xfconfig} - echo ' Identifier "vncMouse"' >> ${xfconfig} - echo ' Driver "rfbmouse"' >> ${xfconfig} - echo 'EndSection' >> ${xfconfig} + add_x11conf '' + add_x11conf 'Section "InputDevice"' + add_x11conf ' Identifier "vncKeyboard"' + add_x11conf ' Driver "rfbkeyb"' + add_x11conf 'EndSection' + + add_x11conf '' + add_x11conf 'Section "InputDevice"' + add_x11conf ' Identifier "vncMouse"' + add_x11conf ' Driver "rfbmouse"' + add_x11conf 'EndSection' fi # monitor - echo '' >> ${xfconfig} + add_x11conf '' # using knoppix ddcxinfo - if [ -x "/sbin/ddcxinfo-knoppix" ] + if [[ -x /sbin/ddcxinfo-knoppix ]] then ddcxinfo-knoppix -monitor >> ${xfconfig} else # some conservative default values - echo 'Section "Monitor"' >> ${xfconfig} - echo ' Identifier "mon0"' >> ${xfconfig} - echo ' HorizSync 28 - 96' >> ${xfconfig} - echo ' VertRefresh 50-60' >> ${xfconfig} - echo ' Option "DPMS"' >> ${xfconfig} - echo 'EndSection' >> ${xfconfig} + add_x11conf 'Section "Monitor"' + add_x11conf ' Identifier "mon0"' + add_x11conf ' HorizSync 28 - 96' + add_x11conf ' VertRefresh 50-60' + add_x11conf ' Option "DPMS"' + add_x11conf 'EndSection' fi # vga @@ -265,11 +296,11 @@ # get config [ -f /etc/sysconfig/hwsetup/xserver ] && source /etc/sysconfig/hwsetup/xserver - echo '' >> ${xfconfig} - echo 'Section "Device"' >> ${xfconfig} - echo ' Identifier "vga0"' >> ${xfconfig} + add_x11conf '' + add_x11conf 'Section "Device"' + add_x11conf ' Identifier "vga0"' - if [ -n "${XMODULE}" ] + if [[ -n ${XMODULE} ]] then # vmware module has some probs with fb consoles # very dirty glyphes appear, so we use vesa instead @@ -278,94 +309,120 @@ # i810 needs the intel-agp kernel module to run probably [[ ${XMODULE} = i810 ]] && \ [ -f /lib/modules/$(uname -r)/kernel/drivers/char/agp/intel-agp.ko ] && \ - echo "intel-agp" >> /etc/modules.autoload.d/kernel-$(kernel_major_version) + add_modconf 'intel-agp' echo -e ${COLOREDSTAR}"Video: ${XDESC}" echo -e ${COLOREDSTAR}"Video module: ${XMODULE}" - echo " Driver \"${XMODULE}\"" >> ${xfconfig} + add_x11conf " Driver \"${XMODULE}\"" else echo -e ${COLOREDSTAR}"Video unknown, trying to use the standard 'vesa' module ..." - echo ' Driver "vesa"' >> ${xfconfig} + add_x11conf ' Driver "vesa"' + fi + + if [[ ${USE_AIGLX} = yes ]] + then + add_x11conf '' + [[ ${XMODULE} = radeon ]] && add_x11conf ' Option "XAANoOffscreenPixmaps" "true"' + add_x11conf ' Option "DRI" "true"' + add_x11conf '' fi # vnc server options if [[ ${HAS_VNC} = yes ]] then - echo '' >> ${xfconfig} - echo ' # rfb options' >> ${xfconfig} - echo ' Option "rfbauth" "/root/.vnc/passwd"' >> ${xfconfig} - echo ' Option "rfbport" "5900"' >> ${xfconfig} - echo ' # Option "nevershared"' >> ${xfconfig} - echo ' Option "alwaysshared"' >> ${xfconfig} - echo ' Option "dontdisconnect"' >> ${xfconfig} - echo ' Option "httpdir" "/usr/share/vnc/classes"' >> ${xfconfig} - echo ' Option "httpport" "5800"' >> ${xfconfig} - echo ' # Option "useraccept"' >> ${xfconfig} - echo ' Option "usevnc"' >> ${xfconfig} - echo ' # Option "localhost"' >> ${xfconfig} - echo ' # Option "interface" "192.168.0.1"' >> ${xfconfig} - echo ' # Option "viewonly"' >> ${xfconfig} - echo ' # Option "loginauth"' >> ${xfconfig} - echo '' >> ${xfconfig} + add_x11conf '' + add_x11conf ' # rfb options' + add_x11conf ' Option "rfbauth" "/root/.vnc/passwd"' + add_x11conf ' Option "rfbport" "5900"' + add_x11conf ' # Option "nevershared"' + add_x11conf ' Option "alwaysshared"' + add_x11conf ' Option "dontdisconnect"' + add_x11conf ' Option "httpdir" "/usr/share/vnc/classes"' + add_x11conf ' Option "httpport" "5800"' + add_x11conf ' # Option "useraccept"' + add_x11conf ' Option "usevnc"' + add_x11conf ' # Option "localhost"' + add_x11conf ' # Option "interface" "192.168.0.1"' + add_x11conf ' # Option "viewonly"' + add_x11conf ' # Option "loginauth"' + add_x11conf '' fi - echo 'EndSection' >> ${xfconfig} + add_x11conf 'EndSection' # to be safe unset XSERVER XMODULE XDESC # screens - echo '' >> ${xfconfig} - echo 'Section "Screen"' >> ${xfconfig} - echo ' Identifier "Screen 1"' >> ${xfconfig} - echo ' Device "vga0"' >> ${xfconfig} - echo ' Monitor "Monitor0"' >> ${xfconfig} - echo ' DefaultDepth 16' >> ${xfconfig} - echo ' Subsection "Display"' >> ${xfconfig} - echo ' Depth 8' >> ${xfconfig} - echo ' Modes "1024x768"' >> ${xfconfig} - echo ' ViewPort 0 0' >> ${xfconfig} - echo ' EndSubsection' >> ${xfconfig} - echo ' Subsection "Display"' >> ${xfconfig} - echo ' Depth 16' >> ${xfconfig} - echo ' Modes "1024x768"' >> ${xfconfig} - echo ' ViewPort 0 0' >> ${xfconfig} - echo ' EndSubsection' >> ${xfconfig} - echo ' Subsection "Display"' >> ${xfconfig} - echo ' Depth 24' >> ${xfconfig} - echo ' Modes "1024x768"' >> ${xfconfig} - echo ' ViewPort 0 0' >> ${xfconfig} - echo ' EndSubsection' >> ${xfconfig} - echo 'EndSection' >> ${xfconfig} + add_x11conf '' + add_x11conf 'Section "Screen"' + add_x11conf ' Identifier "Screen 1"' + add_x11conf ' Device "vga0"' + add_x11conf ' Monitor "Monitor0"' + add_x11conf ' DefaultDepth 16' + add_x11conf ' Subsection "Display"' + add_x11conf ' Depth 8' + add_x11conf ' Modes "1024x768"' + add_x11conf ' ViewPort 0 0' + add_x11conf ' EndSubsection' + add_x11conf ' Subsection "Display"' + add_x11conf ' Depth 16' + add_x11conf ' Modes "1024x768"' + add_x11conf ' ViewPort 0 0' + add_x11conf ' EndSubsection' + add_x11conf ' Subsection "Display"' + add_x11conf ' Depth 24' + add_x11conf ' Modes "1024x768"' + add_x11conf ' ViewPort 0 0' + add_x11conf ' EndSubsection' + add_x11conf 'EndSection' # server layout - echo '' >> ${xfconfig} - echo 'Section "ServerLayout"' >> ${xfconfig} - echo ' Identifier "Simple Layout"' >> ${xfconfig} - echo ' Screen "Screen 1"' >> ${xfconfig} - echo ' InputDevice "Mouse1" "CorePointer"' >> ${xfconfig} - echo ' InputDevice "Keyboard1" "CoreKeyboard"' >> ${xfconfig} + add_x11conf '' + add_x11conf 'Section "ServerLayout"' + add_x11conf ' Identifier "Simple Layout"' + add_x11conf ' Screen "Screen 1"' + add_x11conf ' InputDevice "Mouse1" "CorePointer"' + add_x11conf ' InputDevice "Keyboard1" "CoreKeyboard"' # load vnc keyboard && mouse if [[ ${HAS_VNC} = yes ]] then - echo ' InputDevice "vncMouse" "ExtraPointer"' >> ${xfconfig} - echo ' InputDevice "vncKeyboard" "ExtraKeyboard"' >> ${xfconfig} + add_x11conf ' InputDevice "vncMouse" "ExtraPointer"' + add_x11conf ' InputDevice "vncKeyboard" "ExtraKeyboard"' + fi + + if [[ ${USE_AIGLX} = yes ]] + then + add_x11conf '' + add_x11conf ' Option "AIGLX" "true"' + add_x11conf '' fi + - echo 'EndSection' >> ${xfconfig} + add_x11conf 'EndSection' # dri (here disabled, use default of xserver) - echo '' >> ${xfconfig} - echo '# Section "DRI"' >> ${xfconfig} - echo '# Mode 0666' >> ${xfconfig} - echo '# EndSection' >> ${xfconfig} + add_x11conf '' + if [[ ${USE_AIGLX} = yes ]] + then + add_x11conf 'Section "DRI"' + add_x11conf ' Group 0' + add_x11conf ' Mode 0666' + add_x11conf 'EndSection' + else + add_x11conf '# Section "DRI"' + add_x11conf '# Group 0' + add_x11conf '# Mode 0666' + add_x11conf '# EndSection' + fi } -run_hwdetection() { +run_hwdetection() +{ echo -e ${COLOREDSTAR}"Hardware Autodetection started ..." echo -e ${COLOREDSTAR}"Prozessor: $(cat /proc/cpuinfo |grep "model name" | sed -e 's:model\ name*.*\: ::')" @@ -390,7 +447,7 @@ # load module for parallel printing if exists if [ -e /lib/modules/$(uname -r)/kernel/drivers/char/lp.o ] then - echo "lp" >> /etc/modules.autoload.d/kernel-$(kernel_major_version) + add_modconf 'lp' fi # get what hwsetup has found @@ -400,20 +457,20 @@ fi # network setup (dhcp) - if [ -n "${NETCARD_DRIVER}" ] + if [[ -n ${NETCARD_DRIVER} ]] then echo -e ${COLOREDSTAR}"Network eth0: ${NETCARD_FULLNAME}" echo -e ${COLOREDSTAR}"Network module: ${NETCARD_DRIVER}" - echo "${NETCARD_DRIVER}" >> /etc/modules.autoload.d/kernel-$(kernel_major_version) + add_modconf "${NETCARD_DRIVER}" evaluate_retval fi # sound setup - if [ -n "${SOUND_DRIVER}" ] + if [[ -n ${SOUND_DRIVER} ]] then echo -e ${COLOREDSTAR}"Sound (${SOUND_FULLNAME}) found" echo -e ${COLOREDSTAR}"Sound module: ${SOUND_DRIVER}" - echo "${SOUND_DRIVER}" >> /etc/modules.autoload.d/kernel-$(kernel_major_version) + add_modconf "${SOUND_DRIVER}" evaluate_retval fi