summaryrefslogblamecommitdiffstats
path: root/initramfs/distro-specs/suse/functions-10.2
blob: 23e360767206e2e1d29618eb3ade561aef09795e (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11










                                                                         
                                                                           

                                                                             
 
                               
               
                                                              
                                                    
                                      
                   
                                                                  

                   
                                                                         


                                                                         
                   
                                       

               








                                                                           
                                      
                                


                                               


                                  


                                                   


                                      









                                                                             
                                      


                                     


    

                 


                                                            

                                                    
                                                                           
                                                           

                                                                       
                                

                                   

                        
  
 

                                                        
                      




















                                                                              
                                             
             









                                                                   





                                                              
                                                         
                                   






                                                




















                                                                            







                                                                             
                                                                  


                                                                        
                                                                          


                                                                            
                                                                     
                                                    
                                                                      










                                                                                            
                         






                                                                 
                                                           
 
# 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}/kdmrc\"" \
  >> /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, <dvs@OpenSLX.com>\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, <dvs@OpenSLX.com>\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"
}