IBM 3270 显示系统支持¶
本文件描述了支持 IBM 3270 设备本地通道连接的驱动程序。它由三个部分组成
简介
安装
操作
简介¶
本文介绍了在 Linux/390 下安装和操作 3270 设备。3270 设备是一种块模式的行列终端,我确信在二三十年前,IBM 及其克隆厂商售出了数以亿计的此类设备。
你的公司或组织里可能就有 3270 设备而你却不知道。如果你正在使用 VM-ESA 操作系统,请使用命令“DEF GRAF <hex-address>”为你的虚拟机定义一个 3270。本文假设你将使用以下 CP/CMS 命令定义四个 3270 设备
DEF GRAF 620
DEF GRAF 621
DEF GRAF 622
DEF GRAF 623
来自 VM-ESA 的网络连接允许你使用从 PC 或工作站的 xterm 窗口启动的 x3270、tn3270 或其他 3270 模拟器。通过 DEF GRAF 命令、诸如 xterm 的应用程序以及这个 Linux-390 3270 驱动程序,你就拥有了与 Linux 主机交互的另一种方式。
本文涵盖了驱动程序的安装以及拨入的 x3270 的操作。
安装¶
你可以通过安装补丁、构建内核以及运行配置脚本(位于本目录中的 config3270.sh)来安装驱动程序。
警告:如果你正在使用 3270 控制台支持,每当更改控制台地址时(例如通过使用 silo 的 /boot/parmfile 中的 condev= 参数),你都必须重新运行配置脚本。更准确地说,每当你的 3270 设备集合(包括作为控制台的 3270)相互之间的子通道标识符发生变化时,你都应重新运行配置脚本。在运行配置脚本及其生成的 /tmp/mkdev3270 后,请尽快执行 ReIPL。
如果你选择将 tub3270 制作成模块,则需要向 /etc/modprobe.d/ 下的配置文件中添加一行。如果你在 VM 虚拟机上工作,可以使用 DEF GRAF 来定义虚拟 3270 设备。
你可以生成 3270 和 3215 控制台支持,或其中之一,亦或两者都不生成。如果你两者都生成,VM 下的控制台类型不会改变。请使用 #CP Q TERM 查看当前的控制台类型。使用 #CP TERM CONMODE 3270 将其更改为 3270。如果你仅生成 3270 控制台支持,那么如果你的控制台是 3215,驱动程序将在引导时自动将其转换为 3270。
简而言之,步骤如下
安装 tub3270 补丁
(如果是模块)向 /etc/modprobe.d/*.conf 中的文件添加一行
(如果是 VM)使用 DEF GRAF 定义设备
重新启动
配置
为测试一切是否正常工作(假设使用 VM 和 x3270):
调出一个 x3270 窗口。
在该窗口中使用 DIAL 命令。
你应该会立即看到 Linux 登录屏幕。
以下是详细的安装步骤
1. 3270 驱动程序是官方 Linux 内核源码的一部分。使用内核源码和任何必要的补丁构建源码树。然后执行
make oldconfig (If you wish to disable 3215 console support, edit .config; change CONFIG_TN3215's value to "n"; and rerun "make oldconfig".) make image make modules make modules_install2. (仅当将 tub3270 配置为模块时执行此步骤。)向文件 /etc/modprobe.d/*.conf 中添加一行,以便在需要时自动加载驱动程序。添加此行后,引导完成后你将立即在 3270 上看到登录提示(或者对于模拟的 3270,在使用命令“DIAL <vmguestname>”拨入你的 vm 客户机后立即看到)。由于行模式的主设备号是 227,因此要添加的行应为
alias char-major-227 tub32703. 如果尚未定义,请为你的 vm 客户机定义图形设备。在重新启动(reipl)之前定义它们
DEFINE GRAF 620
DEFINE GRAF 621
DEFINE GRAF 622
DEFINE GRAF 623
4. 重新启动。重启过程会扫描硬件设备(包括 3270),这使得加载后的 tub3270 驱动程序能够正确响应下一步的配置请求。如果你选择了 3270 控制台支持,你的控制台现在将表现为 3270,而不是 3215。
5. 运行 3270 配置脚本 config3270.sh。它与本文档在同一个目录 Documentation/arch/s390 中。检查它生成的输出脚本 /tmp/mkdev3270,然后运行该脚本。这将创建必要的字符特殊设备文件,并对 /etc/inittab 进行必要的修改。
然后通过带 q 操作数的 telinit 命令通知 /sbin/init,/etc/inittab 已更改
cd Documentation/arch/s390 sh config3270.sh sh /tmp/mkdev3270 telinit q对于初次安装,这应该就足够了。如果你的 3270 配置发生了变化并且正在重复使用 config3270,你应该遵循以下步骤
Change 3270 configuration Reboot Run config3270 and /tmp/mkdev3270 Reboot
以下是详细的测试步骤
1. 调出一个 x3270 窗口,或使用实际的硬件 3278 或 3279,或者使用你选择的 3270 模拟器。你将在你的 PC 或工作站上运行该模拟器。例如,你将使用命令
x3270 vm-esa-domain-name &如果你想要一个具有 43 行 80 列的 3278 模型 4(默认型号数字)。该驱动程序未利用扩展属性。
你现在看到的屏幕应该包含一个 VM 徽标,底部附近有输入行。使用 TAB 键移动到底部的行,该行可能标有 “COMMAND ===>”。
2. 使用 DIAL 命令而不是 LOGIN 命令来连接你用 DEF GRAF 命令定义的虚拟 3270 之一
dial my-vm-guest-name3. 你应该会立即看到来自 Linux-390 操作系统的登录提示。如果没有发生这种情况,你将会看到“DIALED TO my-vm-guest-name 0620”这一行。
排错方法:执行以下操作。
A. 驱动程序是否已加载?使用 lsmod 命令(无操作数)来查明。可能没有加载。尝试使用命令“insmod tub3270”手动加载它。该命令是否给出错误消息?哈!问题就在这里。
B. /etc/inittab 文件是否像上面的安装步骤 3 中那样被修改了?使用 grep 命令查明;例如,执行“grep 3270 /etc/inittab”。什么也没找到?问题就在这里!
C. 设备特殊文件是否像上面的安装步骤 2 中那样创建了?使用 ls -l 命令查明;例如,执行“ls -l /dev/3270/tty620”。输出应以字母“c”(表示字符设备)开头,并且在设备名称的左侧应包含“227, 1”。没有该文件?没有“c”?主设备号错误?次设备号错误?问题就在这里!
如果你收到如下消息
"HCPDIA047E my-vm-guest-name 0620 does not exist"?如果是这样,你必须从你的 VM 3215 控制台发出命令“DEF GRAF 620”,然后重新启动系统。
操作。¶
驱动程序在 3270 屏幕上定义了三个区域:日志区、输入区和状态区。
日志区占据了屏幕除底部两行之外的所有空间。驱动程序将终端输出写入其中,从顶行开始向下。当它填满时,状态区从“Linux Running”变为“Linux More...”。在(默认)5 秒的滚动超时后,屏幕被清空并从上到下写入更多输出。
输入区从倒数第二行屏幕行的开头延伸到状态区的起点。你在该区域键入命令并按 ENTER 键执行它们。
状态区初始化为“Linux Running”以给你一种温馨舒适的感觉。当日志区填满且有输出等待时,它会变为“Linux More...”。此时你可以做几件事或什么也不做。如果你什么都不做,屏幕将在(默认)5 秒内清空,并出现更多输出。你可以在输入区未输入任何内容的情况下按 ENTER 键,以便在“Linux More...”和“Linux Holding”(表示不会发生滚动)之间切换。(如果在“Linux Running”状态下且未输入任何内容时按 ENTER 键,应用程序将收到一个换行符。)
你可以更改滚动超时值。例如,以下命令行
echo scrolltime=60 > /proc/tty/driver/tty3270
将滚动超时值更改为 60 秒。如果你希望完全阻止滚动,请将 scrolltime 设置为 0。
当日志区填满时,你还可以执行以下操作:按 PA2 清除日志区并将更多输出写入其中,或者按 CLEAR 清除日志区和输入区并将更多输出写入日志区。
某些程序功能(PF)和程序注意(PA)键被预分配了特殊功能。未被分配的键在按下时会产生报警声。
PA1 会向当前运行的应用程序发送 SIGINT。你也可以从输入区执行相同的操作,只需键入“^C”并按 ENTER 键即可。
PA2 会使日志区被清空。如果有等待的输出,随后会被写入日志区。
PF3 会导致应用程序接收到 EOF 作为输入。你也可以通过键入“^D”并按 ENTER 键来触发 EOF。
没有预分配 PF 键来引起作业挂起,但你可以通过键入“^Z”并按 ENTER 键来引起作业挂起。你可能希望将此功能分配给一个 PF 键。要使 PF7 引起作业挂起,请执行以下命令
echo pf7=^z > /proc/tty/driver/tty3270
如果你键入的输入不以两个字符“^n”结尾,驱动程序会追加一个换行符并将其发送给 tty 驱动程序;否则驱动程序会剥离“^n”且不追加换行符。IBM 3215 驱动程序的行为与此类似。
Pf10 会使最近的命令从终端的命令栈(默认深度为 20)中检索出来并显示在输入区中。你可以再次按下 PF10 获取次近的命令,以此类推。只有当输入区未被隐藏(例如用于输入密码)且与当前顶部条目不相同时,命令才会进入栈中。PF10 在命令栈中向后循环;PF11 向前循环。你可以将向后功能分配给任何 PF 键(甚至 PA 键),例如 PA3,使用命令
echo -e pa3=\\033k > /proc/tty/driver/tty3270
这将字符串 ESC-k 分配给 PA3。类似地,字符串 ESC-j 执行向前功能。(理由:在具有 vi 模式行编辑的 bash 中,ESC-k 和 ESC-j 分别用于向后和向前检索历史记录。欢迎提出建议。)
20 个命令的栈大小不合你的心意?动态更改它。要更改为保存最近 100 个命令,请执行命令
echo recallsize=100 > /proc/tty/driver/tty3270
有一个你经常发出的命令?把它分配给一个 PF 或 PA 键!使用命令
echo pf24="mkdir foobar; cd foobar" > /proc/tty/driver/tty3270
以便在你按下 PF24 时立即执行命令 mkdir foobar 和 cd foobar。想在执行之前先查看命令行?使用 echo 命令的 -n 选项
echo -n pf24="mkdir foo; cd foo" > /proc/tty/driver/tty3270
测试愉快!欢迎对本文档、驱动程序等提出任何及所有的意见和建议。
Dick Hitt <rbh00@utsglobal.com>