old-www/HOWTO/text/Compaq-T1500-HOWTO

480 lines
25 KiB
Plaintext

CompaqT1500-Linux HOWTO
Thomas Chiverton
falken@bigfoot.com
Revision History
Revision 1.04 2007-9-1 Revised by: tjc
Correct XF86Config URL, spellings
Revision 1.03 2006-1-13 Revised by: tjc
Note about root-path option and refusing DHCP OFFER, notes on booting own
kernel !
Revision 1.02 2005-4-22 Revised by: tjc
URL change, tweaks, solution to NFS null !
Revision 1.01 2002-3-17 Revised by: gea
Conversion to Docbook format
Revision 1.0 2002-03-11 Revised by: tjc
LDP release
Revision 0.85 2001-12-13 Revised by: tjc
Security hints. XFree.
Revision 0.8 2001-12-13 Revised by: tjc
Kernel transfer problem fix (NFS null). General tidy.
Revision 0.7 2001-09-11 Revised by: tjc
Much FLASHing and mounting notes added
Revision 0.61 2001-08-20 Revised by: tjc
Tweak debian unpack notes. Add URL. Notes on re-FLASH
Revision 0.6 2001-07-28 Revised by: tjc
Add example syslog output. Add in securetty changes
Revision 0.5 2001-07-28 Revised by: tjc
Initial release for feedback, comments from community
Abstract
Lists the procedures and tools needed to boot the Compaq T1500, using a
Netboot of both the native file system and a generic Linux installation.
-----------------------------------------------------------------------------
Table of Contents
1. About this guide
1.1. Purpose and scope
1.2. Latest update
1.3. Feedback
2. Introduction
3. The Compaq way
4. The one true way
5. Editing FLASH image and other tools
5.1. Editing Flash image
5.2. Mounting FLASH
6. XFree86
7. Trouble Shooting
7.1. Intermittent kernel transfer problems (NFS null)
7.2. T1500 ignores DHCP OFFER and just asks again
8. Pending projects
9. Contributors and thanks
1. About this guide
1.1. Purpose and scope
This document is aimed at the Linux enthusiast with an average level of
knowledge. In particular you must be happy with configuring, restarting (or
installing) new services.You will need a Linux server and (of course) a
T1500.
-----------------------------------------------------------------------------
1.2. Latest update
The most up to date copy of this document can be found at [http://
www.falkensweb.com/t1500.html] www.falkensweb.com/t1500.html
-----------------------------------------------------------------------------
1.3. Feedback
Comments and feedback should go the the author listed at the head of the
document.
-----------------------------------------------------------------------------
2. Introduction
The T1500 is a Linux based diskless thin client, able to boot off internal
FLASH RAM into X. It will acquire TCP/IP information from DHCP, and includes
telnet and a WWW browser. In this configuration, the T1500 is useful as a
small Internet access device.However, the T1500 can also operate as a
diskless client, acquiring it's initial kernel and root file system from a
remote machine (this uses 'TFTP' for the 1st stage, and 'NFS' for the
latter). Compaq provide a CD with a kernel image and root file system, along
with management tools, but these tools are not needed, and have been found to
fail on some systems. This will be discussed in the 'Compaq Way' section.
It is also possible to use the Compaq kernel to boot a normal Linux based
distribution. We use [http://www.debian.org] Debian as an example, but the
process is fairly generic, and discussed in the 'One True Way' section.
We will assume: A working DNS server on 192.168.1.1 (bookcase) and that this
machine will serve the kernel and file system The T1500 is to be installed as
192.168.1.52 (box). The domain is 'house'. No special routing is needed. In
the examples a RedHat server is used, but the specifics should apply to any
GNU based system.
-----------------------------------------------------------------------------
3. The Compaq way
Create the directories for the kernel and file system on your server, mount
and copy the files from the Compaq CD. Unpack the file system:
+---------------------------------------------------------------------------+
|mkdir /exports/T1500 |
|mkdir /exports/T1500/root |
|mkdir /exports/T1500/tftpboot |
|mount /cdrom |
|cp /cdrom/product/vmlinux /exports/T1500/tftpboot |
|cd /exports/T1500/root |
|tar xvf /cdrom/product/netboot.tar |
+---------------------------------------------------------------------------+
Configure DHCP by adding a section like this to your /etc/dhcpd.conf
Change the ethernet address to that of your T1500.
+---------------------------------------------------------------------------+
|group { |
| #little black box |
| host box { |
| hardware ethernet 00:80:64:10:1d:1c; |
| fixed-address box.house; |
| option host-name "box"; |
| server-name "192.168.1.1"; |
| filename "/exports/T1500/tftpboot/vmlinux"; |
| option root-path "192.168.1.1:/exports/T1500/root"; |
| } |
| } |
+---------------------------------------------------------------------------+
Configure a new host in DNS
+---------------------------------------------------------------------------+
|db.192.168.1.1: |
|52 in ptr box. |
+---------------------------------------------------------------------------+
+---------------------------------------------------------------------------+
|db.house: |
| box in a 192.168.1.52 |
+---------------------------------------------------------------------------+
Export the root file system by adding
+---------------------------------------------------------------------------+
|/exports/T1500/root box(rw,no_root_squash) |
+---------------------------------------------------------------------------+
to
+---------------------------------------------------------------------------+
|/etc/exports |
+---------------------------------------------------------------------------+
Configuring tftp by adding/altering a line to /etc/inetd.conf
+---------------------------------------------------------------------------+
|tftp dgram udp wait root /usr/sbin/tcpd in.tftpd /exports/T1500/tftpboot |
+---------------------------------------------------------------------------+
Now restart inetd,dhcpd,nfs and named Select the 'netboot' option on the
T1500, and reboot. The T1500 will now boot into something very similar to its
normal O/S. You may want to add
+---------------------------------------------------------------------------+
|exec /nor/Xbin/xterm & |
+---------------------------------------------------------------------------+
as the penultimate line in
+---------------------------------------------------------------------------+
|/exports/T1500/root/root/.xinitrc |
+---------------------------------------------------------------------------+
and then logout and back in again, to get an xterm.
-----------------------------------------------------------------------------
4. The one true way
We use the debian 'potato' (2.2) release as an example. The procedure should
be similar no matter which distribution you choose, providing it will run on
a 2.0.35 kernel.
Create the directories for the kernel and file system on your server, mount
and copy the files from the Compaq CD. Unpack the file system (Here I use
some pre-made tar balls of the debian release, here is not the place to
discuss further):
+---------------------------------------------------------------------------+
|mkdir /exports/T1500 |
|mkdir /exports/T1500/root |
|mkdir /exports/T1500/tftpboot |
+---------------------------------------------------------------------------+
+---------------------------------------------------------------------------+
|mount /cdrom |
|cp /cdrom/product/vmlinux /exports/T1500/tftpboot |
|CD /exports/T1500/root |
|tar zxvf /tmp/base2_2.tgz |
|tar zxvf /tmp/telnetd*.tgz |
+---------------------------------------------------------------------------+
Configure DHCP by adding a section like this to your /etc/dhcpd.conf Change
the ethernet address to that of your T1500.
+---------------------------------------------------------------------------+
|Group { |
| #little black box |
| host box { |
| hardware ethernet 00:80:64:10:1d:1c; |
| fixed-address box.house; |
| option host-name "box"; |
| server-name "192.168.1.1"; |
| filename "/exports/T1500/tftpboot/vmlinux"; |
| option root-path "192.168.1.1:/exports/T1500/root"; |
| } |
| } |
+---------------------------------------------------------------------------+
Configure a new host in DNS
+---------------------------------------------------------------------------+
|db.192.168.1.1: |
| 52 in ptr box. |
+---------------------------------------------------------------------------+
+---------------------------------------------------------------------------+
|db.house: |
| box in a 192.168.1.52 |
+---------------------------------------------------------------------------+
Export the root file system by adding
+---------------------------------------------------------------------------+
|/exports/T1500/root box(rw,no_root_squash) |
+---------------------------------------------------------------------------+
to /etc/exports
Configuring tftp by adding/altering a line to /etc/inetd.conf
+---------------------------------------------------------------------------+
|tftp dgram udp wait root /usr/sbin/tcpd in.tftpd /exports/T1500/tftpboot |
+---------------------------------------------------------------------------+
Now restart inetd,dhcpd,nfs and named
Configure the file system by setting the root password to 'pass', exposing
telnetd
/exports/T1500/root/etc/passwd, alter 1st line: root:Z/U2u32VhNJoA:0:0:,,,:/
root:/bin/bash
/exports/T1500/root/etc/inetd.conf, add: telnet stream tcp nowait root /usr/
sbin/tcpd in.telnetd
Append remote terminals to /etc/securetty to allow remote root access.
+---------------------------------------------------------------------------+
|tty1 |
|tty2 |
|tty3 |
|tty4 |
|tty5 |
|tty6 |
|tty7 |
|tty8 |
|tty9 |
|tty10 |
|tty11 |
|tty12 |
|ttyp0 |
|ttyp1 |
|ttyp2 |
|ttyp3 |
+---------------------------------------------------------------------------+
Select network booting on the T1500 and reboot it.
Once it has booted, you should be able to telnet into the T1500. At ths
point, you shoudl configure SSH, and close the telnet hole in inetd.
-----------------------------------------------------------------------------
5. Editing FLASH image and other tools
5.1. Editing Flash image
The T1500s come with a utility called 'makeflash' (which lives in /sbin and
also comes on the CD). You can use this to generate a flash filesystem image
from a tar.gz, which can either be local, or an NFS / SMB file. This utility
generates all the necessary checksums too.
1. Flashing with a Slackware 8.0 image doesn't work, even with the calculated
checksum. This suggests to me that there is a further check made on vmlinux
itself.
2. Having dissected the leo.boot and vmlinux files supplied with the unit, I
suspect that leo.boot checks vmlinux for the string "xxxxyyyyWYSEwysexxxx"
which is duly included in the custom kernel they use.
3. Leo.boot is in fact a Win CE related thing, with a queer bolt-on to allow
linux boots. The normal Win CE leo.boot is about half the size. It uses the
Eboot protocol for both ethernet and parallel port flash programming. There
are some free Linux tools available to format images correctly for replacing
leo.boot and also the OS image, but they rely on you supplying a suitably
compiled object version of the bootrom.
Be careful when running it though - it is possible to flash the thing to a
state in which the only way to get it booting again is to use the
Wyse-provided DOS util / laplink cable setup.
Also, if anyone manages to get makeflash running on something which isn't the
terminal, could you let me know how? AFAICT, it's trying to link with a very
old glibc and libforms.You should be able to flash-update the T1500 a few
100,000 times.
Apparently the T1500 is a Wyse WT3X15, based on what they call the 'Leo
Board'. You can download a DOS reflashing util, and some docs for it from the
UK Wyse website, in the Customer Support section's firmware page. It requires
a parallel laplink cable.
-----------------------------------------------------------------------------
5.2. Mounting FLASH
After running the mknod commands below, you can then mount /dev/fnand and /
dev/fnand1, which are both 16Mb flashfs partitions. You can also mount /dev/
fram, and write to it, however the data disappeared after umounting &
remounting. It may have use as swap space.
+---------------------------------------------------------------------------+
|mknod /dev/fcard b 63 0 |
|mknod /dev/fcard.fmt b 63 128 |
|mknod /dev/fcard1 b 63 1 |
|mknod /dev/fcard1.fmt b 63 129 |
|mknod /dev/fnand b 62 0 |
|mknod /dev/fnand.fmt b 62 128 |
|mknod /dev/fnand1 b 62 2 |
|mknod /dev/fnand1.fmt b 62 120 |
|mknod /dev/fnor b 65 0 |
|mknod /dev/fnor.2m b 65 128 |
|mknod /dev/fram b 64 128 |
+---------------------------------------------------------------------------+
-----------------------------------------------------------------------------
6. XFree86
To boot up into XFree86, grab and install the normal XFree packages. Grab and
install the XF86Config file from [http://www.falkensweb.com/t1500.html] http:
//www.falkensweb.com/t1500.html. Use a line like
+---------------------------------------------------------------------------+
|xinit -- -bpp 16 & |
+---------------------------------------------------------------------------+
In rc.local (or your distributions equiv.) to start it up automaticly. To do
the safe thing and run X as a user, create the user and use something like
the following to start and stop it (I placed this in the init.d dir. and
linked from rc.4). Change 'mplayer' on line 5 to your username.
+---------------------------------------------------------------------------+
|#! /bin/sh |
|case "$1" in |
|start) |
| echo -n "Automatically logging into X" |
| su -c 'cd ~mplayer && xinit -- -bpp 16' - mplayer & |
| echo "." |
| ;; |
|stop|restart) |
| ;; |
|*) |
| echo "Usage: /etc/init.d/mplayer {start|stop|restart}" |
| exit 1 |
|esac |
| |
|exit 0 |
+---------------------------------------------------------------------------+
-----------------------------------------------------------------------------
7. Trouble Shooting
The servers log file (/var/log/messages) should contain hints as to where
you've got to in the boot process, as it should log TFTP transfers, NFS
mounts etc. If not, add
+---------------------------------------------------------------------------+
|*.* /var/log/messages |
+---------------------------------------------------------------------------+
to
+---------------------------------------------------------------------------+
|/etc/syslogd.conf |
+---------------------------------------------------------------------------+
and restart syslog
tcpdump allows you to see what packets are being transfered, and their NFS
filenames.
+---------------------------------------------------------------------------+
| tcpdump -i eth0 -s 500 host box |
+---------------------------------------------------------------------------+
Your output from syslog should resemble:
+-------------------------------------------------------------------------------------------------+
|Jul 24 21:37:00 bookcase dhcpd: DHCPDISCOVER from 00:80:64:10:1d:1c via eth0 |
|Jul 24 21:37:00 bookcase dhcpd: DHCPOFFER on 192.168.1.52 to 00:80:64:10:1d:1c via eth0 |
|Jul 24 21:37:04 bookcase dhcpd: DHCPREQUEST for 192.168.1.52 from 00:80:64:10:1d:1c via eth0 |
|Jul 24 21:37:04 bookcase dhcpd: DHCPACK on 192.168.1.52 to 00:80:64:10:1d:1c via eth0 |
|Jul 24 21:37:04 bookcase tftpd[5003]: tftpd: trying to get file: /exports/T1500/tftpboot/vmlinux |
|Jul 24 21:37:24 bookcase mountd[4853]: authenticated mount request from box:600 |
+-------------------------------------------------------------------------------------------------+
Your tcpdump output should look like (when idle):
+------------------------------------------------------------------------------+
|17:31:41.450000 box.8022008 > bookcase.nfs: 116 lookup fh Unknown/1 "initctl" |
|17:31:41.450000 bookcase.nfs > box.8022008: reply ok 128 lookup fh Unknown/1 |
+------------------------------------------------------------------------------+
-----------------------------------------------------------------------------
7.1. Intermittent kernel transfer problems (NFS null)
There is a known problem which occasionally causes the T1500 to fail to
reboot, apparently because it fails to tftp the kernel after the reboot. A
tcpdump of this happening will resemble:
+---------------------------------------------------------------------------------------------+
|12:04:38.506153 box.2049 > bookcase.house.tftp: 39 RRQ "/exports/T1500/tftpboot/vmlinux" |
|12:04:38.556153 bookcase.house.1199 > box.2049: udp 516 |
|12:04:38.556153 box.2049 > bookcase.house.1199: udp 4 |
|12:04:38.556153 bookcase.house.196610 > box.nfs: 516 null |
|12:04:38.556153 box.2049 > bookcase.house.1199: udp 4 |
|12:04:38.556153 bookcase.house.196611 > box.nfs: 516 null |
|12:04:38.556153 box.2049 > bookcase.house.1199: udp 4 |
|12:04:38.556153 bookcase.house.196612 > box.nfs: 516 null |
|12:04:38.556153 box.2049 > bookcase.house.1199: udp 4 |
|12:04:38.566153 bookcase.house.196613 > box.nfs: 516 null |
|12:04:38.566153 box.2049 > bookcase.house.1199: udp 4 |
|12:04:38.566153 bookcase.house.196614 > box.nfs: 516 null |
|12:04:38.566153 box.2049 > bookcase.house.1199: udp 4 |
|12:04:38.566153 bookcase.house.196615 > box.nfs: 516 null |
+---------------------------------------------------------------------------------------------+
You will then see a syslog entry from tftp indicating that it is sending the
kernel, but no packets are exchanged. ARP requests go unanswered.
This can be resolved, but if you have your T1500 headless in a corner, is a
PITA. Connect a monitor, keyboard and PS/2 mouse if not present. Reboot the
T1500, and press 'L' after the 1st beep. The T1500 will now boot locally.
Change the boot mode to 'Local' (Start->System menu) and reboot. Change the
boot mode back to 'Network'
If this happens to you a lot, please try out tiggers-magic-tftpd. You can
find this at the same URL this document gives as the current home of the
T1500 HOWTO. It requires python, and has been reported to solve the problem.
Please let me know how you get on !
-----------------------------------------------------------------------------
7.2. T1500 ignores DHCP OFFER and just asks again
There is a bug in the BIOS, all DHCP packets must contain a 'root-path'
option, even if you are booting your own kernel which doesn't need one.
-----------------------------------------------------------------------------
8. Pending projects
Edit / re-flash FLASH
PCMCIA usage - probably needs the next item :-)
Custom kernel (TFTP loader looks at checksum / WYSE string, we have a
checksum maker now !)
Text mode console
SSH / SSHd / gcc for Compaq file system (should be easy to copy once compiled
on custom FS)
-----------------------------------------------------------------------------
9. Contributors and thanks
[incomplete, real names needed too]
Cez
John Topper
Grapham Wood
Mike Sparks
James Mulcahy
Tigger