<< Prev  |  TOC  |  Front Page  |  Talkback  |  FAQ  |  Next >>
...making Linux just a little more fun!
Creating Linux Diskless Client For Windows 2k/2003 Terminal Service
By Avinoam Levkovich

version 1.0

The company I work for has many old computers that are no longer suitable for the common application today ( try Running Office XP/2k on a P-I 100MHZ with 32MB Ram, and you will find out that this is not a pleasant experience ). We start looking for a solution that will save the money of buying new computers or Brand thin-clients. The goal was to use our old computer and still get good performance . We find the Linux solution just great for my goals.

we still use our old computer and the only investment we will have to make is buying the Windows 2K/2003 licenses and hardware .

The solution is actually an integration of the following Sub systems :  LTSP, rdesktop and wilisystem , fortunately those systems are integrating quite naturally as you will see .


LTSP  (  http://www.ltsp.org ) :

Is the backbone of all the system which provide the Linux terminal services for the diskless client. after installing LTSP it create the /opt/ltsp/i386  Directory.

this Directory will be the root system of our diskless clients.  when booting the client it will get its kernel by tftp from LTSP and then it will mount /opt/ltsp/i386 as its root directory.

So after your client finish its boot process you will be logged to your LTSP Server and your file system will be the /opt/ltsp/i386 Directory. and then the Wilisystem start Working.


Rdesktop :   http://www.rdesktop.org/

Microsoft has developed a protocol called RDP which is used for the Terminal Server communication with the client.

The rdesktop package is an application that opens  RDP Session with a Windows Server and by doing it , the Linux station become a Windows Terminal Client.


Wilisystem ( http://www.wilisystem.com/ ) :

The Wilisystem is actually a patch for the LTSP server. what is does is make the connection to the Windows Terminal Server as easy as it can get.

The Wilisystem uses the rdesktop package and finish the Diskless client boot process with the Windows login screen. by doing this it make the LTSP Session invisible to the user who feel as if he is plugged directly to the Windows Server .

I must thank the wilisystem developers for a great job !


Rom-O-Matic :  www.rom-o-matic.net

This is where you get you boot image for you selected boot Device ( I used a floppy ). after specifying your Ethernet card model you can download your boot image.

 Great implementation for a great idea.


please read the documentation from the Above web site's.  when you read the documentation you will discover all the options and benefits that you can get from this system and how to tune it to your needs.


what you need :
1. Linux Server , I used P-III 800 with 256MB RAM , With Red Hat 9.0  .
2. Diskless Client, I used a P-I 133MHZ , 32MB RAM, Ati - Rage XL (mach64 Family) Display Adaptor, with the intel 100/pro Ethernet .
3. Windows 2K/2003 Server With Terminal Services installed, configured and Running .
  I used a P-4 1.7MHZ with 256MB RAM.
  Create your diskless Client Environment:
  The Diskless Client will be called ws009.
  The Linux Server Side :
1. Find your Client ( ws009 ) Display card Model  and his Ethernet mac address and write them down, you will need them later.
2. Download and install the Following packages from http://www.ltsp.org :
3. Install the rdesktop package from your RedHat CD or Download it form http://www.rdesktop.org/ .
4. Download the wilisystem patch from www.wilisystem.com , and install it .
5. Make sure that the packages for the Dhcp,Nfs,Tftp servers are installed.
6. Edit the file /opt/ltsp/install_scripts/CONFIG and change the settings  to match your network Setting.
7. Run  /opt/ltsp/templates/ltsp_initialize 

        # cd /opt/ltsp/templates/ltsp_initialize 

        #  ./ltsp_initialize


Copy /etc/dhcpd.conf.example to /etc/dhcpd.conf and check that all the network numbers match your network Configuration.

  Check the Mac address of your client and update the client configuration section ( host ws009 ) in the dhcpd.conf file.

Here is my /etc/dhcpd.conf :

            ddns-update-style none;

            default-lease-time 21600;
            max-lease-time 21600;

            option subnet-mask;
            option broadcast-address;
            option routers;
            option domain-name-servers;
            option domain-name "my-domain.com";
            option root-path "";

            option option-128 code 128 = string;
            option option-129 code 129 = text;

            shared-network WORKSTATIONS {
                        subnet netmask {

            group {
                        use-host-decl-names on;
                        option log-servers;

                        host ws009 {
                                                hardware ethernet 00:02:B3:2D:B0:D2;
                                                filename "/lts/vmlinuz-2.4.21-ltsp-1";


9. Check /etc/exports. check that the IP numbers match your network Configuration.  if everything is fine run :           
        # exportfs -r
      # exportfs -a
10. Check that your client is properly listed in /etc/hosts.
  if your client name is w009 and your domain is my-domain.com you should add a line to your /etc/hosts file  like :       ws009.my-domain.com         ws009
this name (ws009) should be the same as the client name ( host ws009) that you configured in your dhcp.conf
12. Check /opt/ltsp/i386/etc/lts.conf at the end of the file you should see the wilisystem configuration

Here is my Wilisystem Config , I added my remarks for the configuration part:

# Config part for the http://www.wilisystem.com
# example ws009 accessing the W2K/NT4 TSE
RDPSERVER =                  # The ip of your W2K/NT4 Terminal Server
RUNLEVEL = 7                                     # runlevel 7 for wilisystem
SERVER =                      # The IP of your LTSP server
XSERVER = auto                                  # auto Discovery of your Display-card

# if your display card fail in the auto mod, you should download the proper ltsp_x336-XXX from www.ltsp.org and specify it like    XSERVER      = XF86_Mach64

X_MODE_0 = 1024x768        # The Resolution that you want, ( 1024x768 , 800x600 ...)

X_COLOR_DEPTH = 15      # The color Depth .. i think win2k server only support 8 bit (256) color.

# the folowing line configure your mouse , check the Documentation page for more mouse type configuration : http://www.ltsp.org/documentation/

X_MOUSE_DEVICE = "/dev/psaux"

13. Make sure that the tftp service is enabled in the xinetd directory.
  run :
#  service dhcpd restart
#  service xinetd restart
#  service nfs restart
  The verify that the tftp server is running. run :   netstat -anp | grep ":69 "
you should get something like : udp 0 0* 799/xinetd

verify dhcp server by :   netstat -anp | grep ":67 "
you should get something like : udp 0 0* 2086/dhcpd

If dhcp is not working try restarting it .
If tftp is not working then you have to enable tftp in /etc/xinetd.d/tftp  and restart it.
14. The default runlevel is specified in  /opt/ltsp/i386/etc/lts.conf  is runlevel 5 BUT in the wilisystem section it override the default with its own Runlevel 7 ( if you take a look at /opt/ltsp/i386/etc/inittab you will see wilisystem Configuration for this runlevel.).
  if you exerience problems you should change it. try to load your client with one of the other clients configuration that you have in /opt/ltsp/i386/etc/lts.conf , ws001 is a good start . remember to change your dhcp configuration and your hosts file to match your new host name. and choose the runlevel 3 . this will only load the ltsp system without trying to connect to the Windows Terminal Server.

then you will be able to debug the system.

  The Diskless Client Side
1. Get your initial client boot kernel from : http://rom-o-matic.net/  
  To creat  a boot floppy from the image you downloaded run :
  # cat eb-5.0.10-yournic.lzdsk > /dev/fd0
  where "eb-5.0.10-yournic.lzdsk" is where you stored your downloaded ROM image.
2. Reboot the client with the boot floppy that you created from the boot image.
  After The boot process finished ,you should get the Windows logon screen  :-)


  i experienced screen flickers when the  X Server was trying to load and failes with message "no screens found " , it was because the system didnt recognized my display adaptor ,  which is "mach64" family , it was solved after I downloaded the proper Xfree 3.3 Drivers from the ltsp site. and I used the " XSERVER = XF86_Mach64 " in the lts.conf file.




















































































Copyright © 2003, Avinoam Levkovich. Copying license http://www.linuxgazette.com/copying.html
Published in Issue 93 of Linux Gazette, August 2003

<< Prev  |  TOC  |  Front Page  |  Talkback  |  FAQ  |  Next >>