diff options
author | Michael Janczyk | 2008-06-02 15:34:03 +0200 |
---|---|---|
committer | Michael Janczyk | 2008-06-02 15:34:03 +0200 |
commit | 83c1e07afcf5f4173c28ceee77875a3a96f223ff (patch) | |
tree | ee184ade2350e0a763389eee367469174d1ec20b /initramfs | |
parent | * bumped DB-schema version in order to cleanup potential problems after (diff) | |
download | core-83c1e07afcf5f4173c28ceee77875a3a96f223ff.tar.gz core-83c1e07afcf5f4173c28ceee77875a3a96f223ff.tar.xz core-83c1e07afcf5f4173c28ceee77875a3a96f223ff.zip |
Maybe we should keep start_x for a while, since we need a configuration for terminals...
git-svn-id: http://svn.openslx.org/svn/openslx/openslx/trunk@1833 95ad53e4-c205-0410-b2fa-d234c58c8868
Diffstat (limited to 'initramfs')
-rwxr-xr-x | initramfs/initrd-stuff/bin/servconfig | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/initramfs/initrd-stuff/bin/servconfig b/initramfs/initrd-stuff/bin/servconfig index 48b65a0a..824f9870 100755 --- a/initramfs/initrd-stuff/bin/servconfig +++ b/initramfs/initrd-stuff/bin/servconfig @@ -322,6 +322,102 @@ if [ -n "$scratch" -a -z "$tmpisdisk" ] ; then 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" + # nobody can halt pc + echo 'nobody ALL=NOPASSWD:/sbin/halt, /sbin/shutdown' >>/mnt/etc/sudoers + echo -e "#!/bin/sh\n# /var/X11R6/bin/kiosk - file generated by $0: $date + while ps aux|grep -i kiosk|grep -v \"grep\" &>/dev/null; do + test -f /var/run/kiosk || break; sleep 3; + done + touch /var/run/kiosk + for((i=0;\$i<=120;i=\$((\$i+1)))); do + [ -e /var/run/resmgr.pid ] && break + [ \$i = 120 ] && exit 1 + sleep 1 + done + resmgr login nobody tty8 \\ + && resmgr grant nobody desktop \\ + && chown -R nobody:nogroup /var/lib/nobody \\ + && (su -c '(sleep 10; amixer -q sset Master 28 unmute; \\ + amixer -q sset PCM 28 unmute) & + xinit /var/X11R6/bin/startgui $start_x \\ + -- vt7 -quiet' -l nobody &>/dev/null) + rm /var/run/kiosk + resmgr revoke nobody + resmgr logout tty7 + killall X" >/mnt/var/X11R6/bin/kiosk + # early start of kiosk session + echo -e "\t# kiosk start added by $0\n\t\ +/var/X11R6/bin/kiosk &>/dev/null &" >>/mnt/etc/${D_INITDIR}/boot.slx + 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 + # script run timer [ $DEBUGLEVEL -eq 8 ] && echo "** SW setup finished at $(sysup)" |