Hi I am quite at the same point as you. (your idea of changing "nd" node owner is great !) But I am looking for a way to correctly close the X sessions even if the user only switch off his terminal. There is a well named "PingIntervalSeconds" option to put in gdm.conf but it does'nt seem to work with my old gdm 1.4... Do any one knows a solution to end X session well in all cases ?
Thanks On Fri, 2003-11-21 at 23:07, Vaclav Smilauer wrote: > Hi Julien & others, > > I was solving roughly the same problem with PXES (thin client, the > difference agains LTSP is that it has a ramdisk root, no nfs). The > solution is based on enbd and supermount and was initially inspired by > http://trieste.linux.it/documenti/ThinClient.html (rather awkward). It > was tested modestly but was working; we had kernel 2.4.22 (patched > enbd&supermount). > > We use gdm for display management. Gdm executes > /etc/gdm/PreSession/Default upon each login and > /etc/gdm/PostSession/Default at logout. I just added ". > /etc/enbd/enbd.setup" and ". /etc/enbd/enbd.cleanup" at the beginning of > each file respectively. > > 1. Thin clients run enbd-server (i.e. executes something like > "enbd-server 9000 /dev/floppy/0 -i mysig") for all exported devices. > Watch the signature "mysig", it should be the same for all thin clients > since enbd devices on the client side are recycled for different > diskless stations! (see GOTCHA section in enbd docs) > > 2. At login, on the server (running enbd-client) we find a free > enbd-device (by permissions on devices). Then we run an enbd-client for > this device connecting to remote enbd-server. The device is supermounted > to ~/floppy (for floppy disc) so that the user doesn't have to know > anything about mount, mount points and the like. > > After login, every user can use ~/floppy and ~/.dev_floppy. No mounting. > Vfat is assumed on the floppy. > > 4. At logout, the supermounted devices are umounted, enbd-clients are > terminated, devices freed by being reowned to root. > > CAVEATS: user should not login to several workstations (a > check/workaround for this is a TODO). If user does not logout cleanly > (uses e.g. ctrl-alt-bspace), enbd.cleanup is not executed and enbd stays > alive (this is a high priority TODO) blocking the device. Floppy drive > keeps spinning all the time (I assume this might be changed by fiddling > with heartbeat interval &c for enbd; hints?). > > The scripts are below. Is is recent work in progress. Comments and > suggestions (for caveats especially) are welcome. > > Regards, Vaclav > > ======================================================= > > # This is enbd.setup (here floppy only), commented. > # It is made for devfs, so device names may be different in your case. > > > THINCLIENT=`echo ${DISPLAY} | cut -f 1 -d ":"` > > USER_GID=`grep ^$USER /etc/passwd | cut -d: -f4` > > USER_UID=`grep ^$USER /etc/passwd | cut -d: -f3` > > > FLOPPY_DIR=$HOME/floppy > > FLOPPY_DEV=$HOME/.dev_floppy > > mkdir -p $FLOPPY_DIR > > function find_first_free_enbd_device() { > > #TODO: lock > > #device is in use if not owned by root > > NBDDEV=`find /dev/nd/* -maxdepth 0 -user root | head -1` > > # return the first directory found, change ownership > > /bin/chown -R $USER $NBDDEV > > echo $NBDDEV > > return > > } > > ENBD_DEV=`find_first_free_enbd_device` > > #-i ID: creates file /var/run/enbd-client-ID.pid > > enbd-client $THINCLIENT:9000 -i $USER-floppy $ENBD_DEV #2>/dev/null & > > mount -t supermount -o > dev=$ENBD_DEV/disc,fs=vfat,--,owner,uid=$USER_UID,gid=$USER_GID,dmask=0027,fmask=0137 > none $FLOPPY_DIR > ln -sf $ENBD_DEV/disc $HOME/.dev_floppy > > =================================================== > > # Here, when logging off, /etc/enbd/enbd.cleanup > > umount -l $HOME/floppy > # umount other devices here > > > > #kill all clients run by $USER > > for ENBD_PID_FILE in `ls /var/run/enbd-client-$USER-*`; do > > ENBD_PID=`cat $ENBD_PID_FILE` > > ENBD_PID="$ENBD_PID `pgrep -P $ENBD_PID`" > > # this will also delete the pid file > > kill $ENBD_PID > > # but not always... > > rm -f $ENBD_PID_FILE > > done > > #release all devices owned by $USER > > for NBDDEV in `find /dev/nd/* -maxdepth 0 -user $USER`; do > > #TODO: check lock (?) > > chown -R root: $NBDDEV > > done > > rm -rf $HOME/floppy $HOME/.dev_floppy > > > > > > ------------------------------------------------------- > This SF.net email is sponsored by: SF.net Giveback Program. > Does SourceForge.net help you be more productive? Does it > help you create better code? SHARE THE LOVE, and help us help > YOU! Click Here: http://sourceforge.net/donate/ > _____________________________________________________________________ > Ltsp-discuss mailing list. To un-subscribe, or change prefs, goto: > https://lists.sourceforge.net/lists/listinfo/ltsp-discuss > For additional LTSP help, try #ltsp channel on irc.freenode.net > ------------------------------------------------------- This SF.net email is sponsored by: SF.net Giveback Program. Does SourceForge.net help you be more productive? Does it help you create better code? SHARE THE LOVE, and help us help YOU! Click Here: http://sourceforge.net/donate/ _____________________________________________________________________ Ltsp-discuss mailing list. To un-subscribe, or change prefs, goto: https://lists.sourceforge.net/lists/listinfo/ltsp-discuss For additional LTSP help, try #ltsp channel on irc.freenode.net