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 后,请尽快重新启动系统。

如果您选择将 tub3270 制成模块,则需要在 /etc/modprobe.d/ 下的配置文件中添加一行。如果您正在 VM 虚拟机上工作,则可以使用 DEF GRAF 定义虚拟 3270 设备。

您可以生成 3270 和 3215 控制台支持,或者两者之一,或者两者都不生成。如果同时生成两者,则 VM 下的控制台类型不会更改。使用 #CP Q TERM 查看当前的控制台类型。使用 #CP TERM CONMODE 3270 将其更改为 3270。如果您只生成 3270 控制台支持,则驱动程序会在启动时自动将您的控制台转换为 3270(如果它是 3215)。

简而言之,这些是步骤

  1. 安装 tub3270 补丁

  2. (如果是模块)在 /etc/modprobe.d/*.conf 中的文件中添加一行

  3. (如果是 VM)使用 DEF GRAF 定义设备

  4. 重新启动

  5. 配置

要测试一切是否正常工作,假设使用 VM 和 x3270,

  1. 启动 x3270 窗口。

  2. 在该窗口中使用 DIAL 命令。

  3. 您应该立即看到 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_install

2. (仅当您已将 tub3270 配置为模块时,才执行此步骤。)在文件 /etc/modprobe.d/*.conf 中添加一行,以便在需要时自动加载驱动程序。添加此行后,您将在启动完成后立即在您的 3270 上看到登录提示(或者在使用模拟的 3270 时,在您使用命令“DIAL <vmguestname>”拨入您的 vm 访客后立即看到登录提示)。由于行模式主设备号为 227,因此要添加的行应该是

alias char-major-227 tub3270

3. 如果尚未定义,请将图形设备定义到您的 vm 访客机器。在重新启动 (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 &

如果您想要一个 3278 型号 4,具有 43 行 80 列,这是默认型号。该驱动程序不利用扩展属性。

您现在应该看到的屏幕包含一个 VM 徽标,底部附近有输入行。使用 TAB 移动到最底部的行,可能标记为“COMMAND ===>”。

2. 使用 DIAL 命令而不是 LOGIN 命令连接到您使用 DEF GRAF 命令定义的虚拟 3270 之一

dial my-vm-guest-name

3. 您应该立即看到来自您的 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”?错误的主设备号?错误的次设备号?这就是您的问题!

  1. 您是否收到消息

    "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”之间切换,这表示不会发生滚动。(如果您按 ENTER 并显示“Linux Running”且未键入任何内容,则应用程序会收到一个换行符。)

您可以更改滚动超时值。例如,以下命令行

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>