Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame^] | 1 | IBM 3270 Display System support |
| 2 | |
| 3 | This file describes the driver that supports local channel attachment |
| 4 | of IBM 3270 devices. It consists of three sections: |
| 5 | * Introduction |
| 6 | * Installation |
| 7 | * Operation |
| 8 | |
| 9 | |
| 10 | INTRODUCTION. |
| 11 | |
| 12 | This paper describes installing and operating 3270 devices under |
| 13 | Linux/390. A 3270 device is a block-mode rows-and-columns terminal of |
| 14 | which I'm sure hundreds of millions were sold by IBM and clonemakers |
| 15 | twenty and thirty years ago. |
| 16 | |
| 17 | You may have 3270s in-house and not know it. If you're using the |
| 18 | VM-ESA operating system, define a 3270 to your virtual machine by using |
| 19 | the command "DEF GRAF <hex-address>" This paper presumes you will be |
| 20 | defining four 3270s with the CP/CMS commands |
| 21 | |
| 22 | DEF GRAF 620 |
| 23 | DEF GRAF 621 |
| 24 | DEF GRAF 622 |
| 25 | DEF GRAF 623 |
| 26 | |
| 27 | Your network connection from VM-ESA allows you to use x3270, tn3270, or |
| 28 | another 3270 emulator, started from an xterm window on your PC or |
| 29 | workstation. With the DEF GRAF command, an application such as xterm, |
| 30 | and this Linux-390 3270 driver, you have another way of talking to your |
| 31 | Linux box. |
| 32 | |
| 33 | This paper covers installation of the driver and operation of a |
| 34 | dialed-in x3270. |
| 35 | |
| 36 | |
| 37 | INSTALLATION. |
| 38 | |
| 39 | You install the driver by installing a patch, doing a kernel build, and |
| 40 | running the configuration script (config3270.sh, in this directory). |
| 41 | |
| 42 | WARNING: If you are using 3270 console support, you must rerun the |
| 43 | configuration script every time you change the console's address (perhaps |
| 44 | by using the condev= parameter in silo's /boot/parmfile). More precisely, |
| 45 | you should rerun the configuration script every time your set of 3270s, |
| 46 | including the console 3270, changes subchannel identifier relative to |
| 47 | one another. ReIPL as soon as possible after running the configuration |
| 48 | script and the resulting /tmp/mkdev3270. |
| 49 | |
| 50 | If you have chosen to make tub3270 a module, you add a line to |
| 51 | /etc/modprobe.conf. If you are working on a VM virtual machine, you |
| 52 | can use DEF GRAF to define virtual 3270 devices. |
| 53 | |
| 54 | You may generate both 3270 and 3215 console support, or one or the |
| 55 | other, or neither. If you generate both, the console type under VM is |
| 56 | not changed. Use #CP Q TERM to see what the current console type is. |
| 57 | Use #CP TERM CONMODE 3270 to change it to 3270. If you generate only |
| 58 | 3270 console support, then the driver automatically converts your console |
| 59 | at boot time to a 3270 if it is a 3215. |
| 60 | |
| 61 | In brief, these are the steps: |
| 62 | 1. Install the tub3270 patch |
| 63 | 2. (If a module) add a line to /etc/modprobe.conf |
| 64 | 3. (If VM) define devices with DEF GRAF |
| 65 | 4. Reboot |
| 66 | 5. Configure |
| 67 | |
| 68 | To test that everything works, assuming VM and x3270, |
| 69 | 1. Bring up an x3270 window. |
| 70 | 2. Use the DIAL command in that window. |
| 71 | 3. You should immediately see a Linux login screen. |
| 72 | |
| 73 | Here are the installation steps in detail: |
| 74 | |
| 75 | 1. The 3270 driver is a part of the official Linux kernel |
| 76 | source. Build a tree with the kernel source and any necessary |
| 77 | patches. Then do |
| 78 | make oldconfig |
| 79 | (If you wish to disable 3215 console support, edit |
| 80 | .config; change CONFIG_TN3215's value to "n"; |
| 81 | and rerun "make oldconfig".) |
| 82 | make image |
| 83 | make modules |
| 84 | make modules_install |
| 85 | |
| 86 | 2. (Perform this step only if you have configured tub3270 as a |
| 87 | module.) Add a line to /etc/modprobe.conf to automatically |
| 88 | load the driver when it's needed. With this line added, |
| 89 | you will see login prompts appear on your 3270s as soon as |
| 90 | boot is complete (or with emulated 3270s, as soon as you dial |
| 91 | into your vm guest using the command "DIAL <vmguestname>"). |
| 92 | Since the line-mode major number is 227, the line to add to |
| 93 | /etc/modprobe.conf should be: |
| 94 | alias char-major-227 tub3270 |
| 95 | |
| 96 | 3. Define graphic devices to your vm guest machine, if you |
| 97 | haven't already. Define them before you reboot (reipl): |
| 98 | DEFINE GRAF 620 |
| 99 | DEFINE GRAF 621 |
| 100 | DEFINE GRAF 622 |
| 101 | DEFINE GRAF 623 |
| 102 | |
| 103 | 4. Reboot. The reboot process scans hardware devices, including |
| 104 | 3270s, and this enables the tub3270 driver once loaded to respond |
| 105 | correctly to the configuration requests of the next step. If |
| 106 | you have chosen 3270 console support, your console now behaves |
| 107 | as a 3270, not a 3215. |
| 108 | |
| 109 | 5. Run the 3270 configuration script config3270. It is |
| 110 | distributed in this same directory, Documentation/s390, as |
| 111 | config3270.sh. Inspect the output script it produces, |
| 112 | /tmp/mkdev3270, and then run that script. This will create the |
| 113 | necessary character special device files and make the necessary |
| 114 | changes to /etc/inittab. If you have selected DEVFS, the driver |
| 115 | itself creates the device files, and /tmp/mkdev3270 only changes |
| 116 | /etc/inittab. |
| 117 | |
| 118 | Then notify /sbin/init that /etc/inittab has changed, by issuing |
| 119 | the telinit command with the q operand: |
| 120 | cd Documentation/s390 |
| 121 | sh config3270.sh |
| 122 | sh /tmp/mkdev3270 |
| 123 | telinit q |
| 124 | |
| 125 | This should be sufficient for your first time. If your 3270 |
| 126 | configuration has changed and you're reusing config3270, you |
| 127 | should follow these steps: |
| 128 | Change 3270 configuration |
| 129 | Reboot |
| 130 | Run config3270 and /tmp/mkdev3270 |
| 131 | Reboot |
| 132 | |
| 133 | Here are the testing steps in detail: |
| 134 | |
| 135 | 1. Bring up an x3270 window, or use an actual hardware 3278 or |
| 136 | 3279, or use the 3270 emulator of your choice. You would be |
| 137 | running the emulator on your PC or workstation. You would use |
| 138 | the command, for example, |
| 139 | x3270 vm-esa-domain-name & |
| 140 | if you wanted a 3278 Model 4 with 43 rows of 80 columns, the |
| 141 | default model number. The driver does not take advantage of |
| 142 | extended attributes. |
| 143 | |
| 144 | The screen you should now see contains a VM logo with input |
| 145 | lines near the bottom. Use TAB to move to the bottom line, |
| 146 | probably labeled "COMMAND ===>". |
| 147 | |
| 148 | 2. Use the DIAL command instead of the LOGIN command to connect |
| 149 | to one of the virtual 3270s you defined with the DEF GRAF |
| 150 | commands: |
| 151 | dial my-vm-guest-name |
| 152 | |
| 153 | 3. You should immediately see a login prompt from your |
| 154 | Linux-390 operating system. If that does not happen, you would |
| 155 | see instead the line "DIALED TO my-vm-guest-name 0620". |
| 156 | |
| 157 | To troubleshoot: do these things. |
| 158 | |
| 159 | A. Is the driver loaded? Use the lsmod command (no operands) |
| 160 | to find out. Probably it isn't. Try loading it manually, with |
| 161 | the command "insmod tub3270". Does that command give error |
| 162 | messages? Ha! There's your problem. |
| 163 | |
| 164 | B. Is the /etc/inittab file modified as in installation step 3 |
| 165 | above? Use the grep command to find out; for instance, issue |
| 166 | "grep 3270 /etc/inittab". Nothing found? There's your |
| 167 | problem! |
| 168 | |
| 169 | C. Are the device special files created, as in installation |
| 170 | step 2 above? Use the ls -l command to find out; for instance, |
| 171 | issue "ls -l /dev/3270/tty620". The output should start with the |
| 172 | letter "c" meaning character device and should contain "227, 1" |
| 173 | just to the left of the device name. No such file? no "c"? |
| 174 | Wrong major number? Wrong minor number? There's your |
| 175 | problem! |
| 176 | |
| 177 | D. Do you get the message |
| 178 | "HCPDIA047E my-vm-guest-name 0620 does not exist"? |
| 179 | If so, you must issue the command "DEF GRAF 620" from your VM |
| 180 | 3215 console and then reboot the system. |
| 181 | |
| 182 | |
| 183 | |
| 184 | OPERATION. |
| 185 | |
| 186 | The driver defines three areas on the 3270 screen: the log area, the |
| 187 | input area, and the status area. |
| 188 | |
| 189 | The log area takes up all but the bottom two lines of the screen. The |
| 190 | driver writes terminal output to it, starting at the top line and going |
| 191 | down. When it fills, the status area changes from "Linux Running" to |
| 192 | "Linux More...". After a scrolling timeout of (default) 5 sec, the |
| 193 | screen clears and more output is written, from the top down. |
| 194 | |
| 195 | The input area extends from the beginning of the second-to-last screen |
| 196 | line to the start of the status area. You type commands in this area |
| 197 | and hit ENTER to execute them. |
| 198 | |
| 199 | The status area initializes to "Linux Running" to give you a warm |
| 200 | fuzzy feeling. When the log area fills up and output awaits, it |
| 201 | changes to "Linux More...". At this time you can do several things or |
| 202 | nothing. If you do nothing, the screen will clear in (default) 5 sec |
| 203 | and more output will appear. You may hit ENTER with nothing typed in |
| 204 | the input area to toggle between "Linux More..." and "Linux Holding", |
| 205 | which indicates no scrolling will occur. (If you hit ENTER with "Linux |
| 206 | Running" and nothing typed, the application receives a newline.) |
| 207 | |
| 208 | You may change the scrolling timeout value. For example, the following |
| 209 | command line: |
| 210 | echo scrolltime=60 > /proc/tty/driver/tty3270 |
| 211 | changes the scrolling timeout value to 60 sec. Set scrolltime to 0 if |
| 212 | you wish to prevent scrolling entirely. |
| 213 | |
| 214 | Other things you may do when the log area fills up are: hit PA2 to |
| 215 | clear the log area and write more output to it, or hit CLEAR to clear |
| 216 | the log area and the input area and write more output to the log area. |
| 217 | |
| 218 | Some of the Program Function (PF) and Program Attention (PA) keys are |
| 219 | preassigned special functions. The ones that are not yield an alarm |
| 220 | when pressed. |
| 221 | |
| 222 | PA1 causes a SIGINT to the currently running application. You may do |
| 223 | the same thing from the input area, by typing "^C" and hitting ENTER. |
| 224 | |
| 225 | PA2 causes the log area to be cleared. If output awaits, it is then |
| 226 | written to the log area. |
| 227 | |
| 228 | PF3 causes an EOF to be received as input by the application. You may |
| 229 | cause an EOF also by typing "^D" and hitting ENTER. |
| 230 | |
| 231 | No PF key is preassigned to cause a job suspension, but you may cause a |
| 232 | job suspension by typing "^Z" and hitting ENTER. You may wish to |
| 233 | assign this function to a PF key. To make PF7 cause job suspension, |
| 234 | execute the command: |
| 235 | echo pf7=^z > /proc/tty/driver/tty3270 |
| 236 | |
| 237 | If the input you type does not end with the two characters "^n", the |
| 238 | driver appends a newline character and sends it to the tty driver; |
| 239 | otherwise the driver strips the "^n" and does not append a newline. |
| 240 | The IBM 3215 driver behaves similarly. |
| 241 | |
| 242 | Pf10 causes the most recent command to be retrieved from the tube's |
| 243 | command stack (default depth 20) and displayed in the input area. You |
| 244 | may hit PF10 again for the next-most-recent command, and so on. A |
| 245 | command is entered into the stack only when the input area is not made |
| 246 | invisible (such as for password entry) and it is not identical to the |
| 247 | current top entry. PF10 rotates backward through the command stack; |
| 248 | PF11 rotates forward. You may assign the backward function to any PF |
| 249 | key (or PA key, for that matter), say, PA3, with the command: |
| 250 | echo -e pa3=\\033k > /proc/tty/driver/tty3270 |
| 251 | This assigns the string ESC-k to PA3. Similarly, the string ESC-j |
| 252 | performs the forward function. (Rationale: In bash with vi-mode line |
| 253 | editing, ESC-k and ESC-j retrieve backward and forward history. |
| 254 | Suggestions welcome.) |
| 255 | |
| 256 | Is a stack size of twenty commands not to your liking? Change it on |
| 257 | the fly. To change to saving the last 100 commands, execute the |
| 258 | command: |
| 259 | echo recallsize=100 > /proc/tty/driver/tty3270 |
| 260 | |
| 261 | Have a command you issue frequently? Assign it to a PF or PA key! Use |
| 262 | the command |
| 263 | echo pf24="mkdir foobar; cd foobar" > /proc/tty/driver/tty3270 |
| 264 | to execute the commands mkdir foobar and cd foobar immediately when you |
| 265 | hit PF24. Want to see the command line first, before you execute it? |
| 266 | Use the -n option of the echo command: |
| 267 | echo -n pf24="mkdir foo; cd foo" > /proc/tty/driver/tty3270 |
| 268 | |
| 269 | |
| 270 | |
| 271 | Happy testing! I welcome any and all comments about this document, the |
| 272 | driver, etc etc. |
| 273 | |
| 274 | Dick Hitt <rbh00@utsglobal.com> |