Why is a virtual terminal "virtual", and what/why/where is the "real" terminal?

I hope the question is self-explanatory.

My understanding is that gnome-terminal and konsole are virtual terminals, and they are basically serving the same purpose, i.e. a command line environment for various optional command interpreters. (I'm not even sure if that's the right way to look at it.)

I assume that the real terminal is where I am teleported to occasionaly by mis-keying Ctrl+Alt+F1,F2, etc.

But "There be Dragons" in that black-screen hinterland, so I'm outta-there as quickly as I can press Ctrl+Alt+F7 (I learnt that somewhere: "When all is black and dark: press the secret keys to return :)

  • Is/are the "real" terminal(s) the one(s) that exist behind the Ctrl+Alt+F1,F2, etc. keys?
  • And what is so "real" about them vs the "virtual" ones?
  • And how to they differ? Is it as simple as "no GUI" vs "GUI"?

P.S. are "console" and "terminal" synonymous?


Solution 1:

My understanding is that virtual terminals basically serve the same purpose: ie. A command line environment for various optional command interpreters

This isn't strictly true. Virtual Terminals are merely programs that send keystrokes and receive output (this is called Standard In, Standard Out[ and Standard Error]) to a process in the background. This is a basic inputprocessingoutput system, and is at the heart of your operating system.


A teletype (or teleprinter)


Man working at a Computer Terminal

Let's see if I can explain it properly:

In a Unix–like system such as Linux there is the concept of "everything is a file". That means, for example, your DVD Drive is a file (/dev/sdb1), your keyboard is a file (/dev/input/keyboard) and so on.

Another set of those magical files are the TTYs, where TTY stands for Teletype. A Typewriter that sends keystrokes to a computer, which in turn sends letters back to the Type Ball. This would have represented a physical device, a remote typewriter, in the same way as /dev/lp0 may represent your printer.


A hardware terminal, the VT100

The Teletype workstations would have been called "Consoles" or "Terminals", a virtual terminal, as opposed to a real one, thus is any application or machinery that provides the same functionality as this workplace arrangement - which is accessing the computer by sending keystrokes to it and receiving output back from it, printing it to a piece of paper. You can imagine that a Modem works in a very similar way.

Terminals, such as the one pictured above, are cheap and simple computers that emulate the functionality of a teletype. When we say terminal emulator these days, we - in turn - usually mean a program that emulates the functionality of such a machine.

There are still terminal based computer systems in use. They are in fact getting ever more popular. In the past, the reason for terminals was that a computer at every desk was completely ridiculous - where computers filled a room and were immensely expensive. Now, it saves money and makes administration easy.


a "thin client" – the modern equivalent of the VT100

I hope that this is helpful. Please alert my if I've made a mistake.


Does that mean that Control-Alt-F1,F2,etc are also virtual terminals, and the only difference between them and "gnome-terminal" / "konsole" is that they don't have a GUI?

Yes, basically. The difference between TTY1-7 and gnome-terminal is that the system provides the ttys, whereas gnome-terminal and konsole are themselves running on a tty (which is running the graphical subsystem). This abstraction can be nested even deeper (e.g. x-forwarding, using the telnet protocol to act as a terminal, ...), after all, the human—computer interface acts just like any other file. And can be piped, abstracted and moved about in the same way.

Solution 2:

Pretty sure calling it a "virtual terminal" is a throwback to when there were physical terminals connected to unix servers...

Solution 3:

In addition to the answers above, see this comprehensive explanation ot terminals. The TTY, despite its apparent simplicity, is conceptually a rather complicated part of Linux.