summaryrefslogblamecommitdiffstats
path: root/initramfs/initrd-stuff/bin/servconfig
blob: 0fa0d395422ec024529f474605c907d47020a6f6 (plain) (tree)
1
2
3
4
5
6
7
8
9
10









                                                                         
 
                                                                       
                                                                       
                                                  
 
                                                                             

                                         

                                                                   
               




                                                                      
                          
                                    
                                  
 




                                                                     
        
 
                                                                             
                                                               





                                                                        
 


                                                                             

                                                               
                    
                                                                      
 
                                                             
                                                             


                                                                       
 
                                                            



                                         















                                                                     
                                                          

                
                                                                             
                                                                            
          









                                  
                                                                          



                                                                             


                                                               
                                                          












                                                                      
                             
                         


         
                                    

                                                             

      



                                                                   

    
 
                                                                             



                                                                            


                                     
 
                                                                             








                                                                      
                                                                          










                                                            
                                                                             


                                                                     
            
 
                                                                             
                                            
             
 
                                                                             
                                
                                   


                                                                            

  
                                                                             

                              
                                                         
          
 
                                                                   
                                                
           

                                                  
 
                                                                     
             
 

                                                                    
                                                               
              

                                                            
           
 
                       
                    

                                                        
                                            



                                                                        


                                                                       
  





                                                                
                                                           
                                                                

                                         



                                                         
                                                                    
                                   

                                                                        


                                               
                
    



                              
                                                                             


                                               
                                                           
                                                    
                           
                                   
                                              



                                                   
                                                         
                              
          
 


                                                                    
           

                                          
           
 


                        
                       
                   
            
    
 
                                                                             






                                                                 
                                                                      


            
                                                                             


                                                        
                                                                             
                                                      

                                     
                                                          
                                                                 
                                                           

                   
                              
                                                                            
                                                          


                                             
                                                                        
                                
                                
      
                                                               

                                            
    





                                                                       
                                                                                 

                                                        
                                                             






                                                           
           




                                                                             


                                  
                                                                     
                                               
                               

                   
                                                         
                                    
                       

                                                                                     
                        





                                                                                  
                                                             

                                                    

                                                                                      
                                     








                                                                  

                                                                                           


                                                           
        


                                                                               
                                                                                               



                                                 
    

  




                                                                          



                                                                             

                                                                          
                                                                      
                                                 
                                                     
                                                                     
                                                               
                                              

                                     
                      
                                   

                     
       

      

                                        
                                            

                                                              


                                                                
                                                                      

      
  
 
                                                                             



                                                                 
                                  


                              


                                                    
                                                  
                                                 
                                                                         
                                                                         
                                                               



                                                                 
                             
 

                            








                                                            
                                                           



                                                                  

                                                             





                                                                
                                                                       




                                                      


                                                                       
                                                       
                                                                          
                                                                


                                                                         
                                                                              

                                                                   
                                 
                                                          
                                         
                                                 
                                                                    
        

                                                                    
                                       

      
                                                               
                                       



                                            








                                            
                         
                                                                
                        
        

                         




                                                          
        

                                                          


                
                                                               
                                                               












                                                                    

                                                 

                                                                      
                                                                         


                
  
 


                                                                
                                  
                                                   
# Copyright (c) 2003 - 2006 - RZ Uni Freiburg
# Copyright (c) 2006, 2007 - OpenSLX GmbH
#
# This program 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
#
# universal (distro independent) configuration script for OpenSLX linux
# diskless clients (executed in stage3 within initial ramfs). The file-
# system setup is completed when servconfig starts

#############################################################################
# check for configuration files to source

# functions common for all distros, messages contains all error and
# info output
. /etc/messages
. /etc/functions
# load distro specific configuration variables and functions. distro
# specific functions may overwrite functions defined in /etc/functions
. /etc/sysconfig/config
. /etc/distro-functions
. /etc/sysconfig/slxconfig
# get location of logfile definition
. /mnt/etc/${D_SYSCONFDIR}/logfile

# script run timer
[ $DEBUGLEVEL -eq 8 ] && echo "** SW setup started at $(sysup)"

# heavy debugging output in level 3 and below 8 ...
[ $DEBUGLEVEL -gt 3 -a $DEBUGLEVEL -lt 8 -o $DEBUGLEVEL -eq 12 ] && \
  set -x

#############################################################################
# copy distro specific scripts, programs, libraries and configs
cp -a /etc/sysconfig/files/* /mnt 2>/dev/null &
# boot.local file (different for several distros)
[ -f "/etc/boot.local" -a -n "${D_BOOTLOCAL}" ] && {
  echo "# added by $0 (initramfs from $date)" >> /mnt/etc/${D_BOOTLOCAL}
  cat /etc/boot.local >> /mnt/etc/${D_BOOTLOCAL}
}

#############################################################################
# read and unify configuration options - default configuration file, from
# dhcp, ldap ...
# wait for the appearance of configuration from several sources
cfgcomplete
. /etc/machine-setup
[ $DEBUGLEVEL -eq 8 ] && echo "** Config info is complete at $(sysup)"

# copy additional configuration and var files and directories
# admins can place there files in /var/lib/openslx/config/...
# to be packed during stage2 into (/srv/dxs)/tftpboot/client-config...)
# ... in the near future ...
cp -a /rootfs/* /mnt 2>/dev/null

# set greeting and add information on booted system (distro)
len=$(expr length ${SLXVERSION}${DISTRO})
vdstr="v${SLXVERSION}/${DISTRO})"
while [ $len -le 20 ] ; do
  vdstr="$vdstr "
  len=$(expr $len + 1)
done
len=$(expr length $host_name)
while [ $len -le 30 ] ; do
  space="$space "
  len=$(expr $len + 1)
done
echo "
   WELCOME TO                 $space        \n (\l)
           _____  ______  ______ __    __    _______ __     __    __
          /  _   |   _   |   ___|  |  |  |  |   ____|  |   |  |  |  |
         |  | |  |  |_|  |  |_  |   |    |  |  |___ |  |        /  /
         |  | |  |   ___/|   _|      |   |   ____   |  |     |    |
         |  |_|  |  |    |  |___|  |  |  |   ____|  |  |___ /  /
           _____/|__|    |______|__|  |__|  |_______|______|__|  |__|

   Stateless Workstation ($vdstr (c) <OpenSLX.ORG project>
">/mnt/etc/issue

#############################################################################
# set localization and add entries to initialize keytable and consolefont to
# boot.slx
DEFKEYTABLE="de-latin1-nodeadkeys"
if [ -z "$country" ] ; then
  error "$scfg_country" nonfatal
  country="${D_DEFAULTCOUNTRY}"
fi
localization "${country}"
if [ -z "${KEYTABLE}" ] ; then
  error "$hcfg_keyb" nonfatal 
  KEYTABLE=${DEFKEYTABLE}
fi
echo -e "\t# entries added by $0: $date" >> /mnt/etc/${D_INITDIR}/boot.slx
[ -n "${KEYTABLE}" ] && keytable
[ -n "${CONSOLE_FONT}" ] && consolefont

#############################################################################
# vmware stuff first part: two scenarios
# * VM images in /usr/share/vmware - then simply link
# * VM images via additional mount (mount source NFS, NBD, ...)
if [ "x$vmware" != "x" ] && [ "x$vmware" != "xno" ] ; then
  # get source of vmware image server (get type, server and path)
  if [ -n "${imgsrv}" ] ; then
    vmimgprot=$(uri_token $imgsrv prot)
    vmimgserv=$(uri_token $imgsrv server)
    vmimgpath="/$(uri_token $imgsrv path)"
  # on DHCP config systems vmware image server might be coded into the
  # $vmware variable
  elif strinstr "/" "$vmware" ; then
    vmimgprot=$(uri_token $vmware prot)
    vmimgserv=$(uri_token $vmware server)
    vmimgpath="/$(uri_token $vmware path)"
  fi
  if [ -n "${vmimgserv}" ] ; then
  testmkd /mnt/var/lib/vmware
  case "${vmimgsprot}" in
    *nbd)
    ;;
    *)
    # we expect nfs mounts here ... 
    nfsmnt ${vmimgserv}:${vmimgpath} /mnt/var/lib/vmware || {
      error "${scfg_nfs}" nonfatal; noimg=yes; }
    ;;
  esac
  # if only the path is given expect a local source within exported
  # system (allow compatibility to older 3.X versions)
  elif [ -n "${vmimgpath}" ] ; then
    ln -s ${vmimgpath} /mnt/var/lib/vmware 2>/dev/null
  fi
fi

#############################################################################
# setup passwd and shadow for local system users like root, bin, daemon and
# nobody if no user/admin provided passwd exists ...
# the root password provided by machine-setup is used only if no passwd file
# is provided (default case)
if [ ! -f /rootfs/etc/passwd ] ; then
  basepasswd
fi

#############################################################################
# dns and ip configuration
# hostname of the machine
echo "$host_name" >/proc/sys/kernel/hostname
echo -e "# /etc/hosts - file generated by\n#\t$0:\n#\t$date\
\n#\n# IP-Address  Full-Qualified-Hostname  Short-Hostname\n#\n\
127.0.0.1\tlocalhost\n::1\t\tlocalhost ipv6-localhost ipv6-loopback\n\
fe00::0\t\tipv6-localnet\nff00::0\t\tipv6-mcastprefix\nff02::1\
\t\tipv6-allnodes\nff02::2\t\tipv6-allrouters\nff02::3\t\t\
ipv6-allhosts\n" >/mnt/etc/hosts
echo -e "$clientip\t$host_name.$domain_name $host_name\n" >>/mnt/etc/hosts

# set up domainname and resolving
test -n "$domain_name" && \
  echo -e "# /etc/resolv.conf - file generated by\n#\t$0:\n\
#\t$date\n#options timeout:1 attempts:1 rotate\n\
search "$domain_name >/mnt/etc/resolv.conf
test -n "$domain_name_servers" && {
  for nameserver in $domain_name_servers; do
    echo nameserver $nameserver >>/mnt/etc/resolv.conf;
  done; }

#############################################################################
# initial boot scripts
# delete and create runlevel links for initial booting (SuSE, Debian,
# ...)
initial_boot

#############################################################################
# run distro specific configuration function
config_distro

#############################################################################
# boot.local (fixme: deprecated)
if [ -n "$bootlocal_script" ]; then
  echo -e "# Option is deprecated and will be removed soon. Please put the \
file to the ConfTGZ (rootfs/etc/${D_INITDIR}/boot.local)" >> \
  /mnt/etc/${D_INITDIR}/boot.local
fi

#############################################################################
# basic (non network) services

# at daemon - calling distro specific function config_atd
config_atd

# configuration of cron services - calling distro specific function
# config_cron (runlevel links, directories, ...)
config_cron
[ "x$crontab_entries" != "x" ] && \
    echo -e "$crontab_entries" >> /mnt/etc/crontab

# setup system log services - distro dependent function config_syslog
config_syslog

# configure dbus - distro dependent function config_dreshal - handle
# all stuff regarding dependent services like dbus, resmgr, hal ...
# (check for runlevel scripts, passwd entries, directories ...)
config_dreshal

# acpi and powersave - distro dependent function config_acpi
config_acpi

# configure automounter
# if automounter=yes
if [ -d /mnt/misc ] ; then
  echo -e "# /etc/auto.master - file generated by $0:\n\
/misc\t/etc/auto.misc" >/mnt/etc/auto.master
  echo -e "# /etc/auto.misc - file generated by $0:" >/mnt/etc/auto.misc
else
  echo -e "# /etc/auto.master - file generated by $0:\n\
/misc\t#/etc/auto.misc" >/mnt/etc/auto.master
  echo -e "# /etc/auto.misc - file generated by $0:\nautomount for \
removable devices is mostly deprecated, so /misc is not\nactivated in \
auto.master." > /mnt/etc/auto.misc
fi
if [ -n "${automnt_src}" ] ; then
  # local directory and home directory server from machine-setup
  [ -z "${automnt_dir}" ] && automnt_dir="/home"
  # remove leading and trailing slash
  automnt_dir=${automnt_dir#/}
  automnt_dir=${automnt_dir%/}
  test -d /${automnt_dir} || error "$scfg_erradir" nonfatal
  strinstr "/" ${automnt_dir} && error "$scfg_erratpld" nonfatal
  amserv=$(uri_token $automnt_src server)
  ampath=$(uri_token $automnt_src path)
  echo -e "/${automnt_dir}\t/etc/auto.${automnt_dir}\n" \
    >> /mnt/etc/auto.master
  echo -e "# /etc/auto.${automnt_dir} created by $0:\n" \
    > /mnt/etc/auto.${automnt_dir}
  echo -e "*\t-rsize=32768,wsize=32768,rw\t${amserv}:/${ampath}/&" \
    >> /mnt/etc/auto.${automnt_dir}
  # no tempfs needed if automounter operates on /home
  [ "${automnt_dir}" = "home" ] && umount -t tmpfs /mnt/home 2>/dev/null
  # portmapper is needed for remote NFS sources
  config_portmap
fi
config_automount
# fi

# configure bluetooth services
config_bt

#############################################################################
# network(ed) services

# network time service (ntp) configuration file
if [ -n "$ntp_servers" -a ! -f /rootfs/etc/ntp.conf ]; then
  echo -e "# /etc/ntp.conf - file generated by $0: \
$date\n" >/mnt/etc/ntp.conf
  for ntpserver in $ntp_servers; do
    echo server $ntpserver >>/mnt/etc/ntp.conf
  done
fi
# copy timezone file defined with language settings
[ -z "$TZ" ] && TZ="$timezone"
ln -snf /usr/share/zoneinfo/${TZ} /mnt/etc/localtime || \
  error "$scfg_ntptz" nonfatal
config_ntp

# secure shell server - at the moment all clients share one "secret"
# key or the key has to be regenerated on every bootup or fetched on
# every bootup from somewhere
config_sshd

# simple network management protocol agent
config_snmp

# setup afs client stuff
config_afs

# setup nfsv4/krb stuff
# if nfsv4 required
config_nfsv4
# fi

#############################################################################
# NIS
# setup nis configuration if needed
if [ "x$nis_domain" != "x" ] && [ "x$nis_servers" != "x" ] ; then
  echo $nis_domain >/mnt/etc/defaultdomain
  echo -e "# /etc/yp.conf - file generated by $0:\n#\t\
$date\n\nypserver "$nis_servers >/mnt/etc/yp.conf
  # should be last in passwd file
  strinfile "+:::" /mnt/etc/passwd || echo "+::::::" >>/mnt/etc/passwd
  config_nis
fi

#############################################################################
# name service caching daemon if networked user database
config_nscd

#############################################################################
# vmware stuff second part: setting up the environment

# create needed directories and files
if [ "x$vmware" != "x" ] && [ "x$vmware" != "xno" ] ; then
  for i in /var/X11R6/bin /etc/vmware/vmnet1 /etc/vmware/vmnet8 \
           /var/run/vmware /etc/X11/sessions/runvmware ; do
    testmkd /mnt/$i
  done
  # generate a runlevel script
  d_mkrlscript init vmware-prep "Starting preparation of vmware environment"
  sed "s,^#.*,,;/^$/d;s,^,        ," /etc/vmware-prep >> \
    /mnt/etc/${D_INITDIR}/vmware-prep
  d_mkrlscript close vmware-prep ""
  chmod u+x /mnt/etc/${D_INITDIR}/vmware-prep
  # check here that mount finished and the important files are available
  if [ "$noimg" = "yes" ] ; then
    error "$scfg_vmdir" nonfatal
  else
    # copy runvmware for vmware images and Xdialog sessionsmenu
    cp /mnt/var/lib/vmware/templ/runvmware \
      /mnt/var/X11R6/bin >/dev/null 2>&1
  fi
  config_vmware
  chmod 1777 /mnt/var/run/vmware
  # define a variable where gdm/kdm should look for additional sessions
  export vmsessions=/var/lib/vmware/vmsessions
  # create default.desktop for kdm
  echo -e "[Desktop Entry]\nEncoding=UTF-8\nName=Default\n\
Name[de]=Standard\nExec=/var/X11R6/bin/xdmmenu\nTryExec=/var/X11R6/bin/xdmmenu\n\
Type=Application" >/mnt/etc/X11/sessions/default.desktop
  rm /mnt/etc/vmware/not_configured 2>/dev/null
  echo -e "#!/bin/sh\n#\n# file generated by ${0} at ${date}\
    \n\nvmstart=\$(echo \$0 | awk -F \"/\" '{print \$NF}')\
    \n\nif [ \"\${vmstart}\" = \"xdmmenu\" ]; then\
    \n  /var/X11R6/bin/runvmware --xdm all\
    \n  exit 0\
    \nelif [ \"\${vmstart}\" = \"vmmenu\" ]; then\
    \n  /var/X11R6/bin/runvmware --xdm vm\
    \n  exit 0\
    \nelse\
    \n  /var/X11R6/bin/runvmware -s \${vmstart}\
    \nfi\n"\
    > /mnt/var/X11R6/bin/desktop-session
  chmod 755 /mnt/var/X11R6/bin/runvmware /mnt/var/X11R6/bin/desktop-session \
    >/dev/null 2>&1
  # add script for default.desktop
  cd /mnt/var/X11R6/bin
  ln -s desktop-session xdmmenu
  sessions=$(ls /mnt/var/lib/vmware/vmsessions/*.desktop 2>/dev/null)
  # fixme: the following part is to be tested!!
  if [ -n "${sessions}" ]; then
    vmsessionsnr=0
    xdmsessionsnr=0
    for i in /mnt/var/lib/vmware/vmsessions/*.desktop; do
      # only link if in right slxgrp
      slxgrpstr=$(sed \
        'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/;/slxgrp=/!d' ${i} \
        | sed '$!d;s/slxgrp=//')
      slxgrptest="false"
      # FIXME: maybe logfile sometime ;)
      #echo "=${slxgrpstr}="
      if strinstr " ${slxgrp} " " ${slxgrpstr} "; then slxgrptest="true"; fi
      xdmshow=$(sed \
        'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/;/xdm=/!d' ${i} \
        | sed -e '$!d;s/xdm=//')
      if [ -z "${slxgrp}" -o "${slxgrptest}" = "true" ]; then
        #session_name=$(cat ${i} | grep -iw "exec" \
        #  | awk -F "=" '{print $2}')
        session_name=$(sed \
          'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/;/^exec=/!d' ${i} \
          | sed '$!d;s,exec.*[/=],,')
        # create session links so that they con be startet via xdm
        cd /mnt/var/X11R6/bin
        ln -s desktop-session ${session_name}
        cd /mnt/etc/X11/sessions/runvmware
        ln -s ${i#/mnt} ${i#/mnt/var/lib/vmware/vmsessions/}
        vmsessionsnr=$(expr `echo ${vmsessionsnr}` + 1)
        # only show in xdm if xdmshow=true
        if [ "${xdmshow}" = "true" ]; then
          cd /mnt/etc/X11/sessions
          sed -e "s,^[E|e][X|x][E|e][C|c]=[^/].*,Exec=/var/X11R6/bin/${session_name}," $i \
            > ${i#/mnt/var/lib/vmware/vmsessions/}
          xdmsessionsnr=$(expr `echo ${xdmsessionsnr}` + 1)
        fi
      fi
    done
    # add script vmimages.desktop only if more windowsimages than shown in xdm
    if [ "${vmsessionsnr}" -gt "${xdmsessionsnr}" ]; then
      echo -e "[Desktop Entry]\nEncoding=UTF-8\nName=Virtual Windows XP Menu\n\
Name[de]=Virtual Windows XP Menü\nExec=/var/X11R6/bin/vmmenu\nTryExec=/var/X11R6/bin/vmmenu\n\
pplication" >/mnt/etc/X11/sessions/vmmenu.desktop
      cd /mnt/var/X11R6/bin
      ln -s desktop-session vmmenu
    fi
  fi
fi

# theming
testmkd /mnt/var/lib/openslx/themes/displaymanager
cp -a /usr/share/themes/displaymanager /usr/share/themes/Xdialog \
  /usr/share/themes/bootsplash /mnt/var/lib/openslx/themes >/dev/null 2>&1

#############################################################################
# preparation of /tmp directory (partition 44, nfs scratch, ramdisk). there
# might be the chance that we have a disk partition available, so wait for
# completion of detection, setup process
[ $DEBUGLEVEL -eq 8 ] && echo "** Waiting for /tmp completion at $(sysup)"
waitfor /tmp/tmpready 40000
[ $DEBUGLEVEL -eq 8 ] && echo "** Setup of /tmp completed at $(sysup)"
# create some directories and correct permissions
tmpisdisk=$(sed -n '/\/tmp/p' /tmp/fstab 2>/dev/null)
# if there is no local disk partition for /tmp then try to mount a rw
# scratch space (if defined in $scratch) and prepared on server
if [ -n "$scratch" -a -z "$tmpisdisk" ] ; then
  scrproto=$(uri_token $FILESRC prot)
  scrpath=$(uri_token $FILESRC path)
  testmkd /tmp/scratch
  # exports have to be per client!!
  case "$scrproto" in
    nbd)
      :
    ;;
    *)
    tmpserv=$(uri_token $scratch server)
    tmppath=$(uri_token $scratch path)
    # fixme - use nfsmnt and pass info on rw
    mount -t nfs -o rw,nolock,intr,nodev,soft,timeo=2,nosuid \
      ${tmpserv}:/${tmppath} /tmp/scratch >/dev/null 2>&1 && {
      mkdir -p /tmp/scratch/${clientip} >/dev/null 2>&1
      umount /tmp/scratch
      mount -t nfs -o rw,nolock,intr,nodev,soft,timeo=2,nosuid \
        ${tmpserv}:/${tmppath}/${clientip} /mnt/tmp >/dev/null 2>&1; }
    ;;
  esac
fi

#############################################################################
# X11/GUI stuff
if [ "x$start_x" != "xno" ] ; then
  # creating directories commonly needed for X11 in all distros
  # rest should be done via config_x11 function (distro specific)
  for i in /var/lib/xkb/compiled \
           /etc/X11/xdm \
           /etc/X11/sessions \
           /var/X11R6/bin \
           /var/run/xdmctl \
           /tmp/.ICE-unix \
           /tmp/.X11-unix ; do testmkd /mnt/$i; done
  chmod 1777 /mnt/tmp/.ICE-unix /mnt/tmp/.X11-unix
  chown 0:0 /mnt/tmp/.ICE-unix /mnt/tmp/.X11-unix
  echo "# file emtied by $0 during initramfs" > /mnt/etc/X11/xdm/Xservers
  # define additional sessions offered to the user (via dhcp/ldap config)
  # descsession -> deprecated by new vmware integration concept
  # write available X display manager to /etc/X11/xdm/Xaccess
  [ -n "$x_display_manager" ] && \
  echo -e "# /etc/X11/xdm/Xaccess - file generated by $0: \
$date\n*\n%hostlist\t$x_display_manager\n*\t\tCHOOSER %hostlist"\
    >/mnt/etc/X11/xdm/Xaccess

  # define type of X session
  dsx="no"
  case "$start_x" in
    yes|YES|direct|DIRECT|query|QUERY)
      # direct connection onto the own displaymanager, which
      # should be enabled then
      [ "x$start_xdmcp" = "xno" ] && $start_xdmcp="yes"
      init=""
      dsx="yes"
      xdmcp="false"
      echo -e "# /etc/X11/Xservers - file generated by \
$0: $date\n:0 local X :0 vt07\n" >/mnt/etc/X11/xdm/Xservers
    ;;
    broadcast|BROADCAST)
      # the client will XDMCP broadcast and choose first available
      # X11 server
      [ "x$start_xdmcp" = "xgdm" ] || \
        init="7:5:respawn:${D_XORGBIN} vt7 -quiet -broadcast"
    ;;
    indirect|INDIRECT)
      # the client will try to XDMCP connect list of X11 servers
      if [ "x$start_xdmcp" = "xgdm" ] ; then
        init=""
      else
        init="7:5:respawn:${D_XORGBIN} vt7 -quiet -indirect $host_name"
      fi
      [ "x$start_xdmcp" = "xno" ] && start_xdmcp="yes"
      xdmcp="true"
    ;;
    *)
      # no display manager needed in kiosk mode
      # in this mode you have to provide the type of X session to start
      [ x$start_xdmcp != "x" ] || start_xdmcp="no";
      init="7:5:respawn:/var/X11R6/bin/kiosk /dev/tty7"
      echo -e "#!/bin/sh\n# /var/X11R6/bin/kiosk - file generated by $0: \
$date\nwhile ps aux|grep -i kiosk|grep -v \"grep\" &>/dev/null;\
do\n  test -f /var/run/kiosk || break; sleep 3;\ndone\ntouch \
 /var/run/kiosk\nresmgr login nobody tty7\nresmgr grant nobody desktop\n\
chown nobody /dev/dsp* /dev/audio* /dev/mixer* /dev/snd/control*\n\
chown -R nobody:nobody /var/lib/nobody\nsu -c 'xinit /var/X11R6/bin/startgui \
$start_x -- vt7 -quiet' -l nobody &>/dev/null\nrm /var/run/kiosk\n\
resmgr revoke nobody\nresmgr logout tty7\nkillall X" \
        >/mnt/var/X11R6/bin/kiosk
      # early start of kiosk session if not late_dm is set
      if [ "x$late_dm" != "xyes" ] ; then
        echo -e "\t# kiosk start added by $0\n\t\
/var/X11R6/bin/kiosk &>/dev/null &" >>/mnt/etc/${D_INITDIR}/boot.slx
      fi
      cp /etc/startgui /mnt/var/X11R6/bin
      chmod a+x /mnt/var/X11R6/bin/kiosk /mnt/var/X11R6/bin/startgui
      rm /mnt/var/run/kiosk 2>/dev/null
    ;;
  esac
  echo -e "# entry made by $0 $date\n$init" >> /mnt/etc/inittab
  # most probably not needed any longer
  if [ -n ${D_XORGBIN} ] ; then
    testmkd /mnt/var/X11R6/bin
    ln -sf ${D_XORGBIN} /mnt/var/X11R6/bin/X
  fi
fi

# setup requested display manager
if [ "x$start_xdmcp" != "xno" ] ; then
  testmkd /mnt/var/lib/xdm/authdir/authfiles
  testmkd /mnt/var/run/xdmctl
  if [ "$start_xdmcp" = "yes" ] ; then
    start_xdmcp=kdm
  fi
  # just ensure lowercase
  start_xdmcp=$(echo $start_xdmcp|sed -e "y/'GKWXDM'/'gkwxdm'/")
  case "$start_xdmcp" in
    wdm)
      # anywhere in use!?
    ;;
    kdm)
      # config is most probably not common in all distros?
      # distro specific function config_kdm
      config_kdm
    ;;
    gdm)
      # config is most probably not common in all distros?
      # distro specific function config_gdm
      config_gdm
    ;;
    *)
      # setup xdm (should be the same over the several distros)
      echo -e "# /etc/X11/xdm/xdm-config - file generated by\n\
#\t$0: $date\n\nDisplayManager.errorLogFile:\t/var/log/xdm.errors\n\
DisplayManager.pidFile:\t\t/var/run/xdm.pid\n\
DisplayManager.authDir:\t\t/var/lib/xdm\n\
DisplayManager.keyFile:\t\t/etc/X11/xdm/xdm-keys\n\
DisplayManager.servers:\t\t/etc/X11/xdm/Xservers\n\
DisplayManager.accessFile:\t/etc/X11/xdm/Xaccess\n\
DisplayManager.willing:\t\tsu nobody -c /etc/X11/xdm/Xwilling\n\
DisplayManager.*.authName:\tMIT-MAGIC-COOKIE-1\n\
DisplayManager.*.authComplain:\tfalse\n\
DisplayManager.*.setup:\t\t/etc/X11/xdm/Xsetup\n\
DisplayManager.*.chooser:\t/etc/X11/xdm/RunChooser\n\
DisplayManager.*.startup:\t/etc/X11/xdm/Xstartup\n\
DisplayManager.*.session:\t/etc/X11/xdm/Xsession\n\
DisplayManager.*.reset:\t\t/etc/X11/xdm/Xreset" \
         >/mnt/etc/X11/xdm/xdm-config
      [ "$xdmcp" = "false" ] && echo -e \
      "DisplayManager.requestPort:\t0\n" >>/mnt/etc/X11/xdm/xdm-config
      # distro specific function config_xdm (at least for runlevel links)
      config_xdm
    ;;
  esac
fi

# script run timer
[ $DEBUGLEVEL -eq 8 ] && echo "** SW setup finished at $(sysup)"

# servconfig finished successfully
echo "servconfig finished at $(sysup)" > /tmp/svcfg