Features/3270
The 3270 is the classic 'green-screen' console (see the wikipedia article).
Code
Implementation
The 3270 data stream is not implemented within QEMU; the code only implements tn3270 (a telnet extension; see RFCs 854 and 1576) and leaves the heavy lifting to an emulator (currently only tested with x3270).
Setup
This example setup is done with a Linux guest running in an s390x-ccw-virtio machine and the x3270 emulator running on a local Linux machine.
Prereqs
Guest
- Make sure that 3270 support is enabled in the kernel. You'll need CONFIG_TN3270 and at least one of CONFIG_TN3270_TTY (for additional ttys) or CONFIG_TN3270_CONSOLE (for a 3270 console).
Host
- You need to apply the patches or use the github branch (until the code has been integrated).
Other
- You need to have a copy of the x3270 emulator (should be packaged for most Linux distributions). Other 3270 emulators have not been tested.
Starting QEMU
- Add a tn3270 chardev to your QEMU command line (machine needs to be s390x-ccw-virtio). Example:
-chardev socket,id=char_0,host=0.0.0.0,port=23,nowait,server,tn3270 -device x-terminal3270,chardev=char_0,devno=fe.0.000a,id=terminal_0
- Start QEMU. Your guest will be presented with a 3270 channel-attached device.
Guest Configuration
The guest will see the 3270 as a channel-attached device. With the example above, the device will show up as 0.0.000a.
Using 3270 as an additional tty
You can use the defined 3270 as an additional tty.
- Start the guest and log in via an alternative method (for example, via the sclp console).
- Enable the device. For the example above, use
chccwdev -e 0.0.000a
- Find the respective device node, usually under /dev/3270/.
- Start a getty on that device node, for example via
systemctl start serial-getty@3270-tty1.service
- You may want to defer this step until after you connected via x3270, or you won't see the banner.
Using 3270 as the console
You can use the defined 3270 as the guest's console. However, you'll usually want to use the sclp console instead.
- Make sure you switch the guest console to 3270. For the example above, append
conmode=3270 condev=000a
to the guest's kernel command line. - Start the guest.
Starting the emulator
Connect x3270 to <host>:<port> (for the example above, <host>:23.