[K12OSN] Flash drive in thin client.
Ernie Hudson
ernie_hudson at snowline.k12.ca.us
Mon May 23 22:49:51 UTC 2005
After applying everything in you have specified I do get a drives folder
but with absolutely no access from client.
On Mon, 2005-05-23 at 13:54 -0500, Shawn Austin wrote:
> Actually, if you are running K12LTSP 4.2.1, you can have "native" access
> to the local drives without using MTools.
> This is what you need to do.
> Read http://wiki.ltsp.org/twiki/bin/view/Ltsp/LocalDrives
> Almost all the steps to get it working can be found on the page. Three
> modified files are attached that will be needed to get this working.
>
> To boil it down:
> 1. Add HOTPLUG = Y to your lts.conf file.
> 2. Double check that you have SAMBA Client on the server. rpm -qa |grep
> samba You should have samba-client. If not, install it.
> 3. The download at the bottom of the wiki link for updated files has a
> few errors in it. Use the ones attached to this email. hotplug needs
> to go in /opt/ltsp/i386/sbin and needs 755 for permissions.
> rc.localdev need to go in /opt/ltsp/i386/etc with 755 for permissions.
> 4. Copy the rc.usb that is also attached into /opt/ltsp/i386/etc with
> 755 for permissions.
> 5. Download http://ltsp.mirrors.tds.net/pub/ltsp/ltsp-4.1/LDA-setup.sh
> and http://ltsp.mirrors.tds.net/pub/ltsp/ltsp-4.1/LDA-shutdown.sh
> "If you use KDM:
> /usr/local/bin/LDA-setup.sh goes into line 3 of /etc/kde/kdm/Xstartup
> /usr/local/bin/LDA-shutdown.sh goes into line 3 of /etc/kde/kdm/Xreset
> if you use GDM:
> /usr/local/bin/LDA-setup.sh goes into line 3 of
> /etc/X11/gdm/PostLogin/Default /usr/local/bin/LDA-shutdown.sh goes into
> line 3 of /etc/X11/gdm/PostSession/Default
> "
> 6. Reboot the client
> 7. Look inside the users home dir. You should see a directory called
> Drives. There is your local device.
> 8. If that fails, add a SCREEN_02 = SHELL to the workstation you are on,
> then check in /tmp/drives and see if you can see the devices there.
>
> Ive got this working on 2 servers so far, with 5 different test usb
> flash drives. If you have problems with this, send it back out to the
> list and I will try to walk you through it.
>
> Shawn Austin
>
> Client Services
> University of Indianapolis
>
> Shawn Powers wrote:
>
> > Genfil Villahermosa wrote:
> >
> >> Does anyone know how to mount a flash drive on a thin? It work on the
> >> terminal server but not on the thin client.
> >>
> > http://www.k12ltsp.org/phpwiki/index.php/StorageFloppyUsb
> >
> > (Hopefully that will answer your question... MtoolsFM is the program
> > you use to connect to the drive...)
> >
>
> plain text document attachment (rc.localdev)
> #!/bin/sh
> #
> # local_cd
> #
> # This script will set up a local cdrom drive for supermount.
> #
> PATH=/bin:$PATH; export PATH
> . /etc/ltsp_functions
>
> SAMBATMP="/tmp/samba"
> SAMBACNF="/tmp/smb.conf"
>
> mkdir /tmp/drives
> chown nobody /tmp/drives
>
> #
> # Get the lts.conf entries
> #
> eval `/bin/getltscfg -a`
>
> for i in 01 02 03 04 05 06 07 08 09 10; do
> DEVVAR=LOCAL_DEVICE_${i}
>
> if [ ! -z ${!DEVVAR} ] ; then
> #
> # As soon as we find at least 1 local device, we need to
> # setup the Samba config stuff
> #
> reg_info ${DEVVAR}
>
> DEVICE=`echo ${!DEVVAR} | sed 's/\(.*\):.*/\1/'`
> SHARE=`echo ${!DEVVAR} | sed 's/.*:\(.*\)/\1/'`
> BASE_DEVICE=`/usr/bin/basename ${DEVICE}`
> START_SAMBA="Y"
>
> if [ -z ${SHARE} ] ; then
> SHARE=${BASE_DEVICE}
> fi
>
> echo ${DEVICE} ${SHARE} ${BASE_DEVICE}
>
> case "${BASE_DEVICE}" in
> hd* ) modprobe ide-cd
> modprobe iso9660
> RW="ro"
> FS="iso9660"
> ;;
> fd* ) modprobe floppy
> modprobe vfat
> RW="rw"
> FS="vfat"
> ;;
> sr* ) modprobe scsi_mod
> modprobe sr_mod
> RW="ro"
> FS="iso9660"
> ;;
> sd* ) modprobe scsi_mod
> modprobe sd_mod
> RW="rw"
> FS="auto"
> ;;
> * ) # assume modules are already loaded
> RW="ro"
> FS="auto"
> ;;
> esac
>
> mkdir /tmp/drives/${SHARE}
>
> if [ "${DEVICE}" != "hotplug" ] ; then
> mount -t supermount \
> -o fs=${FS},dev=${DEVICE},--,${RW},uid=99,gid=99 none /tmp/drives/${SHARE}
> fi
> fi
> done
>
> if [ "${HOTPLUG}" = "Y" ]; then
> reg_info HOTPLUG
> mkdir /tmp/drives/.hotplug
> chown nobody /tmp/drives/.hotplug
> START_SAMBA=Y
> fi
>
> if [ "${START_SAMBA}" = "Y" ] ; then
> mkdir ${SAMBATMP}
> cat <<-EOF >${SAMBACNF}
> [global]
> workgroup = ${WORKGROUP:-"LTSP"}
> security = SHARE
> smb passwd file = /etc/passwd
> guest account = nobody
> log file = /tmp/samba/%m.log
> max log size = 2
> socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
> load printers = No
> dns proxy = No
> unix extensions = No
> lock directory = /tmp/samba
> pid directory = /tmp/samba
> private dir = /tmp/samba
>
> [drives]
> path = /tmp/drives
> read only = no
> guest ok = Yes
> locking = no
> EOF
> smbd -D -s /tmp/smb.conf
> fi
> plain text document attachment (rc.usb)
> #!/bin/sh
>
> for module in usb-uhci usb-ohci ehci-hcd uhci-hcd ohci-hcd usb-storage scsi_mod sd_mod
> do
> modprobe $module &>/dev/null
> done
>
> if [ "`lsmod | grep usbcore`" ]
> then
> echo "USB subsystem found, loading keyboard and mouse drivers"
> for module in keybdev mousedev input usbmouse usbkbd
> do
> modprobe $module > /dev/null
> done
> # quick bug-fix hack
> insmod usbmouse
> else
> echo "WARNING: USB subsystem not found, skipping"
> fi
> plain text document attachment (hotplug)
> #!/bin/bash
>
> DRIVESDIR=/tmp/drives
> HOTPLUGDIR=/tmp/drives/.hotplug
>
> #
> # Read in our ltsp variables
> #
>
> eval `getltscfg -a`
>
> #
> # Module location
> #
>
> KERNEL=`uname -r`
> MODULE_DIR=/lib/modules/$KERNEL
>
> USB_MODMAP=$MODULE_DIR/modules.usbmap
> LTSP_USB_MODMAP=/etc/usblist
>
>
> mount_device_num()
> {
> DEVNUM=$1
> mkdir ${HOTPLUGDIR}/host${DEVNUM}
>
> SCSI_DIR=/dev/scsi/host${DEVNUM}/bus0/target0/lun0
>
> PRODUCT_NAME=`grep Product /proc/scsi/usb-storage-${DEVNUM}/${DEVNUM} | \
> sed -e 's/.*: //' | tr ' ' '_'`
>
> MODEL=`grep -h -s "^${PRODUCT_NAME}" /etc/devname_map.local /etc/devname_map|\
> head -1 | sed 's/ / /g' | tr -s ' ' | cut -d' ' -f 2`
>
> [ -n "${MODEL}" ] && PRODUCT_NAME="${MODEL}"
>
> COUNT=1
> while [ -L ${DRIVESDIR}/${PRODUCT_NAME}_${COUNT} ]; do
> COUNT=`expr $COUNT + 1`
> done
>
> LINK_NAME=${PRODUCT_NAME}_${COUNT}
>
> if [ -b $SCSI_DIR/part1 ] ; then
> echo "${DRIVESDIR}/${LINK_NAME}" >${HOTPLUGDIR}/host${DEVNUM}/LINK_NAME
> mount -t supermount \
> -o fs=vfat:msdos:iso9660:ext2,dev=$SCSI_DIR/part1,--,rw,uid=99,gid=99 \
> none $HOTPLUGDIR/host${DEVNUM}
> cd $HOTPLUGDIR/host${DEVNUM}
> ln -s $HOTPLUGDIR/host${DEVNUM} "${DRIVESDIR}/${LINK_NAME}"
> return
> fi
> if [ -b $SCSI_DIR/cd ] ; then
> echo "${DRIVESDIR}/${LINK_NAME}" >${HOTPLUGDIR}/host${DEVNUM}/LINK_NAME
> mount -t supermount \
> -o fs=vfat:msdos:iso9660:ext2,dev=$SCSI_DIR/cd,--,ro,uid=99,gid=99 \
> none $HOTPLUGDIR/host${DEVNUM}
> cd $HOTPLUGDIR/host${DEVNUM}
> ln -s $HOTPLUGDIR/host${DEVNUM} "${DRIVESDIR}/${LINK_NAME}"
> return
> fi
> if [ -b $SCSI_DIR/disc ] ; then
> echo "${DRIVESDIR}/${LINK_NAME}" >${HOTPLUGDIR}/host${DEVNUM}/LINK_NAME
> mount -t supermount \
> -o fs=vfat:msdos:iso9660:ext2,dev=$SCSI_DIR/disc,--,rw,uid=99,gid=99 \
> none $HOTPLUGDIR/host${DEVNUM}
> cd $HOTPLUGDIR/host${DEVNUM}
> ln -s $HOTPLUGDIR/host${DEVNUM} "${DRIVESDIR}/${LINK_NAME}"
> return
> fi
> }
>
> #
> # If we've activated hotplugging, then this directory should be here, if not,
> # exit quitely. Simple way to "disable" hotplugging.
> #
>
> if [ ! -d $HOTPLUGDIR ] ; then
> exit 0
> fi
>
> #
> # ADD event
> #
>
> if [ "$ACTION" = "add" ] ; then
>
> #
> # USB add event
> #
>
> if [ "$DEVFS" = "/proc/bus/usb" ] ; then
> #
> # Get vendor and product ID, and find them in the module map
> #
>
> ID_VENDOR=`echo $PRODUCT | cut -d'/' -f 1`
> ID_PRODUCT=`echo $PRODUCT | cut -d'/' -f 2`
> MODULE=`grep -h $ID_VENDOR $USB_MODMAP $LTSP_USB_MODMAP | \
> grep $ID_PRODUCT | cut -d' ' -f 1 | head -1`
> #
> # The LTSP configuration variable "ALLOW_UNKNOWN_USB" dictates if
> # we'll simply default to allowing anything that's plugged in to
> # qualify as usb-storage.
> #
>
> if [ -z "$MODULE" -a "${ALLOW_UNKNOWN_USB}" != "N" ] ; then
> MODULE="usb-storage"
> fi
>
> #
> # If we got a module, load it, then figure out what to do
> #
>
> if [ ! -z ${MODULE} ] ; then
> lsmod | grep $MODULE > /dev/null
> if [ $? -eq 1 ] ; then
> modprobe $MODULE
> fi
> fi
>
> if [ $MODULE = "usb-storage" ] ; then
> lsmod | grep "s[dr]_mod" > /dev/null
> if [ $? -eq 1 ] ; then
> modprobe sd_mod && modprobe sr_mod
> fi
>
> #
> # OK, we've got our hotplug device plumbed. Lets do some mounting
> #
>
> #
> # This needs to be generalized
> #
>
> for i in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19; do
> USBDEV="/proc/scsi/usb-storage-${i}/${i}"
> if [ -f ${USBDEV} ] ; then
> grep "Attached: Yes" $USBDEV > /dev/null
> if [ $? -eq 0 ] ; then
> if [ ! -d ${HOTPLUGDIR}/host${i} ] ; then
> mount_device_num ${i}
> fi
> fi
> fi
> done
> fi # module = usbstorage
> fi # devfs = procusb
> #
> # REMOVE action
> #
>
> elif [ "$ACTION" = "remove" ] ; then
>
> if [ "$DEVFS" = "/proc/bus/usb" ] ; then
>
> #
> # Scan and see if all devices are disconnected. If they are, then
> # we can unload the "usb-storage" module
> #
>
> for i in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19; do
> USBDEV="/proc/scsi/usb-storage-${i}/${i}"
> if [ -f ${USBDEV} ] ; then
> grep "Attached: No" $USBDEV > /dev/null
> if [ $? -eq 0 ] ; then
> if [ -d ${HOTPLUGDIR}/host${i} ] ; then
> umount -l ${HOTPLUGDIR}/host${i}
> if [ -f ${HOTPLUGDIR}/host${i}/LINK_NAME ]; then
> rm -f `cat ${HOTPLUGDIR}/host${i}/LINK_NAME`
> rm ${HOTPLUGDIR}/host${i}/LINK_NAME
> fi
> rmdir ${HOTPLUGDIR}/host${i}
> fi
> fi
> fi
> done
>
> fi
> fi
> _______________________________________________
> K12OSN mailing list
> K12OSN at redhat.com
> https://www.redhat.com/mailman/listinfo/k12osn
> For more info see <http://www.k12os.org>
More information about the K12OSN
mailing list