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 的网络连接允许您使用 x3270、tn3270 或其他 3270 仿真器,从 PC 或工作站上的 xterm 窗口启动。使用 DEF GRAF 命令,像 xterm 这样的应用程序,以及此 Linux-390 3270 驱动程序,您有另一种与您的 Linux 机器通信的方式。
本文涵盖了驱动程序的安装和拨入的 x3270 的操作。
安装¶
您可以通过安装补丁、进行内核构建并运行配置脚本(此目录中的 config3270.sh)来安装驱动程序。
警告:如果您正在使用 3270 控制台支持,则每次更改控制台地址(可能是通过使用 silo 的 /boot/parmfile 中的 condev= 参数)时,都必须重新运行配置脚本。更准确地说,您应该在每次您的 3270 集(包括控制台 3270)相对于彼此的子通道标识符发生更改时重新运行配置脚本。在运行配置脚本和生成的 /tmp/mkdev3270 后,尽快重新 IPL。
如果您选择将 tub3270 作为模块,则在 /etc/modprobe.d/ 下的配置文件中添加一行。如果您正在 VM 虚拟机上工作,则可以使用 DEF GRAF 定义虚拟 3270 设备。
您可以生成 3270 和 3215 控制台支持,或两者之一,或两者都不生成。如果您同时生成两者,则 VM 下的控制台类型不会更改。使用 #CP Q TERM 查看当前的控制台类型。使用 #CP TERM CONMODE 3270 将其更改为 3270。如果您仅生成 3270 控制台支持,则驱动程序会在启动时自动将您的控制台转换为 3270(如果它是 3215)。
简而言之,这些是步骤
安装 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>” 拨入您的虚拟机来宾后立即看到)。由于行模式主号码为 227,因此要添加的行应为
alias char-major-227 tub32703. 如果您尚未这样做,请将图形设备定义给您的虚拟机来宾机器。在您重新启动 (reipl) 之前定义它们
DEFINE GRAF 620
DEFINE GRAF 621
DEFINE GRAF 622
DEFINE GRAF 623
4. 重新启动。重新启动过程会扫描硬件设备(包括 3270),这使 tub3270 驱动程序在加载后能够正确响应下一步的配置请求。如果您选择了 3270 控制台支持,则您的控制台现在的行为类似于 3270,而不是 3215。
5. 运行 3270 配置脚本 config3270。它与 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. 是否如上述安装步骤 3 中所述修改了 /etc/inittab 文件?使用 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 执行前进功能。(理由:在 bash 的 vi 模式行编辑中,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>