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)。
简而言之,这些是步骤
安装 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。它与 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-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”之间切换,这表示不会发生滚动。(如果您按 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>