PXES Version 0.6: readmeby
Diego Torres Milano <
diego@in3.com.ar > |
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), |
|
Microsoft Terminal Server through RDP (Remote
Desktop Protocol) |
|
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), |
|
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:
PXE from Intel
Etherboot when PXE is not available
GRUB or PXELinux to boot from network
XDMCP to obtain a graphical login
Rdesktop to access Microsoft Terminal Server® services
ICA Client software to access Citrix ICA servers.
VNCviewer client to access VNC servers
Busybox to reduce the overall footprint
RedHat packages to build the small distribution made from standard components
Kernel 2.4.20
Xfree86 3.3.6 to support old hardware and to reduce the image size
Xfree86 4.3.0 to support new hardware not supported by previous versions
GUI Configuration programs
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 .
These are the steps to get PXES up and running:
Install and configure the XDMCP Server or
Install and configure the Microsoft Terminal Server, Citrix ICA Server or VNC Server (these steps are not covered here)
Boot the PXE 2.x compliant client PC (if the hardware is not PXE 2.x compliant there're are some alternatives to boot your thin client. See below.
and voila!
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.
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
Untar the distribution in a temporary location, edit the Makefile to suit your needs and as root run
# make install
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:
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
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.
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
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
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 .
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.
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) |
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.
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 |
|
If you hardware is not PXE 2.x compliant you can use alternatives methods to boot the thin client.
Etherboot
Hard disk
CD-ROM
DiskOnChip
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”.
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.
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.
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
The downloadable images are compiled for i586. If you're using any other processor build a new image from sources.
3Com 3c59x/3c9xx ethernet
Intel i82595 ISA EtherExpressPro10/10+
Intel i82557/i82558/i82559 PCI EtherExpressPro
Lance
NE 2000
PCI NE2000 clone
PCnet32 and PCnetPCI
SiS 900 PCI Fast Ethernet
SMC Ultra
SMC 9194
TI ThunderLAN based ethernet PCI
Western Digital
Digital 21*4* Tulip ethernet
RealTek RTL-8139 Fast Ethernet
VIA Rhine
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.
s3_savage, NV1, STG2000, RIVA 128, RIVA TNT, RIVA TNT2, RIVA ULTRA TNT2, RIVA VANTA, RIVA ULTRA VANTA, RIVA INTEGRATED, GeForce 256, GeForce DDR, Quadro, GeForce2 GTS, GeForce2 GTS (rev1), GeForce2 Ultra, Quadro 2 Pro, GeForce2 MX, GeForce2 MX DDR, Quadro 2 MXR, ET4000, ET4000W32, ET4000W32i, ET4000W32i_rev_b, ET4000W32i_rev_c, ET4000W32p, ET4000W32p_rev_a, ET4000W32p_rev_b, ET4000W32p_rev_c, ET4000W32p_rev_d, ET6000, ET6100, et3000, pvga1, wd90c00, wd90c10, wd90c30, wd90c24, wd90c31, wd90c33, gvga, r128, ati, sis86c201, sis86c202, sis86c205, sis86c215, sis86c225, sis5597, sis5598, sis6326, sis530, sis620, sis300, sis630, sis540, tvga8200lx, tvga8800cs, tvga8900b, tvga8900c, tvga8900cl, tvga8900d, tvga9000, tvga9000i, tvga9100b, tvga9200cxr, tgui9400cxi, tgui9420, tgui9420dgi, tgui9430dgi, tgui9440agi, cyber9320, tgui9660, tgui9680, tgui9682, tgui9685, cyber9382, cyber9385, cyber9388, cyber9397, cyber9520, cyber9525, 3dimage975, 3dimage985, cyber9397dvd, blade3d, cyberblade, clgd5420, clgd5422, clgd5424, clgd5426, clgd5428, clgd5429, clgd5430, clgd5434, clgd5436, clgd5446, clgd5480, clgd5462, clgd5464, clgd5465, clgd6205, clgd6215, clgd6225, clgd6235, clgd7541, clgd7542, clgd7543, clgd7548, clgd7555, clgd7556, ncr77c22, ncr77c22e, cpq_avga, mga2064w, mga1064sg, mga2164w, mga2164w AGP, mgag200, mgag100, mgag400, oti067, oti077, oti087, oti037c, al2101, ali2228, ali2301, ali2302, ali2308, ali2401, cl6410, cl6412, cl6420, cl6440, video7, ark1000vl, ark1000pv, ark2000pv, ark2000mt, mx, realtek, s3_virge, AP6422, AT24, AT3D, s3_svga, NM2070, NM2090, NM2093, NM2097, NM2160, NM2200, ct65520, ct65525, ct65530, ct65535, ct65540, ct65545, ct65546, ct65548, ct65550, ct65554, ct65555, ct68554, ct69000, ct64200, ct64300, mediagx, V1000, V2100, V2200, p9100, spc8110, i740, i740_pci, Voodoo Banshee, Voodoo3, i810, i810-dc100, i810e, i815, smi, generic
ac97
ac97_codec
aci
ad1816
ad1848
adlib_card
Audio Excel DSP 16 Driver Version 1.3
SB AWE32/64 WaveTable driver
btaudio - bt878 audio dma driver
CM8x38 Audio Driver
CS4232 based soundcard driver
Crystal SoundFusion Audio Support
ES1370 AudioPCI Driver
ES1371 AudioPCI97 Driver
ESS Solo1 Driver
gus
Intel 810 audio support
mad16
ESS Maestro Driver
ESS Maestro3/Allegro Driver
maui
mpu401
Turtle Beach MultiSound Driver Base
Turtle Beach MultiSound (Classic/Monterey/Tahiti) Linux Driver
nm256_audio
opl3
opl3sa
Module for OPL3-SA2 and SA3 sound cards (uses AD1848 MSS driver).
pas2
Module for PSS sound cards (based on AD1848, ADSP-2115 and ESC614). This module includes control of output amplifier and synth volume of the Beethoven ADSP-16 card (this may work with other PSS cards).
Soundblaster driver
sb_lib
sgalaxy
S3 SonicVibes Driver
OSS Sound subsystem
Core sound module
sscape
Trident 4DWave/SiS 7018/ALi 5451 PCI Audio Driver
uart401
uart6850
Turtle Beach WaveFront Linux Driver
Yamaha YMF7xx PCI Audio
Wincor Nixdorf BEETLE
Wyse Winterm
HP Vectra
Dell Optiplex
Intel i810/815
NVIDIA RIVA
NVIDIA GeForce2
Trident Cyberblade
3Com 3C905 Tornado
TI ThunderLAN based ethernet PCI
Intel EtherExpressPro100
Via
If you have 3Com cards you can upgrade the flash rom with MBA: http://support.3com.com/infodeli/tools/nic/mba.htm
The OEM hardware list supporting the PXE specitication, frozen in December 2001, is:
http://www.intel.com/labs/manage/wfm/managedpc/systemlist.htm
Future versions will provide
Dynamic DNS
IPSec
http://www.kernel.org/pub/software/network/tftp
$Id: readme.html,v 1.12 2003/07/04 16:33:03 diego Exp $