PXES Version 0.6: readme

by Diego Torres Milano < diego@in3.com.ar >
Copyright © 2001-2003. All rights reserved.
This software is free software under the GNU General Public License.

Instant thin client

PXES is a micro Linux distribution allowing to create or boot thin clients.
These thin clients could be a real thin client or any compliant PC hardware (see list below) that you can turn into a thin client in minutes.
After booting it will be capable of accessing:

    XDMCP server (X Display Manager),
    mainly on Linux, Solaris and other Unices, presenting the graphical login screen.

    Microsoft Terminal Server through RDP (Remote Desktop Protocol)
    on Microsoft Windows NT, 2000, 2003 and XP

    Citrix ICA server supporting Version 6.30 and Version 7.00


    VNC (Virtual Network Computer) server


    LOCAL X Windows session with local window manager and simple desktop

    LTSP/K12LTSP server (Linux Terminal Serverl Project),
    LTSP configured with graphical login screen

    IBM Host Access emulating 3270 and 5250 termianls


    Telnet emulating an ANSI terminal


    SSH remote session


    Tarantella session


    NoMachine NX session




There's also a document telling how to configure an Citrix ICA client because this client software cannot be re-distributed.
See Configuring ICA.

The actual configuration of clients is made with an easy to use graphical configuration tool conforming the GNOME druid (wizard) format, allowing the setting of clients parameters, the server to access to, the configuration of local devices such as network card, keyboard layout, sound card and audio devices, local printing services and USB devices.

You can recycle hardware that is useless running current desktop OS or office package and give it a second chance.

Any Intel 486 with 16 Mb of RAM can be used to get started, although a Intel Pentium I with 32 Mb of RAM is recommended.

Because no local devices, such diskette, cd-rom or hard disks are needed, you can dramatically reduce the TCO (Total Cost of Ownership) with clients as thin as possible. This means for example that you can reduce the virus and security incidents in your network to a minimum. But if you need such devices you can configure the clients to use it.

This thin client boots from the network with PXE ( Intel Pre-Execution Environment specifications) so neither boot diskette nor boot eprom is needed. Although if your hardware doesn't support PXE there are alternatives configurations making a tagged kernel image, selecting Enable network bootable image while configuring your initial ram disk image and then use Etherboot to boot from diskette or EPROM, boot from an internal DiskOnChip or DiskOnModule, from a local cd-rom, or even a small hard disk using LILO or GRUB.

The linux kernel and an initial root filesystem are transmitted over the network (the compressed size as of version 0.6 is about 4.7M).

This version of PXES combines many things to achieve its objectives:

After booting, the thin client is completely stand-alone, so no NFS server is needed. Of course if you want to access an XDMCP, Microsoft Terminal Server , Citrix ICA server or any other server these servers are required.

Freeing the dependency of the NFS server allows for the existence of completely stand alone clients, mainly when they are used in a Microsoft ONLY environment where no NFS server is available and you don't want to deploy a Unix/Linux NFS server.
On the other side, not using NFS imposes that the distribution should remain micro.

Here are some screenshots of PXES after booting, showing the XDMCP login screen and the Microsoft Terminal Server login.

 

 

There are more screenshots of PXES visiting the screenshots page .

Installation

These are the steps to get PXES up and running:

and voila!

Server configuration

PXES Installation

PXES is split in components to make the installation easier and let you install the component you're going to use.

You need at least pxes-base and pxesconfig to get started.

This should be installed on any server used to generate the initial ram disk and configuration of thin clients. If this is not your TFTP server then you need to copy the generated ram disk image, kernel and configuration files to the TFTP server in the corresponding directory.

PXES base installation

Installing from RPM

Install the pxes-base-arch-0.6-release RPM.

You should choose the arch that better represents your thin client base.

Pxes-base depends on the TFTP server and DHCP server, so you should have them installed.

After following the instructions of TFTP server installation and DHCP server installation , run

# rpm -Uvh pxes-base-arch-0.6-release.i386.rpm

By default this RPM install in /opt but if you prefer to install it on /usr or another directory you must specify --prefix=/dir

Installing from tgz

Untar the distribution in a temporary location, edit the Makefile to suit your needs and as root run

# make install

TFTP server installation

The required TFTP server package is at least tftp-server-0.28-2. This is part of the standard Red Hat 7.3 and following distributions.

# rpm -Uvh tftp-server*.rpm

Or you can install tftp-hpa-server-0.28-1 which can be downloaded in RPM package from:

http://www.fis.unipr.it/pub/linux/contrib/redhat/6.2/RPMS/i386/tftp-hpa-server-0.28-1.i386.rpm

http://etherboot.sourceforge.net/tftp-hpa/tftp-hpa-0.29-1.i386.rpm

Or in TGZ distribution from:

http://www.kernel.org/pub/software/network/tftp/

After installing the software verify the corresponding xinted configuration and test it from another host's command line.

You can use a Microsoft Windows server acting as a TFTP server, Accordingly to the SYSLINUX documentation:

If your boot server is running Windows (and you can't fix that), try tftpd32 by Philippe Jounin:

http://tftpd32.jounin.net/

And maybe you end up with the things working.

If you have no access to any Unix/Linux server to deploy the PXES files check: Ms only environment HOWTO

DHCP server installation

The tested dhcp server was a dhcp-2.0pl5-8 included in Red Hat 7.2 distribution and dhcp-3.0pl1-9 included in Red Hat 8.0, but choose whatever you want.

# rpm -Uvh dhcp-2.0pl5-8.rpm

It's not required that the DHCP server would be the same as the TFTP server, and this could be useful in some situations where you have a local DHCP server or DHCP-Proxy away from the servers network.

Your DHCP configuration should look like:

allow booting;
allow bootp;

# Standard configuration directives...
option domain-name "your.domain";
option domain-name-servers ns1.your.domain, ns2.your.domain;
option routers 10.0.0.1;
option resource-location-servers server.your.domain;
option font-servers server.your.domain;
option x-display-manager server.your.domain;
option tftp-server-name "tftp.your.domain";

max-lease-time 120;
default-lease-time 120;

subnet 10.0.1.0 netmask 255.255.255.0 {
}

# Group the PXE bootable hosts together
group {
        # PXE-specific configuration directives...
        next-server tftp.your.domain;
        server-name "dhcp.your.domain";
        filename "/pxes/pxelinux.0";
        get-lease-hostnames true;
        use-host-decl-names on;
        
        host pxes1 {
                hardware ethernet 0:01:02:7a:e1:af;
                fixed-address 10.0.1.1;
        }
        
        host pxes2 {
                hardware ethernet 0:01:02:d2:1c:e6;
                fixed-address 10.0.1.2;
        }
}

During the setup you can run the server in debug mode to see what is happening.

# dhcpd -d

You should see the requests and responses.

You only need to adapt this configuration to your network environment, starting with the provided sample.

PXES configuration tools installation

Installing from RPM

pxesconfig depends on Gtk-Perl and Glade-Perl, so before installing it you should install Gtk-Perl version 0.7008-3 or higher and Glade-Perl 0.60 or higher.

# rpm -Uvh Gtk-Perl-0.7008-3.i386.rpm
# rpm -Uvh Glade-Perl-0.60-1.noarch.rpm

You can download Glade-Perl from PXES' extras session download.

Install the pxesconfig-0.6-release RPM, use the appropriate release:

# rpm -Uvh pxesconfig-0.6-release.noarch.rpm

By default this RPM install in /opt but if you prefer to install it on /usr or another directory you must specify --prefix=/dir

Installing from tgz

pxesconfig depends on Gtk-Perl and Glade-Perl, so before installing it you should install Gtk-Perl version 0.7008-3 or higher and Glade-Perl 0.60 or higher.
Untar the distribution in a temporary directory, edit the Makefile.PL to suit your needs and then run

# perl Makefile.PL
# make
# make install

Initial ram disk creation or modification

During the boot process an image of an initial ram disk is requested. This is the image you're going to create.

A GNOME druid will help you in the creation or modification of the initial ramdisk.

You need to add an entry like the following one to your /etc/fstab in order to mount the filesystem during its creation or configuration

  /tmp/pxes.initrd        /tmp/pxes       ext2    loop,noauto,user,owner  0 0
      

Running the /opt/bin/pxesconfig command you will have the option of select the values that fit your environment.

If you are initializing the ram disk, what must be true the first time you run pxesconfig, the initialize check button informs the druid about you intentions. And because there are some privileged operations while creating the filesystem you must be root.

For datails and to know how to quick start configuring your thin client in 7 steps check the pxesconfig document Pxesconfig Quick Start Guide .

pxesconfig druid


Boot configuration file

If you have changed the default ram disk name, or you need to set some parameters for some images, you need to change or add an entry in the pxelinux configuration file /tftpboot/pxes/pxelinux.cfg/default

default pxes
prompt 1
timeout 600
display pxes.msg
F1 pxes.msg

label pxes
   kernel vmlinuz-2.4.20-1pxes.i586
   append ramdisk_size=16384 vga=771 console=null initrd=pxes-0.6.initrd root=/dev/ram

label pxes247
   kernel vmlinuz-2.4.7-10pxes
   append ramdisk_size=16384 initrd=pxes-0.6.initrd root=/dev/ram

You can configure as many entries as you need, for examples you can have one entry to boot thin clients accessing a Microsoft Terminal Server and another for clients accessing XDMCP servers.

Be sure to adapt the ramdisk_size value with the size of your generated image without compression. To know this size, just after creating the image check the /tmp/pxes.initrd file size.

Images parameters can be altered by command line arguments. You can include any of the PXES variables in the kernel command line.

Graphical boot screen

If you graphics controller is fully VESA compliant you can try setting the vga mode in the kernel command line, additionally giving you a banner logo.

 

640x400

800x600

1024x768

256

0x301 (769)

0x303 (771)

0x305 (773)

32K

0x310 (784)

0x313 (787)

0x316 (790)

64K

0x311 (785)

0x314 (788)

0x317 (791)

16M

0x312 (786)

0x315 (789)

0x318 (792)

Boot the client

Set the BIOS or interrupt the normal boot process to boot from the network, usually pressing F8 or F12.

If everything goes well you will see it taking the IP address from the DHCP server and the graphical screen showing the PXES fish. At the bottom of the screen there will be a boot prompt

boot:

Just press enter, wait for timeout, or type the entry name you want to boot.
You can specify the time-out in the configuration.

After a few seconds the XDMCP or Microsoft Terminal Server login screen will appear.

Kernel command line parameters

To alter the behavior of the client while it is booting some special kernel command line parameters can be added in the boot configuration file or from the keyboard.

Variable

Abbreviation

Type

Comment

ASK




BOOT_MESSAGES

bm

integer

Boot messages level

CONFIGURATION_DIRECTORY

cdir

string

Configuration directory if remote configuration is enabled

CONFIGURATION_SERVER_NAME

csn

string

Configuration server name or IP address if remote configuration is enabled

CUSTOM_SESSION


string


DHCP_ERROR_NON_FATAL


boolean


KEYBOARD_LAYOUT


string


LOCAL_DVDCDROM_ENABLED


boolean


LOCAL_FLOPPY_ENABLED


boolean


LOCAL_HARDDISK_ENABLED


boolean


LOCAL_PRINTER_DEVICE


boolean


LOCAL_PRINTER_ENABLED


boolean


LOCAL_PRINTER_PORT


integer


LOCAL_SAMBA_ENABLED


boolean


LOCAL_SESSION


string


LOCAL_SOUND_CARD


string


LOCAL_SOUND_CARD_OPTIONS


string


LOCAL_SOUND_DEVICE


string


LOCAL_SOUND_ENABLED


boolean


LOCAL_USB_ENABLED


boolean


MOUSE_ACCEL_DIV


integer


MOUSE_ACCEL_MULT


integer


MOUSE_ACCEL_THR


integer


MOUSE_DEVICE


string


MOUSE_EMULATE_3_BUTTONS_ENABLED


boolean


MOUSE_EMULATE_3_TIMEOUT


integer


MOUSE_HANDED

mh

string


MOUSE_PROTOCOL

mp

string


MOUSE_PROTOCOL_PREFIX

mpp

string


MOUSE_WHEEL_ENABLED

mwe

boolean


NETWORK_CARD

nc

string


NETWORK_CARD_OPTIONS

nco

string


PROMPT_BEFORE_CLIENT


boolean

Inittab setting

PXES_DEBUG


integer


RDP_DOMAIN

rd

string


RDP_DONT_REQUEST_LICENSE


boolean


RDP_DONT_SEND_MOTION_EVENTS


boolean


RDP_FORCE_BITMAP_UPDATES


boolean


RDP_GEOMETRY


string


RDP_IS_FULL_SCREEN


boolean


RDP_PASSWORD

rp

string


RDP_SERVER_NAME

rdp

string


RDP_SERVER_VERSION

rsv

string


RDP_USER

ru

string


REMOTE_CONFIGURATION_ENABLED

rce

boolean


VNC_COMPRESSION


integer


VNC_DISPLAY


integer


VNC_GEOMETRY


string


VNC_IS_FULL_SCREEN


boolean


VNC_IS_SHARED


boolean


VNC_PASSWORD_FILE


string


VNC_QUALITY


integer


VNC_SERVER_NAME

vnc

string


WAIT_ON_ERROR

woe

boolean


X_BPP


integer


X_COLOR_DEPTH


integer


X_DRIVER

xd

string


X_DONT_ZAP


boolean


X_FONT_SERVER_ENABLED


boolean


X_FONT_SERVER_NAME


string


X_FONT_SERVER_PORT


integer


X_HORIZONTAL_SYNC


string


X_MONITOR_AUTODETECT_ENABLED


boolean


X_NUMLOCK


boolean


X_OPTION_NOACCEL


boolean


X_REMOTE_CONNECTIONS_AUTHORIZED_FROM


string


X_REMOTE_CONNECTIONS_ENABLED


boolean


X_SESSION_TYPE (DEPRECATED)


string


X_VERTICAL_REFRESH


string


X_VIDEO_MODES


string


XDM_METHOD


string


XDM_SERVER_NAME


string


XDM_SERVER_PORT


integer




Alternative boot methods

If you hardware is not PXE 2.x compliant you can use alternatives methods to boot the thin client.

Customization

Dynamic configuration

To support differences in hardware and configuration of thin clients dynamic configuration can be used. Enabling this option configuration parameter are obtained from a server after booting. The server is accessed with TFTP.

You can select this option from pxesconfig as “enable remote configuration” and setting the TFTP server and directory, by default it is “/pxes/config”.

Simplified kernel 2.4

Because an standard thin client doesn't need disk controllers, peripherals, etc., a simplified kernel 2.4 is used to boot.

You can use the kernel configuration included in the distribution source as a starting point to build your own kernel or adding modules.

See Customizing kernel and modules HOWTO for a detailed information.

Components

Great flexibility of customization as this is build from stock Red Hat 7.2 components, so in the case that your hardware doesn't meet the requirements you can select the appropriate components and rebuild this micro distribution.

Additional software can be included in the stock repository that will be in any ramdisk you create.

Graphical boot screen

The tools needed to change the graphical boot screen are included in the SYSLINUX distribution, allowing you to convert the image you want into a suitable format.

The standard distribution comes with this screen

PXES splash screen


Compliant Hardware

The downloadable images are compiled for i586. If you're using any other processor build a new image from sources.

Network card

Video card

PXES 0.6 includes the SVGA server from XFree86 3.3.6 and Xfree86 4.3.0, so the list and status of supported hardware is http://www.xfree86.org/current/Status.html

Note: Intel i810 is supported because the agpgart module is included too.

Audio

Checked hardware

Thin Client

Personal Computer

Video card

Network card

If you have 3Com cards you can upgrade the flash rom with MBA: http://support.3com.com/infodeli/tools/nic/mba.htm

PXE Hardware list

The OEM hardware list supporting the PXE specitication, frozen in December 2001, is:

http://www.intel.com/labs/manage/wfm/managedpc/systemlist.htm

Future enhancements

Future versions will provide

Resources

http://pxes.sourceforge.net

http://syslinux.zytor.com

http://www.busybox.net

http://www.rdesktop.org

http://www.redhat.com

http://www.kernel.org/pub/software/network/tftp

http://tftpd32.jounin.net

http://etherboot.sf.net

http://rom-o-matic.org






$Id: readme.html,v 1.12 2003/07/04 16:33:03 diego Exp $