# Copyright (c) 2003 - 2006 - RZ Uni Freiburg # Copyright (c) 2006, 2007 - OpenSLX GmbH # # This program/file is free software distributed under the GPL version 2. # See http://openslx.org/COPYING # # If you have any feedback please consult http://openslx.org/feedback and # send your feedback to feedback@openslx.org # # General information about OpenSLX can be found under http://openslx.org # # Configuration functions for SuSE 10.2 which differ from functions defined # in general SuSE base definitions ... General changes should be done there, # version specific changes for the 10.2 go here. # display manager configuration config_kdm () { # use different kdmrc than default, since 10.2 in /opt/kde/... echo "XDMOPTIONS=\" -config ${D_KDMRCPATH}\"" \ >> /mnt/etc/sysconfig/displaymanager config_dm_entry yes # write configuration file with general config from /etc/functions config_kdm_template } # configure dbus (inter application communication for kde and gnome), hal # (hardware abstraction layer - used e.g. by powersaved), resmgr and # policykitd (resource manager/policykitd - the user gets permissions to # devices when loggin on) config_dreshal () { if [ "x$start_dreshal" = "xyes" ]; then local start=5 local stop=18 if [ -f /mnt/etc/${D_INITDIR}/dbus ] ; then strinfile "messagebus:" /mnt/etc/passwd || \ echo "messagebus:x:100:101:User for D-BUS:/var/run/dbus:/bin/false" \ >> /mnt/etc/passwd strinfile "messagebus:" /mnt/etc/group || \ echo "messagebus:!:101:" >> /mnt/etc/group testmkd /mnt/var/run/dbus # set permissions with userid echo -e "\tchown messagebus:messagebus /var/run/dbus 2>/dev/null" \ >>/mnt/etc/${D_INITDIR}/boot.slx rllinker "dbus" $start $stop fi if [ -f /mnt/etc/${D_INITDIR}/resmgr ] ; then testmkd /mnt/var/run/resmgr/classes start=$(($start + 1)) stop=$(($stop - 1)) rllinker "resmgr" $start $stop fi if [ -f /mnt/etc/${D_INITDIR}/policykitd ] ; then testmkd /mnt/var/run/polkit start=$(($start + 1)) stop=$(($stop - 1)) rllinker "policykitd" $start $stop fi if [ -f /mnt/etc/${D_INITDIR}/haldaemon ] ; then strinfile "haldaemon:" /mnt/etc/passwd || \ echo "haldaemon:x:105:103:User for haldaemon:/var/run/hal:/bin/false" \ >> /mnt/etc/passwd strinfile "haldaemon:" /mnt/etc/group || \ echo "haldaemon:!:103:" >> /mnt/etc/group testmkd /mnt/var/run/hal # set permissions with userid echo -e "\tchown haldaemon:haldaemon /var/run/hal 2>/dev/null" \ >>/mnt/etc/${D_INITDIR}/boot.slx start=$(($start + 1)) stop=$(($stop - 1)) rllinker "haldaemon" $start $stop fi fi } # config nfsv4 config_nfsv4 () { if [ "x$start_nfsv4" = "xyes" ]; then testmkd /mnt/var/lib/nfs/rpc_pipefs sed -e "s,NFS_SECURITY_GSS=.*,NFS_SECURITY_GSS=\"yes\"," \ -e "s,NFS4_SUPPORT=.*,NFS4_SUPPORT=\"yes\"," \ -i /mnt/etc/sysconfig/nfs echo -e "rpc_pipefs\t/var/lib/nfs/rpc_pipefs rpc_pipefs defaults\t 0 0\n\ nfsd\t\t/proc/fs/nfsd\tnfsd\t\tdefaults\t 0 0" >>/tmp/fstab echo -e "\t# stuff needed for nfsv4\n\tmount -t rpc_pipefs rpc_pipefs \ /var/lib/nfs/rpc_pipefs\n\tmount -t nfsd nfsd /proc/fs/nfsd" \ >>/mnt/etc/${D_INITDIR}/boot.slx # portmap is required for any NFS config_portmap rllinker "idmapd" 14 8 rllinker "gssd" 15 7 fi } # prepare virtual machine environment (vmware, vmplayer) config_vmware () { rllinker "vmware" 20 2 # during vmware sessions linux should not handle usb events/devices # vmplayer and recent versions of vmware do not need this hack if [ ! -x /mnt/usr/bin/vmplayer ] ; then testmkd /mnt/var/X11R6/bin echo '#!/bin/sh'> /mnt/var/X11R6/bin/vm-udev echo -e "# Script for blocking linux from handling usb \ devices\n# during vmware sessions. If you like to remove certain modules \ add them\n# to the list below - Dirk von Suchodoletz, \n\ STATE=1\nps aux|grep -i vmware|grep -v \"grep\" &>/dev/null && { STATE=0; \ /sbin/rmmod usb-storage &>/tmp/null; }\n\ [ x\$ACTION = xremove ] && { [ \$STATE = 0 ] && /sbin/rmmod usb-storage \ &>/dev/null; }\nexit \$STATE" >> /mnt/var/X11R6/bin/vm-udev chmod u+x /mnt/var/X11R6/bin/vm-udev echo -e "# special entry to block linux from reacting to usb events during \ running\n# vmware sessions, generated by $0 during initramfs\n# Dirk von \ Suchodoletz, \nSUBSYSTEM==\"usb\", ACTION==\"add\", \ PROGRAM=\"/var/X11R6/bin/vm-udev\", OPTIONS=\"ignore_device\"\n\ SUBSYSTEM==\"usb\", ACTION==\"remove\", PROGRAM=\"/var/X11R6/bin/vm-udev\"" \ >> /mnt/etc/udev/rules.d/01-udev-vm.rules fi } # set up keytable (function run in hwautocfg) keytable () { if [ -f /mnt/etc/${D_INITDIR}/kbd ] ; then # remove unneeded components from the startscript sed -e "/wanted keytable/,/^fi$/d;/load usb drivers/,/^esac$/d" \ -i /mnt/etc/${D_INITDIR}/kbd sed -e "s,KEYTABLE=.*,KEYTABLE=\"${KEYTABLE}\"," \ -i /mnt/etc/${D_SYSCONFDIR}/keyboard ln -sf /etc/${D_INITDIR}/kbd /mnt/etc/${D_INITBOOTD}/S01boot.kbd else error "$df_errkbd" nonfatal fi } # consolefont and language (function run in hwautocfg) consolefont () { sed -e "s,RC_LANG=.*,RC_LANG=\"${LANG}\" # added in initrd," \ -i /mnt/etc/${D_SYSCONFDIR}/language #echo -e "\tsetfont ${CONSOLE_FONT} >${LOGFILE} 2>&1\n" \ # >>/mnt/etc/${D_INITDIR}/boot.slx } # check the glx and tvout stuff and configure it checkgraphix () { # test if unionfs case "${XMODULE}" in radeon) # IGP is not supported with fglrx driver (at least not in some versions) # comment if it works properly ... if ! strinfile " IGP" /tmp/hwsetup.info ; then # check ${XDESC}/ hwsetup.info device string in Cards file and then # for needed components test -e /mnt/lib/modules/${KERNEL}/kernel/drivers/char/drm/fglrx.ko \ && test -e /mnt/usr/lib/xorg/modules/drivers/fglrx_drv.* && { XMODULE=fglrx # it only works for UnionFS enabled systems or put it in preload # but that might be not to clever :-) ln -sf /usr/lib/xorg/libGL.so.1.2 \ /mnt/usr/lib/libGL.so.1.2 2>/dev/null || \ echo -e "/usr/lib/xorg/libGL.so.1.2\n/usr/lib/xorg/libGL.so.1\n\ /usr/lib/xorg/libGL.so" >/mnt/etc/ld.so.preload } # check whether to enable tvout if [ -n "$tvout" ] && [ "$tvout" != "no" -a "$tvout" != "NO" ] ; then [ "$tvout" = "yes" ] && tvout="PAL-B" TVOUT='\tOption\t\t"TVFormat" "'$tvout TVOUT=$TVOUT'"\n\tOption\t\t"DesktopSetup" "horizontal"' fi fi ;; nv) # check for needed components test -e /mnt/lib/modules/${KERNEL}/kernel/drivers/char/drm/nvidia.ko \ && test -e /mnt/usr/X11R6/lib/modules/drivers/nvidia_drv.* && { gllib=$(ls /mnt/usr/X11R6/lib/libGL.so.1.0.* 2>/dev/null|sed -n "1p") if [ -n "$gllib" ] ; then ln -sf ${gllib#/mnt} /mnt/usr/lib/libGL.so.1 2>/dev/null # same for GLcore lib gllib=$(ls /mnt/usr/X11R6/lib/libGLcore.so.1.0.* 2>/dev/null|\ sed -n "1p") ln -sf ${gllib#/mnt} /mnt/usr/lib/libGLcore.so.1.0 2>/dev/null \ || fail=1 # load server modules (trick put the path before the official one) testmkd /mnt/etc/X11/modules ln -sf /usr/lib/xorg/modules/updates/extensions/libglx.so \ /mnt/etc/X11/modules/libglx.so || fail=1 ln -sf /usr/lib/xorg/modules/updates/drivers/nvidia_drv.so \ /mnt/etc/X11/modules/nvidia_drv.so || fail=1 [ -z $fail ] && XMODULE=nvidia # ensure proper permissions for nvidia devices echo -e "# nvidia stuff added by $0 in InitRamFS\nKERNEL==\"nvidia*|nvidiactl*\",\ GROUP=\"video\",MODE=\"0666\"" > /mnt/etc/udev/rules.d/10-nvidia-devperms.rules fi } ;; esac } # deprecated this way ... # Xorg variable settings. Lots of stuff changed from 10.1 to 10.2 displayvars () { Files='\tModulePath\t"/etc/X11/modules"\n \tModulePath\t"/usr/lib/xorg/modules"\n \tFontPath\t"/usr/share/fonts/misc/:unscaled"\n \tFontPath\t"/usr/share/fonts/75dpi/:unscaled"\n \tFontPath\t"/usr/share/fonts/100dpi/:unscaled"' synapticsdrv="/usr/lib/xorg/modules/input/synaptics_drv.so" }