ian at permedia.ca
The NCD X terminal mini HOWTO is copyright(c) 1998 by Ian Hodge. Linux HOWTO documents may be reproduced and distributed in whole or in part, in any medium physical or electronic, as long as this copyright notice is retained on all copies.
This document describes how an X terminal manufactured by NCD (Network Computing Devices) can be connected to and booted from a UNIX host using BootP (boot protocol). Many terminals are also capable of booting with RARP, NFS or locally from a PCMCIA card or over a serial link (either directly or with a modem).
Although the material in this document was prepared based on experience with a single model of X terminal, much of the information applies to other models and other X terminals generally. There is also an Linux X terminal mini HOWTO document (declared obsolete by HOWTO maintainers at the time of writing and therefore possibly not available in all Linux distributions) which overlaps material from this document. That document covers X terminal information more generally.
The process of connecting an X terminal to a UNIX network can be summarized in the following steps:
An X terminal is a device which communicates and displays over a network using a distributed network window system known as X. Typically, the terminal's X software, known as the X server, is retrieved from the network at boot time. Programs other then the X server software (X client programs) are not run locally on the X terminal (with some exceptions); instead, the X terminal displays programs running on other hosts on the network. The X terminal, therefore, is a type of network computer which uses the X protocol to access network resources.
The NCD X terminal (model Xncd19r was used in preparation of this document) has an RJ-45 (twisted pair) connector for use with 10baseT Ethernet. A hub is required to link more than two Ethernet devices using twisted pair. If the X terminal and its host are the only devices in the network, they may be connected with a 'null' cable which is described in the Linux Ethernet HOWTO document.
The terminal's X server software file is available from the manufacturer and presumably is provided with the terminal upon initial purchase. This file will reside on the boot host where it can be accessed by the X terminal when it boots. This file is specific to the terminal type but independent of boot host. The terminal can boot from any host which supports the boot communication protocol (explained later). In addition to X server, the X software may also include applications, like a window manager, which can run locally on the X terminal itself.
At boot time, the X terminal retrieves files (including its X server software) from a remote host on the network. After the terminal boots, the X server software will control input, display, local clients and X protocol communication. The X server software is executed on the X terminal and therefore does not have to be software compatible with the host on which it resides.
Together, tftp (trivial file transfer protocol) and BootP (boot protocol server) are used on the remote host to allow the X terminal to retrieve its X server software and configuration files over the network. Both services are typically started by inetd (Internet Daemon).
After the X terminal is powered up, if it is configured to boot from the network, it will send out a broadcast message using BootP (TCP/IP bootstrap protocol). This boot message will contain the X terminal's hardware (Ethernet) address which is used by the boot host to respond to the boot request.
When a boot request is received by the remote host, inetd (listening on a port designated in /etc/services) starts the BootP daemon specified in /etc/inetd.conf.
In file inetd.conf, create or uncomment lines that refer to TFTP and BootP. The final argument of the tftpd entry in the example below is the path of the directory containing the files required by the X terminal. Although directory names are not mandatory, for security reasons they should always be present as tftp access will then be restricted to files in specified directories.
From a sample file /etc/inetd.conf:
# tftp service is provided primarily for booting. Most sites # run this only on machines acting as "boot servers". tftp dgram udp wait root /usr/sbin/tcpd /usr/sbin/in.tftpd /usr/X11/lib/X11/ncd/ bootps dgram udp wait root /usr/sbin/tcpd /usr/sbin/in.bootpd
Upon activation, the BootP server daemon on the host will then read its database file /etc/bootptab. An entry for the X terminal must be placed in this file. Each entry contains a set of tags separated with ':' characters. The host name must be the very first tag in an entry.
Useful bootptab tags:
Bootfile home directory (eg /usr/X11/lib/X11/ncd/).
Address of the X terminal (eg 10.0.0.1).
Subnet mask (eg 255.0.0.0). To understand the use of the subnet mask and other IP networking principles, consult the Linux NET-3 (networking) HOWTO document.
IP Address of gateway (eg 10.0.0.1).
Hardware type - Ethernet in this example.
Hardware address of X terminal (6 byte Ethernet address)
According to the bootptab UNIX man page, the 'ha' tag must be preceded by the 'ht' tag. The X terminal's Ethernet address is displayed when the terminal is first powered on. The address appears as a series of 6 double digit hex numbers separated by colons (e.g. 00:00:A7:12:26:19).
Table continuation or label of another entry in the BootP database. See the example below.
IP address of domain name server (eg 10.0.0.3). Not required if DNS is not used for hostname resolution.
Name of X terminal boot file (Usually the terminal model is used as the X server file name eg Xncd19r).
The following is an example of the Boot protocol server database file, /etc/bootptab. The character '\' is used to escape the end-of-line character.
# This is an entry (here given the name default) # with information common to all BootP clients default:hd=/usr/X11/lib/X11/ncd/:\ ds=10.0.0.3:\ sm=255.0.0.0:\ gw=10.0.0.1: # X terminal entry with hostname myxterm # Notice the tc tag reference to the entry default myxterm:ht=ethernet:\ ha=0x0000a7122619:\ ip=10.0.0.2:\ tc=default:\ bf=Xncd19r:
When a matching entry for the hardware address in the boot request is found in the bootptab file, a response is sent by bootpd with the corresponding IP address from the matching entry. File transfer can then take place over IP using TFTP.
A hostname can be assigned to the X terminal by creating an entry on the boot host in the file /etc/hosts. This file is used to map hostnames to IP addresses. In the this example, the X terminal (address 10.0.0.2) has been assigned the hostname 'myxterm'.
10.0.0.1 linuxhost # The boot host 10.0.0.2 myxterm # X terminal
After being powered up, the X terminal attempts to boot. This is the process where the X software is loaded into memory and executed. If the X terminal cannot boot, the Boot Monitor prompt '>' will appear. The Boot Monitor is firmware found in terminal PROMs (programmable read-only memory). With the basic Boot Monitor interface, it is possible to configure the terminal to boot and retrieve its X server software from the host. Use '?' for a list of Boot Monitor commands.
Configuration parameters set with the boot monitor are stored in NVRAM (Non-volatile Random-Access Memory) and are retained when the terminal is powered down.
From the boot monitor, the 'bt' command or a menu system can be used to boot the terminal. Functionality of the two methods largely overlaps but the menu provides control over more boot parameters.
>bt file terminal_IP host_IP gateway_IP subnet_mask
The name of the file retrieved from the remote host containing the X server software used by the X terminal to boot (eg "Xncd19r"). Check that this file name is the same as the file name is found in the X terminal entry in the bootptab file on the host (explained in the previous section).
The IP address assigned to the X terminal (eg 10.0.0.2). Again, this IP address should be the same as the address assigned in the X terminal entry of the bootptab file on the host.
The IP address of the boot host (eg 10.0.0.1).
The IP address of the subnet gateway (eg 10.0.0.1)
The subnet mask, specified as a decimal IP address or as a hexadecimal number (eg 255.0.0.0 or ff000000).
The setup menus are accessed by pressing the 'Setup' key or typing 'se' from the boot monitor '>' prompt.
The IP address of the X terminal should be obtained from boot monitor configuration stored in NVRAM. Only select 'Network' if you are using RARP (reverse ARP) to retrieve the X terminal's IP address from the remote host.
The IP address assigned to the X terminal (eg 10.0.0.2). This is the same as 'terminal_IP' parameter above.
The IP address of the boot host (eg 10.0.0.1). This is the same as 'host_IP' parameter above.
The IP address of the subnet gateway. This is the same as 'gateway' parameter above.
The subnet mask, specified as a decimal IP address. This is the same as the 'subnet_mask' parameter above.
The IP address used to broadcast to the subnet. (eg 10.255.255.255)
The name of the file retrieved from the remote host containing the X server software used by the X terminal to boot (eg "Xncd19r"). This is the same as 'file' parameter described above.
The name of the directory on the host which contains the boot file (eg "/usr/X11/lib/X11/ncd/" or "/tftpboot/").
The name of the X terminal configuration file on the remote host (See below).
Name of the directory containing X terminal configuration files (eg "/usr/X11/lib/X11/ncd/").
Assign '1' to the preferred method for booting. Assign '1' to TFTP when booting from a host using BootP.
During the boot process, the X terminal will attempt to transfer and load files from the boot host. These files are not required for the X terminal to boot successfully. If a file is not found, the terminal will use default settings.
Configuration Files transferred to the X terminal at boot time:
After a successful boot, the X terminal console window with a menu bar should appear. The terminal setup key toggles display of this console window. From the console window 'setup' pull-down menu, terminal characteristics can be viewed, altered and saved on the boot host in the configuration file which can be used in future sessions.
If TFTP is being used to transfer files from the boot host, then file permission must be world readable. Similarly, to save a configuration file to the boot host, the file must already exist and with world write permission enabled. If secure TFTP is used (this is recommended for security reasons), then file access is possible only through specified directories.
Note: The terminal may fail to boot if it was previously configured to work with other hosts or with different configuration parameters. Resetting the NVRAM to remove stored settings may solve the problem.
To reset NVRAM, from the boot monitor, type the 'nv' command. From this sub-menu, select 'l' to load defaults, 's' to save and finally 'q' to quit. Resume the boot procedure described above.
From the X terminal console window menu bar, select the 'terminals' pull-down menu and choose 'New Telnet...'. When the telnet window appears, insert the address of a network host in the service entry and click 'OK'. The host log in prompt should appear. After logging in, X programs, including a window manager, can be started from the telnet window.
The X terminal comes with a small set of fonts. In the X terminal setup menus and configuration files, these fonts are referred to as 'built-ins'. The terminal can be operated with these fonts alone but more fonts are desirable. Fonts can be added by specifying font paths in X terminal console setup menus, configuration files or by using the xset command.
Once the X server software is running on the X terminal, the font path can modified or queried with the command xset.
To query the X server:
xset -qTo add a font entry:
xset +fp <path>To remove a font entry:
xset -fp <path>
The font server (xfs) runs on a network host and retrieves fonts for the X terminal and other network clients. Use of the font server allows the use of a wide variety of fonts as the X server software is otherwise restricted to bitmap fonts. During retrieval, the font server can uncompress, scale and convert fonts for the X server and can help simplify the management of fonts for groups of terminals and network clients. Font server software is part of many Linux distributions and has been incorporated into X consortium software available from ftp.x.org.
To indicate the use of a font server, a tcp service entry is used instead of a font path in the X terminal's host resident configuration file or console setup menu.
Format of tcp service entry:
tcp/<IP address of font server>:<port used by font server>
Example:
tcp/10.0.0.1:7100
An example of an entry in the X terminal configuration file found on the boot host:
xserver-default-font-path = { { "tcp/10.0.0.1:7100" } { "built-ins" } }
The xset command with the tcp service entry can used to add the font server to the path:
xset +fp tcp/10.0.0.1:7100
WARNING: Certain versions of NCDware require the font server entry to be listed first before X terminal 'built-in' fonts. This is contrary to the NCD documentation "System Administrator's Guide for UNIX Systems". Experiment with the order of the font path and verify it with the 'xset q' command.
On the font server host, the server is started at boot time from the rc.local startup script. The font server (xfs) is started with the following command:
xfs -config <config file path> -port <font server port number>
The standard font server port is 7100.
Example:
xfs -config /usr/X11/lib/X11/fs/config -port 7100
Example font server configuration file:
# font server configuration file # allow a max of 10 clients to connect to this font server client-limit = 10 # when a font server reaches its client limit, start up a new one clone-self = on # use the UNIX syslog utility to log errors. use-syslog = on # list of font directories catalogue = /usr/X11R6/lib/X11/fonts/misc/, /usr/X11R6/lib/X11/fonts/Speedo/, /usr/X11R6/lib/X11/fonts/Type1/, /usr/X11R6/lib/X11/fonts/75dpi/, /usr/X11R6/lib/X11/fonts/100dpi/ # file used to log errors if syslog is not used. error-file = /usr/X11R6/lib/X11/fs/fs-errors # 12 point in decipoints default-point-size = 120 # 100 x 100 and 75 x 75 default-resolutions = 75,75,100,100
I have been told that this procedures in this document work (more or less) with the following terminals: NCD 19r, NCD 19c, NCD19m?, NCD 15b, NCD MCX
Unix man pages: bootpd(8), tftpd(8), bootptab(5), xdm(1x), xfs(1), fsinfo(1), xset(1), inetd(8)
Linux Ethernet HOWTO document, Linux Net-3 (Networking) HOWTO document
NCDware System Administrator's Guide for UNIX Systems (print version)
Now available for download in the NCD Techtips Archive is the NCDware Reference Manual which covers almost every X terminal configuration issue in detail.
The searchable NCD knowledge base addresses some frequently asked questions as well as bug reports.
Note that the above links are subject to change. Since the first version of this mini-HOWTO was published, the NCD web site has been extensively reorganized.
X terminal: NCD model NCD19r with 19 monochrome monitor 1280x1024 8M RAM
X server software: NCDware V3.2.CV 19r_s
Remote Host: IBM Cyrix 686 P150+ running Slackware (Linux kernel version 2.0.31)
Remote Host: IBM Cyrix M2 200 MMX running Red Hat 5.0 (Linux kernel version 2.0.32)
Network Card: 10 base T Ethernet card (ne 2000 clone) and 8 port hub
Font server version 2 release number 6300
I would like to thank Michael de Lind van Wijngaarden, Jamal Hadi-Salim and Dwight Hodge for assistance in the preparation of this document.
%XSERVER-I-NEWCLIENT, host "localhost" connected with blank authorization %XSERVER-W-NOEXTENSION, client attempted to use non-existent extension "BIG-REQUESTS" %XSERVER-W-NOEXTENSION, client attempted to use non-existent extension "XKEYBOARD" %XSERVER-W-NOEXTENSION, client attempted to use non-existent extension "XFree86-Misc"
Please write to ian
at permedia.ca
with any comments, questions, corrections, suggestions or contributions.
Many thanks to all who have written with feedback and additional information.