CompaqT1500-Linux HOWTO

Thomas Chiverton

falken@bigfoot.com

修订历史
修订 1.042007-9-1修订者: tjc
修正 XF86Config URL,拼写
修订 1.032006-1-13修订者: tjc
关于 root-path 选项和拒绝 DHCP OFFER 的注释,关于引导自有内核的注释!
修订 1.022005-4-22修订者: tjc
URL 更改,调整,NFS null 解决方案!
修订 1.012002-3-17修订者: gea
转换为 Docbook 格式
修订 1.02002-03-11修订者: tjc
LDP 发布
修订 0.852001-12-13修订者: tjc
安全提示。XFree。
修订 0.82001-12-13修订者: tjc
内核传输问题修复 (NFS null)。常规整理。
修订 0.72001-09-11修订者: tjc
添加了大量 FLASH 和挂载注释
修订 0.612001-08-20修订者: tjc
调整 debian 解包注释。添加 URL。关于重新 FLASH 的注释
修订 0.62001-07-28修订者: tjc
添加示例 syslog 输出。添加 securetty 更改
修订 0.52001-07-28修订者: tjc
初始版本发布以征求社区的反馈和意见

摘要

列出了引导 Compaq T1500 所需的步骤和工具,使用了本机文件系统和通用 Linux 安装的 Netboot。


目录
1. 关于本指南
1.1. 目的和范围
1.2. 最新更新
1.3. 反馈
2. 简介
3. Compaq 方式
4. 唯一正确的方式
5. 编辑 FLASH 镜像和其他工具
5.1. 编辑 Flash 镜像
5.2. 挂载 FLASH
6. XFree86
7. 故障排除
7.1. 间歇性内核传输问题 (NFS null)
7.2. T1500 忽略 DHCP OFFER 并再次请求
8. 待定项目
9. 贡献者和鸣谢

1. 关于本指南

1.1. 目的和范围

本文档的目标读者是具有一般知识水平的 Linux 爱好者。特别是,您必须乐于配置、重启(或安装)新服务。您将需要一台 Linux 服务器以及(当然)一台 T1500。


1.2. 最新更新

本文档的最新版本可以在 www.falkensweb.com/t1500.html 找到。


1.3. 反馈

意见和反馈应发送给文档开头列出的作者。


2. 简介

T1500 是一款基于 Linux 的无盘瘦客户端,能够从内部 FLASH RAM 启动到 X。它将从 DHCP 获取 TCP/IP 信息,并包含 telnet 和 WWW 浏览器。在这种配置中,T1500 可用作小型 Internet 访问设备。然而,T1500 也可以作为无盘客户端运行,从远程机器获取其初始内核和根文件系统(第一阶段使用“TFTP”,后者使用“NFS”)。 Compaq 提供了一张 CD,其中包含内核镜像和根文件系统,以及管理工具,但这些工具不是必需的,并且已发现在某些系统上会失败。这将在“Compaq 方式”部分中讨论。

也可以使用 Compaq 内核来引导正常的基于 Linux 的发行版。我们以 Debian 为例,但该过程相当通用,并在“唯一正确的方式”部分中讨论。

我们将假设:192.168.1.1 (bookcase) 上有一个工作的 DNS 服务器,并且该机器将服务于内核和文件系统。T1500 将安装为 192.168.1.52 (box)。域是 'house'。不需要特殊的路由。示例中使用的是 RedHat 服务器,但具体细节应适用于任何基于 GNU 的系统。


3. Compaq 方式

在服务器上为内核和文件系统创建目录,挂载并从 Compaq CD 复制文件。解包文件系统

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

通过在您的 /etc/dhcpd.conf 中添加如下部分来配置 DHCP

将以太网地址更改为您的 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";
     }
   }

在 DNS 中配置新主机

db.192.168.1.1:
52 in ptr box.
db.house:
   box in a 192.168.1.52

通过添加导出根文件系统

/exports/T1500/root box(rw,no_root_squash)

/etc/exports

通过在 /etc/inetd.conf 中添加/更改行来配置 tftp

tftp dgram udp wait root /usr/sbin/tcpd in.tftpd /exports/T1500/tftpboot

现在重启 inetd,dhcpd,nfs 和 named。在 T1500 上选择“netboot”选项,然后重启。 T1500 现在将启动到与其正常 O/S 非常相似的系统中。您可能想要添加

exec /nor/Xbin/xterm &

作为倒数第二行在

/exports/T1500/root/root/.xinitrc

然后注销并重新登录,以获得一个 xterm。


4. 唯一正确的方式

我们以 debian 'potato' (2.2) 版本为例。无论您选择哪个发行版,该过程都应类似,前提是它可以在 2.0.35 内核上运行。

在服务器上为内核和文件系统创建目录,挂载并从 Compaq CD 复制文件。解包文件系统(这里我使用了一些预制的 debian 发行版 tar 包,这里不是进一步讨论的地方)

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

通过在您的 /etc/dhcpd.conf 中添加如下部分来配置 DHCP。更改您的 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";
     }
   }

在 DNS 中配置新主机

db.192.168.1.1:
   52 in ptr box.
db.house:
   box in a 192.168.1.52

通过添加导出根文件系统

/exports/T1500/root box(rw,no_root_squash)

到 /etc/exports

通过在 /etc/inetd.conf 中添加/更改行来配置 tftp

tftp dgram udp wait root /usr/sbin/tcpd in.tftpd /exports/T1500/tftpboot

现在重启 inetd,dhcpd,nfs 和 named

通过将 root 密码设置为 'pass',暴露 telnetd 来配置文件系统

/exports/T1500/root/etc/passwd, 更改第 1 行: root:Z/U2u32VhNJoA:0:0:,,,:/root:/bin/bash

/exports/T1500/root/etc/inetd.conf, 添加: telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd

将远程终端附加到 /etc/securetty 以允许远程 root 访问。

tty1
tty2
tty3
tty4
tty5
tty6
tty7
tty8
tty9
tty10
tty11
tty12
ttyp0
ttyp1
ttyp2
ttyp3

在 T1500 上选择网络启动并重启它。

一旦启动,您应该能够 telnet 进入 T1500。此时,您应该配置 SSH,并关闭 inetd 中的 telnet 漏洞。


5. 编辑 FLASH 镜像和其他工具

5.1. 编辑 Flash 镜像

T1500 配备了一个名为 'makeflash' 的实用程序(它位于 /sbin 中,也随 CD 一起提供)。您可以使用它从 tar.gz 生成 flash 文件系统镜像,tar.gz 可以是本地文件,也可以是 NFS / SMB 文件。此实用程序也会生成所有必要的校验和。

1. 使用 Slackware 8.0 镜像刷写不起作用,即使使用计算出的校验和也是如此。这向我表明,对 vmlinux 本身进行了进一步的检查。

2. 在剖析了设备随附的 leo.boot 和 vmlinux 文件后,我怀疑 leo.boot 检查 vmlinux 中是否包含字符串“xxxxyyyyWYSEwysexxxx”,该字符串已正确包含在他们使用的自定义内核中。

3. Leo.boot 实际上是一个与 Win CE 相关的东西,带有一个奇怪的附加组件以允许 linux 启动。正常的 Win CE leo.boot 大约只有一半大小。它将 Eboot 协议用于以太网和并行端口 flash 编程。有一些免费的 Linux 工具可用于正确格式化镜像以替换 leo.boot 和操作系统镜像,但它们依赖于您提供 bootrom 的适当编译的对象版本。

但在运行它时要小心 - 可能会将设备刷写到一种状态,在这种状态下,使其再次启动的唯一方法是使用 Wyse 提供的 DOS 实用程序/ laplink 电缆设置。

此外,如果有人设法在非终端设备上运行 makeflash,您能否告诉我如何操作? AFAICT,它试图与非常旧的 glibc 和 libforms 链接。您应该能够对 T1500 进行几次 10 万次的 flash 更新。

显然,T1500 是 Wyse WT3X15,基于他们所谓的“Leo Board”。您可以从英国 Wyse 网站的客户支持部分的固件页面下载 DOS 重新刷写实用程序以及一些文档。它需要并行 laplink 电缆。


5.2. 挂载 FLASH

在运行下面的 mknod 命令后,您可以挂载 /dev/fnand 和 /dev/fnand1,它们都是 16Mb flashfs 分区。您还可以挂载 /dev/fram 并对其进行写入,但是数据在卸载并重新挂载后消失了。它可以用作交换空间。

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

要启动到 XFree86,请抓取并安装正常的 XFree 软件包。从 http://www.falkensweb.com/t1500.html 抓取并安装 XF86Config 文件。使用如下行

xinit -- -bpp 16 &

在 rc.local(或您的发行版的等效文件)中自动启动它。为了安全起见并以用户身份运行 X,创建用户并使用如下内容来启动和停止它(我将其放在 init.d 目录中并从 rc.4 链接)。将第 5 行的 'mplayer' 更改为您的用户名。

#! /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. 故障排除

服务器的日志文件 (/var/log/messages) 应包含有关您在启动过程中所处位置的提示,因为它应记录 TFTP 传输、NFS 挂载等。如果没有,请添加

*.* /var/log/messages

/etc/syslogd.conf

并重启 syslog

tcpdump 允许您查看正在传输的数据包及其 NFS 文件名。

 tcpdump -i eth0 -s 500 host box

您的 syslog 输出应类似于

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

您的 tcpdump 输出应如下所示(空闲时)

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. 间歇性内核传输问题 (NFS null)

存在一个已知问题,有时会导致 T1500 无法重启,显然是因为它在重启后无法 tftp 内核。发生这种情况的 tcpdump 将类似于

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

然后您将看到来自 tftp 的 syslog 条目,指示它正在发送内核,但没有交换数据包。 ARP 请求未得到响应。

这可以解决,但如果您的 T1500 无头地放在角落里,则会很麻烦。如果不存在,请连接显示器、键盘和 PS/2 鼠标。重启 T1500,并在第一次蜂鸣声后按“L”。 T1500 现在将在本地启动。将启动模式更改为“本地”(“开始”->“系统”菜单),然后重启。将启动模式改回“网络”

如果这种情况经常发生在您身上,请尝试使用 tiggers-magic-tftpd。您可以在本文档给出 T1500 HOWTO 当前主页的同一 URL 找到它。它需要 python,并且据报道已解决该问题。请告诉我您的进展如何!


7.2. T1500 忽略 DHCP OFFER 并再次请求

BIOS 中存在一个错误,所有 DHCP 数据包都必须包含 'root-path' 选项,即使您要引导不需要该选项的自己的内核也是如此。


8. 待定项目

编辑/重新刷写 FLASH

PCMCIA 用法 - 可能需要下一个项目 :-)

自定义内核(TFTP 加载器查看校验和/ WYSE 字符串,我们现在有一个校验和生成器!)

文本模式控制台

Compaq 文件系统的 SSH / SSHd / gcc(一旦在自定义 FS 上编译,应该很容易复制)


9. 贡献者和鸣谢

[未完成,也需要真实姓名]

Cez

John Topper

Grapham Wood

Mike Sparks

James Mulcahy

Tigger