Here's what the procedure looks like when the local cd burn setup is completed: My users are "Windows centric" and never see Linux, booting the thin client directly to an rdesktop session. They place the files/directory structure they want to burn in a folder: ...\My Documents\cdburn They load a CDRW Then hit an icon on the desktop or start menu. The directory structure under cdburn is zipped up and FTP'd over to the linux box. The Linux server has an inittab script that checks every 10 seconds for new iso images in the upload directory. It moves the file to a work area, unzips it and makes an iso image of it, then moves it to a directory mounted on the thin client. The thin client has a screen script that checks every 10 seconds for a new iso image file with the same name as the workstation It runs cdrecord to burn the cd if there's a file. It then ejects the disk. It burns the CD's at 12x so it will take about 20 minutes to burn a full CD. All the files and information to implement this are included below, using LTSP 4.1+ ==================================================== Steps to implement CD Burning LTSP Server steps: Add user to Linux server: cdburnupload Set password to: smoke-em Remove all contents of cdburnupload's home directory Change shell account to /sbin/nologin in /etc/passwd Install vsftpd on LTSP server. Enable it in /etc/xinetd.d Set it to chroot jail local users. Make the work area where files are unzipped and made into ISO images: mkdir /var/tmp/cdburn chmod 777 /var/tmp/cdburn Edit /etc/exports and make it so /var/tmp/cdburn is exported to thin clients. /var/tmp/cdburn 192.168.1.0/255.255.255.0(rw,no_root_squash,async) Put these three lines in /opt/ltspnewer/i386/etc/rc.d/mount_cdburn: server=`getltscfg SERVER` mkdir /mnt/cdburn > /dev/null 2>&1 mount -t nfs -o nolock $server:/var/tmp/cdburn /mnt/cdburn chmod 700 /opt/ltspnewer/i386/etc/rc.d/mount_cdburn Install the following packages on your LTSP server: ltsp-cdrtools Move the cd_packages.tgz file to your ltsp server and uncompress it. Point ltspadmin to the directory where you put the files and install the updated "localdev". Add these lines to the relevant workstation(s) in lts.conf: CDDEV="ATA:1,1,0" SCREEN_03 = burn_cd MODULE_01 = ide-generic MODULE_02 = ide-cd RCFILE_01 = mount_cdburn To find out what to set CDDEV to: Log onto the thin cliet with a shell Run: cdrecord dev=ATA: -scanbus Put the correct device in CDDEV. Put these lines in /opt/ltsp/i386/etc/screen.d/burn_cd: cddev=`getltscfg CDDEV` while true; do if [ -e /mnt/cdburn/${HOSTNAME}.iso ] then /bin/cdrecord -eject gracetime=0 fs=25 dev=$cddev speed=12 /mnt/cdburn/${HOSTNAME}.iso rm -f /mnt/cdburn/${HOSTNAME}.iso fi sleep 10 done chmod 755 /opt/ltsp/i386/etc/screen.d/burn_cd /var should have a lot of free space! It will be use to make cd sized iso's. It needs space for the original zip file plus it's unzipped contents and space for the unzipped contents plus the iso image file. Save this script to /etc/rc.d/init.d/ltsp_cdburn: #!/bin/sh # # ltsp_cd_burn: LTSP (http://www.ltsp.org) local cd burn daemon # # Sanity checks. [ -x /usr/local/bin/ltsp_cdburn.sh ] || exit 0 # Source function library. . /etc/rc.d/init.d/functions start() { echo -n $"Starting ltsp_cdburn: " /usr/local/bin/ltsp_cdburn.sh > /dev/null 2>&1 & } # See how we were called. case "$1" in start) start ;; stop) ;; status) ;; restart) ;; condrestart) ;; reload) ;; *) echo $"Usage: $0 {start}" ;; esac exit $RETVAL chmod 755 /etc/rc.d/init.d/ltsp_cdburn symlink the file to your rc5.d directory. Save this cript to /usr/local/bin/ltsp_cdburn.sh: while true; do if [ -e /home/cdburnupload/*.zip ] then cd /home/cdburnupload/ # Make work directory mkdir /var/tmp/$$ # Move the zip files out of original location to work directory for file in *.zip do mv $file /var/tmp/$$ done # Process the files into iso images and move them to /var/tmp/cdburn cd /var/tmp/$$ for file in *.zip do # Find the file name without the extension filename=${file%\.zip} # Make a directory to unzip the file in mkdir /var/tmp/$$/$filename mv /var/tmp/$$/$file /var/tmp/$$/$filename/ cd /var/tmp/$$/$filename unzip -a $file # Immediately remove the zip file to reduce space requirements for iso creation. rm $file mkisofs -quiet -r -U -o $filename.iso /var/tmp/$$/$filename/ mv ${filename}.iso /var/tmp/cdburn cd .. rm -rf /var/tmp/$$/$filename done cd / rmdir /var/tmp/$$ fi sleep 10 done chmod 755 /usr/local/bin/ltsp_cdburn.sh Windows Server steps: Install zip.exe from http://www.info-zip.org/pub/infozip in the PATH on Widows server. Save this script to c:\Program Files\ltsp\burncd.bat: # Replace 192.168.1.131 with IP Address of your LTSP server: @echo off if exist "\Documents and Settings\%USERNAME%\My Documents\cdburn" ( cd "\Documents and Settings\%USERNAME%\My Documents\cdburn" ) else ( exit ) zip -r %CLIENTNAME%.zip * if not exist "C:\Documents and Settings\%USERNAME%\temp" mkdir "C:\Documents and Settings\%USERNAME%\temp" > "C:\Documents and Settings\%USERNAME%\temp\script.txt" echo open 192.168.1.131 >> "C:\Documents and Settings\%USERNAME%\temp\script.txt" echo cdburnupload >> "C:\Documents and Settings\%USERNAME%\temp\script.txt" echo smoke-em >> "C:\Documents and Settings\%USERNAME%\temp\script.txt" echo binary >> "C:\Documents and Settings\%USERNAME%\temp\script.txt" echo del %CLIENTNAME%.zip >> "C:\Documents and Settings\%USERNAME%\temp\script.txt" echo del %CLIENTNAME%.part >> "C:\Documents and Settings\%USERNAME%\temp\script.txt" echo put "C:\Documents and Settings\%USERNAME%\My Documents\cdburn\%CLIENTNAME%.zip" %CLIENTNAME%.part >> "C:\Documents and Settings\%USERNAME%\temp\script.txt" echo rename %CLIENTNAME%.part %CLIENTNAME%.zip >> "C:\Documents and Settings\%USERNAME%\temp\script.txt" echo bye start /B /WAIT ftp.exe -s:"C:\Documents and Settings\%USERNAME%\temp\script.txt" del "C:\Documents and Settings\%USERNAME%\temp\script.txt" cron script for Linux server: For all users that will have cd burning: Create "cdburn" folder under My Documents. Make an icon on the user's desktop and/or start menu that points to the script above and give it a decent icon.