We have created RPM's and TGZ's containing all of the pieces you will need to setup a Linux system as the server.
The distributions are known to work with the following systems:
It may work with other distributions. If you would like to port LTSP to another distribution not listed above, there is a porting guide included in the lts_core package. Please let us know if you get the port completed.
You can download all of the software from the LTSP download page or you can ftp the files from the LTSP ftp server.
Core LTS package, contains the root filesystem, including the configuration utilities and documentation for the workstations.
Pre-compiled kernels for diskless booting with various network cards are available.
There is a large assortment of X servers available for download from the ltsp.org site.
All of these packages are available at LTSP> or LTSP ftp server.
Each machine in your network needs a unique IP address. We have chosen one of the reserved Class-C networks, 192.168.0.0. Of course, you are free to choose any addresses you want.
For the server, we chose 192.168.0.254, and for the workstations, we started with 192.168.0.1 and climb up from there, this gives us the possibility of having 253 workstations associated with a single server. If you need more workstations than that, you can either setup another class-c on the server, perhaps 192.168.1.254 and have the additional workstations use the addresses between 192.168.1.1 and 192.168.1.253. Or, you can go to a Class-B address, and have 65533 workstations all running on the same network. (Sounds pretty cool eh?)
We kept the names of the workstations simple, starting with 'ws001' and going up. Again, you are free to choose any names you want for the workstation. Just make sure they are setup in /etc/hosts or in DNS.
By default, the X Font Server is NOT used with LTSP. If you want to use it, you should read this section. If not, then you can skip it.
As of lts version 1.01, the default mode is to NOT run xfs. The
following instructions are only required if you choose to set the
'USE_XFS
' configuration parameter in the
/tftpboot/lts/ltsroot/etc/lts.conf
file
to 'Y
'
The version of xfs that ships with Redhat-6.0 doesn't handle remote
workstations. There is an updated xfs that you can download from Redhat
or from the LTSP web and ftp sites.
You will need XFree86-xfs-3.3.3.1-52.i386.rpm
or later.
If you are running Redhat 6.1 or later on the server, you don't need
to worry about the XFS package, it will handle serving fonts to remote
workstations. You will, however, need to change the startup script and
the XF86Config file on the server.
The command you need to use to install the upgrade is:
rpm -U XFree86-xfs-3.3.3.1-52.i386.rpm
Once you install the upgrade, you will need to modify the startup script so that it will
serve fonts to remote workstations. The file to edit is: /etc/rc.d/init.d/xfs
.
There are two lines that need to be modified. The changes you make to the startup script depends
on which version of Redhat you are running on the server.
Look for the lines that start with daemon --check xfs su xfs -c \"xfs -port -1\" -s /bin/sh
.
There are two of them, one is on or around line 22 and the other
is on or around line 41.
Change the lines to read:
daemon --check xfs su xfs -c \"xfs -port 7100\" -s /bin/sh
* NOTE: Make sure you change the '-1' to '7100' (without the minus '-' sign).
Look for the lines that start with daemon xfs -droppriv -daemon -port -1
.
There are two of them, one is on or around line 22 (line 53 for RH6.2) and the other
is on or around line 41 (line 73 for RH6.2).
Change the lines to read:
daemon xfs -droppriv -daemon -port 7100
* NOTE: Make sure you change the '-1' to '7100' (without the minus '-' sign).
The above change will allow the X font server daemon to serve fonts to remote workstations.
A change MUST now be made to the /etc/X11/XF86Config
file.
Look for the line that says:
FontPath "unix/:-1"
You will need to change it to:
FontPath "tcp/localhost:7100"
That is, change the 'unix' to 'tcp' and change the ':-1' to 'localhost:7100'.
If you are using BOOTP instead of DHCP, you will need to download the bootpd package. Redhat doesn't include bootpd on the 6.0 or later distribution CD, so you will need to get it from an earlier version, download it from Redhat, or you can download it from ftp.ltsp.org.
The command to install the bootp package is:
rpm -i bootp-2.4.3-7.i386.rpm
This will install the bootp daemon and a sample configuration file.
You need to make sure that the DHCP server is installed on the server. You can verify that by running the following command:
rpm -qa | grep dhcp
It should report a line like:
dhcp-2.0-5
If it doesn't, then you need to load the DHCP rpm from the RedHat installation CD.
The DHCP installation routine from Redhat fails to create the dhcpd.leases file, so you will need to create it yourself. The command:
>/var/state/dhcp/dhcpd.leases
will create the new empty file.
Download the lts_core-2.xx-xx.i386.rpm file and install it using the following command:
rpm -i lts_core-2.xx-xx.i386.rpm
This will install the ltsp core package.
It will then setup the /tftpboot/lts directory, which contains the basic root hierarchy that will be mounted as the root filesystem of the workstation. It will also modify several system files. See the Security Concerns above for a list of the system files that will be modified.
If you are upgrading from a previous version of ltsp, your /tftpboot/lts/ltsroot directory will be saved by renaming it and appending a number to the end of the directory name.
For example, if it is the first time you have upgraded, /tftpboot/lts/ltsroot will become /tftpboot/lts/ltsroot.1 and a new /tftpboot/lts/ltsroot directory will be created.
After downloading the lts_core-2.xx-xx.i386.rpm file, you can install the upgrade by using the following command:
rpm -U lts_core-2.xx-xx.i386.rpm
This will save the existing configuration by making backup copies of all of
the system files that it updates.
When the workstation boots, it pulls a kernel from the server and loads it into memory. The kernel that it loads needs to be configured specifically for network booting, and it needs to have the proper network card driver included. It cannot load a network card driver module at this point. We have prepared a few kernels that are ready to go, you will just need to pick the correct one for your network card, download it and install it.
Various Linux kernels are available on our ftp and web site. They are pre-configured for specific network cards and available in RPM and TGZ format. The kernels that are available are:
For example, to install the Linux kernel for a NE2000 network card, do the following:
rpm -i lts_kernel_ne2000-2.2-0.i386.rpm
This will put the vmlinuz.ne2000 kernel in the /tftpboot/lts directory. You
can install other workstation kernels the same way.
You can create your own kernel. When setting kernel parameters, you MUST make sure you specify the following:
Once the kernel is built, it must be converted into a tagged image format, using
the mknbi-linux
command, which is part of the Etherboot package.
mknbi-linux --output=/tmp/vmlinuz.ne2000 \
--ipaddrs=rom \
--rootdir=/tftpboot/lts/ltsroot \
--append="ramdisk_size=1024" \
/usr/src/linux/arch/i386/boot/bzImage
The kernel then needs to be placed into the /tftpboot/lts directory.
You will need to pick the correct X server that is compatible with your video card. The XF86_SVGA server works with most video chipsets, but you may get better performance by using the server made specifically for your chipset.
You can download one of the X servers from ftp.ltsp.org that will automatically install themselves in the proper location.
We have packages in both RPM and TGZ format available on our ftp site. Files such as: lts_xmach64-2.0-1.i386.rpm and lts_xsvga-2.0-0.i386.rpm can be downloaded and installed.
For example, to install the X server for SVGA do the following:
rpm -i lts_xsvga-2.0-1.i386.rpm
This will put the XF86_SVGA server in the /tftpboot/lts/ltsroot/ltsbin
directory.
The installation of the lts_core package will add entries to several configuration files, but these entries may need to be modified for your specific needs.
Lately, the distributions have been leaning towards using xinetd instead of inetd. xinetd claims to be more secure and able to handle higher loads than it's predecessor. Either way, tftpd needs to be enabled.
By default, tftp is disabled. As part of the installation of LTSP, the tftp service will be turned on.
/etc/inetd.conf
By default, the lines in the inetd.conf file for the bootp and tftp servers are commented out. The LTSP installation procedure will un-comment the tftp daemon line, but it will NOT un-comment the bootps line. If you are running bootp, you will need to manually un-comment the line.
#
tftp dgram udp wait root /usr/sbin/tcpd in.tftpd
#bootps dgram udp wait root /usr/sbin/tcpd bootpd
#
If you already have the server setup in runlevel 5, then you are already getting the graphical login screen when the server is booted. In this case, the installation script will leave the Xservers file untouched. If you are running the server in runlevel 3, then the installation script will modify the Xservers file by commenting out the entry for the server's console. This is so that when the LTSP installation script changes the default runlevel to 5, the console won't switch into graphical mode unexpectedly. If you do want the server to run in graphical mode, then you can either start X-Windows by running the startx command or un-comment the line in the Xservers file.
This file controls whether a remote workstation can communicate with the xdm program on the server. The installation script will uncomment the wildcard entry to allow the remote workstations to get a login screen.
The line that is modified looks like:
* #any host can get a login window
By default, there is an entry that must be removed (or commented out).
The installation script will take care of commenting the line for you.
The line that is commented out looks like:
DisplayManager.requestPort: 0
The server needs to have xdm running. This is usually started from the
/etc/inittab
file. There are multiple display managers available.
Most system include XDM, GDM and KDM. You are free to choose whichever
one you want.
The installation script will setup the display manager to run for you, and it will change the default runlevel to 5.
The initdefault line is modified. It looks like:
id:5:initdefault:
Indicating that the server will boot into runlevel 5 when it starts up.
If you are not using bootp, then you can skip this item.
When you install the lts_core package, it adds the following entries to the /etc/bootptab file:
## LTS-begin ####################################################
.ltsp:\
:ht=ethernet:\
:ds=192.168.0.254:\
:gw=192.168.0.254:\
:lg=192.168.0.254:\
:sm=255.255.255.0:\
:hn:\
:hd=/tftpboot/lts:\
:rp=/tftpboot/lts/ltsroot:
#
# The following is an example of a line needed for a workstation
#
# ws001:tc=.ltsp:ha=AABBCCDDEEFF:bf=vmlinuz.ne2000:ip=192.168.0.1:
## LTS-end ######################################################
You will need to create a line for each workstation. You can use the
example line (commented out) as a template for the lines you add.
You will need to fill in the ha= entry with the ethernet address from the network card, you will need to fill in the bf= entry with the name of the kernel that you want the workstation to load, and you will need to fill in the ip= entry with the IP address that you want to assign to the workstation.
Also, if you are using a class-c other than the default of 192.168.0.0, then you will need to change the ip, ds, gw and lg entries above.
An example dhcpd.conf file is installed as part of the LTSP installation. The file is called /etc/dhcpd.conf.example It can be copied or renamed to /etc/dhcpd.conf and dhcpd can be started.
The file looks like:
default-lease-time 21600;
max-lease-time 21600;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.0.255;
option routers 192.168.0.254;
option domain-name-servers 192.168.0.254;
option domain-name "ltsp.org";
option netbios-name-servers 192.168.0.254;
shared-network WORKSTATIONS {
subnet 192.168.0.0 netmask 255.255.255.0 {
}
}
group {
use-host-decl-names on;
option log-servers 192.168.0.254;
host ws001 {
hardware ethernet 00:80:C8:D9:31:C1;
fixed-address 192.168.0.1;
filename "/tftpboot/lts/vmlinuz.ne2000";
}
host ws002 {
hardware ethernet 00:E0:18:E0:0C:09;
fixed-address 192.168.0.2;
filename "/tftpboot/lts/vmlinuz.eepro100";
}
}
If your server is configured with more than one IP address, then you will need to create additional 'subnet' entries in the dhcpd.conf file. You can use the example 'subnet 192.168.0.0 ....' entry as a template.
Once you have added the workstation to the bootptab file or dhcpd.conf file, make sure
you add the IP-Address and name of the workstation to either the
/etc/hosts
file, or set it up in your DNS tables either on the
server, or somewhere on your network. The NFS server MUST be able to
resolve the IP address to a name.
The LTSP installation script will add entries to the /etc/hosts.allow file that will allow bootpd, portmapper and tftp to function properly.
The entries added look like:
bootpd: 0.0.0.0
in.tftpd: 192.168.0.
portmap: 192.168.0.
The above entries are assuming that you are using the private 192.168.0.0 class-C. If
you are using a different class-C then substitute accordingly.
The default entry that is put into this file should be Ok. Unless you are
using a Class-C other than 192.168.0.0
. If you are using
a different class-c, then you need to modify this file to show it.
The default entry looks like:
## LTS-begin ##
#
# The lines between the 'LTS-begin' and the 'LTS-end' were added
# on: Sun Aug 6 23:30:29 EDT 2000 by the ltsp installation script.
# For more information, visit the ltsp homepage
# at http://www.ltsp.org
#
/tftpboot/lts/ltsroot 192.168.0.0/255.255.255.0(ro,no_root_squash)
#
# The following entries need to be uncommented if you want
# Local App support in ltsp
#
#/usr 192.168.0.0/255.255.255.0(ro,no_root_squash)
#/bin 192.168.0.0/255.255.255.0(ro,no_root_squash)
#/sbin 192.168.0.0/255.255.255.0(ro,no_root_squash)
#/lib 192.168.0.0/255.255.255.0(ro,no_root_squash)
#/home 192.168.0.0/255.255.255.0(rw,no_root_squash)
## LTS-end ##
If you want to run local apps (see: LOCAL_APPS) then you
will need to uncomment the entries for the directories other than
/tftpboot/lts/ltsroot.
The LTSP installation script will modify the /etc/rc.d/init.d/syslog startup script for you, to enable remote workstations to send their syslog messages to the server.
The modified line looks like:
daemon syslogd -m 0 -r
This is the config file for the workstations. Most of the configurable parameters for the workstations can be specified here.
The config file is comprised of sections, each section represents a workstation, and there is a Default section.
Section headers contain the name of the workstation or the word 'Default', surrounded by square brackets ('[' and ']'). If all of the workstations are identical, then you could get away with just having a Default section.
Example of a /tftpboot/lts/ltsroot/etc/lts.conf file:
[Default]
XSERVER = XF86_SVGA
SERVER = 192.168.0.254
X_MOUSE_PROTOCOL = "PS/2"
X_MOUSE_DEVICE = "/dev/psaux"
X_MOUSE_RESOLUTION = 400
X_MOUSE_BUTTONS = 3
USE_XFS = N
UI_MODE = GUI
[ws001]
XSERVER = XF86_SVGA
X_MOUSE_PROTOCOL = "Microsoft"
X_MOUSE_DEVICE = "/dev/ttyS1"
X_MOUSE_RESOLUTION = 50
X_MOUSE_BUTTONS = 3
X_MOUSE_BAUD = 1200
[ws002]
XSERVER = XF86_Mach64
[ws003]
XSERVER = XF86_SVGA
X_COLOR_DEPTH = 24
USE_XFS = N
[ws004]
UI_MODE = CHAR
This is the server that is used for the XDM_SERVER, TELNET_HOST, XFS_SERVER and SYSLOG_HOST, if any of those are not specified explicitly. If you have one machine that is acting as the server for everything, then you can just specify the address here and omit the other server parameters. If this value is not set, 192.168.0.254 will be used.
If you want to send logging messages to a machine other than the default server, then you can specify the machine here. If this parameter is NOT specified, then it will use the 'SERVER' parameter described above.
This will determine whether X-Windows will run, or a telnet session will run. The available choices are:
Currently, this is only used when NOT running local apps. The default value is GUI.
If the workstation is setup to have a character based interface, then the value of this parameter will be used as the host to telnet into. If this value is NOT set, then it will use the value of SERVER above.
Used to build the resolv.conf file.
Used to build the resolv.conf file.
Upto 10 kernel modules can be loaded by using these configuration entries. The entire command line that you would use when running insmod can be specified here. For example:
MODULE_01 = agpgart.o
MODULE_02 = uart401.o
MODULE_03 = sb.o io=0x220 irq=5 dma=1
MODULE_04 = opl3.o
When the workstation boots, it creates a ramdisk and mounts it on the /tmp directory. You can control the size of the filesystem with this parameter. Specify it in units of kbytes (1024 bytes). To create a ramdisk of 2 megabytes, specify RAMDISK_SIZE = 2048
If you change the size of the ramdisk here, you will also need to change the size of the ramdisk within the kernel. This can be compiled in, or if you are using Etherboot or Netboot, you tell the kernel the ramdisk size when you tag the kernel with mknbi-linux.
The default value for this is 1024 ( 1 mb )
If you want to point XDM to a machine other than the default server, then you can specify the server here. If this parameter is NOT specified, then it will use the 'SERVER' parameter described above.
This defines which X server the workstation will run.
Possible values include: XF86_SVGA and XF86_Mach64.
Any other XFree86 X server should work, as long as it has been
installed in the /tftpboot/lts/ltsroot/ltsbin
directory. The default value for this is XF86_SVGA.
Any value that will work for the XFree86 Pointer Protocol keyword can be put here. Typical values include "Microsoft" and "PS/2". The default value for this is "PS/2".
This is the device node that the mouse is connected to. If it is a serial mouse, this would be a serial port, such as /dev/ttyS0 or /dev/ttyS1. If it is a PS/2 keyboard mouse, this value would be /dev/psaux. The default value for this is /dev/psaux.
This is the 'Resolution' value in the XF86Config file. A typical value for a serial mouse is 50 and a typical value for a PS/2 mouse would be 400. The default value for this is 400
This tells the system how many buttons the mouse has. Usually set to 2 or 3. The default value for this is 3
For serial mice, this defines the baud rate. The default value for this is 1200.
This is the number of bits to use for the color depth. Possible values are 8, 15, 16, 24 and 32. 8 bits will give 256 colors, 16 will give 65536 colors, 24 will give 16 million colors and 32 bits will give 4.2 billion colors! Not all X servers support all of these values. The default value for this is 16.
You have a choice of running the X Font Server (XFS) or reading the fonts through the NFS filesystem. The font server should provide a simple way of keeping all of the fonts in one place, but there has been some problems when the number of workstations grows past about 40. The 2 values for this option are Y and N. The default value is N. If you do want to use a font server, then you can use the XFS_SERVER entry to specify which host will act as the font server.
If you are using an X Font Server to serve fonts, then you can use this entry to specify the IP address of the host that is acting as the font server. If this is not specified, it will use the default server, which is specified with the SERVER entry described above.
This sets the XFree86 HorizSync configuration parameter. It defaults to "31-62"
This sets the XFree86 VertRefresh configuration parameter. It defaults to "55-90"
This sets the XFree86 Modeline entry for the 1024 x 768 resolution. There is already a default for the 1024x768, 800x600 and 640x480. If you set Any of the X_MODE_ entries then the 3 default entries will NOT be used and only the entries that you set explicitly will be used.
Below is an example of the X_MODE_1024x760 entry.
X_MODE_1024x768 = "75.00 1024 1048 1184 1328 768 771 777 806 -hsync -vsync"
This sets the XFree86 Modeline entry for the 800 x 600 resolution. See the note on the 1024x768 entry for an explanation about the defaults.
This sets the XFree86 Modeline entry for the 640 x 480 resolution. See the note on the 1024x768 entry for an explanation about the defaults.
If you want to create your own complete XF86Config file you can do so and place it in the /tftpboot/lts/ltsroot/etc directory. Then, whatever you decide to call it needs to be entered as a value for this configuration variable. For example:
XF86CONFIG_FILE = XF86Config.ws004
If you are connecting a touch screen to the workstation, you can enable it by setting this entry to Y. If enabled, additional configuration entries will configure specific aspects of the touch screen. The default value is N.
A touch screen works like a mouse and usually is interfaced with the workstation through a serial port. You can specify which serial port with this entry. For example, you could set it equal to /dev/ttyS0. There is no default value for this entry.
Callibration entry for an EloTouch touch screen. Defaults to 433.
Callibration entry for an EloTouch touch screen. Defaults to 3588.
Callibration entry for an EloTouch touch screen. Defaults to 569.
Callibration entry for an EloTouch touch screen. Defaults to 3526.
Callibration entry for an EloTouch touch screen. Defaults to 10.
Callibration entry for an EloTouch touch screen. Defaults to 10.
If you want the ability to run applications locally on a workstation, set this variable to Y. Several additional steps must be taken on the server to enable local apps. See the 'Local Apps' section in the LTSP manual for more information. The default value is N.
If you do setup LOCAL_APPS, then you have a choice of where you want the window manager to run. It can either run on the workstation or on the server. If you set LOCAL_WM to Y then the window manager will run on the workstation. If you set it to N then it will run on the server. Local apps are much easier to setup if you run the window manager locally on the workstation. Then, by default, any programs that are launched are also run locally. The default value is Y.
If you do setup LOCAL_APPS, then you need to have an NIS server on the network. The NIS_DOMAIN entry is where you specify the NIS domain name. It needs to match a domain name that has been defined on the NIS server. This is NOT the same thing as an internet DOMAIN. The default value is ltsp.
Set this to the IP address of your NIS server if you don't want it to send a broadcast looking for an NIS server.
All of the keyboard support files are now copied into the ltsroot hierarchy so configuring internation keyboard support is now a matter of configuring XFree86. Several configuration parameters are available to make this possible.
The default value for this is the word 'default'.
The default value for this is the word 'default'.
The default value for this is 'us(pc101)'.
The default value for this is 'pc101'.
The default value for this is 'us'.
We would like to add documentation to show what values are needed for each type of international keyboard. If you work with this and can configure your international keyboards, feedback to the ltsp core group would be greatly appreciated.
Upto three printers can be connected to a diskless workstation. A combination of
serial and parallel printers can be configured via the following entries in the
lts.conf
file:
The device name of the first printer. Names such as /dev/lp0
',
/dev/ttyS0
or /dev/ttyS1
are allowed.
The type of the printer. Valid choices are 'P
' or for Parallel,
and 'S
' for Serial.
The TCP/IP Port number to use. By default, it will use '9100
'
If the printer is serial, this is the setting that will select the
baud rate. By default, '9600
' will be used.
For serial printers, the flow control can be specified. Either
'S
' for Software (XON/XOFF) flow control, or 'H
' for
Hardware (CTS/RTS) flow control. If neither is specified, 'S
' will
be used.
For serial printers, the Parity can be specified. The choices are:
'E
'-Even, 'O
'-Odd or 'N
'-None. If not specified,
'N
' will be used.
For serial printers, the number of data bits can be specified. The choices
are: '5
', '6
', '7
' and '8
'. If not specified,
'8
' will be used.
Second printer device name
Second printer type
Second printer tcp/ip port
Second printer baud rate (serial)
Second printer flow control (serial)
Second printer parity (serial)
Second printer data bits (serial)
Third printer device name
Third printer type
Third printer tcp/ip port
Third printer baud rate (serial)
Third printer flow control (serial)
Third printer parity (serial)
Third printer data bits (serial)
Comments start with the hash '#' sign and continue through the end of the line.
Several additional changes must be made on the server to enable it to provide the ability to run local applications on the workstations.
NIS is a very complex system to administer, and this document does not attempt to explain it in great depth. For a more complete reference, there is an O'Reilly book available called Managing NFS and NIS. Refer to the list of references at the end of this document for more information about the book.
There is also a very good HOWTO document on the LDP called The Linux NIS(YP)/NYS/NIS+ HOWTO. Refer to the list of references at the end of this document for the url.
There are a few simple settings that can be done to get it running with LTSP:
If your password file has '*' in the 2nd field, then you have shadow passwords enabled.
You can turn them off with the pwunconv
command.
Change into the /var/yp
directory, edit
the Makefile.
/etc/rc.d/init.d/ypserv start
You should run ntsysv to set it to start everytime the server is booted.
domainname ltsp
/usr/lib/yp/ypinit -m
At this point, NIS should be ready to go.
The following settings need to be in the lts.conf file.
LOCAL_APPS = Y
LOCAL_WM = Y
This will enable the workstation for local apps.