Virtuální terminál

Virtuální terminál (VT) nebo virtuální konzole (VC) je vlastnost některých unixových operačních systémů, např. Linuxu, BSD, illumosu, UnixWare a MacOSu umožňující na přímo připojeném displeji otevřít ne jednu systémovou konzoli, ale několik sezení (relací) v textovém režimu, které se ovládají klávesnicí, příp. myší přímo připojenou k počítači. Mezi jednotlivými relacemi se lze přepínat a přenášet text jako při použití schránky (clipboardu). Virtuální konzole poskytoval již operační systém XENIX[1] a Concurrent CP/M v 80. letech 20. století.[2]

Obrazovka virtuální konzole zachycená v průběhu zavádění Knoppix Linuxu

Ve standardní konfiguraci Linuxu je dispozici šest virtuálních konzolí pro přihlášení; je-li spuštěn grafický X Window System, je obvykle dostupný na sedmé virtuální konzoli (tty7); je-li spuštěno současně několik relací X Window System, např. při rychlém přepínání uživatelů (anglicky Fast user switching) nebo při ladění programů pro X na zvláštním X serveru, každá X relace obvykle běží na zvláštní virtuální konzoli.

Mezi virtuálními terminály lze v Linuxu přepínat příkazem chvt nebo stisknutím funkční nebo kurzorové klávesy s klávesou Alt – například Alt + F1 přepne na virtuální konzoli číslo 1; Alt + Left přepne na předchozí virtuální konzoli a Alt + Right na další virtuální konzoli. V X Window System nebo Wayland compositor je třeba pro přepnutí na virtuální konzoli použít Ctrl + Alt + F1 (tyto implicitní klávesové kombinace lze předefinovat).

Implementační detaily

editovat

Unixové systémy

editovat

Unix a systémy z něj odvozené používaly v minulosti zařízení reprezentující sériové porty, např. RS-232 porty, a poskytovaly pro ně speciální soubory /dev/*.[3]

Při použití terminálové emulace jsou tato zařízení emulována pomocí dvojice pseudoterminalových zařízení. Tato dvojice se používá pro emulaci fyzického připojení k serveru – přístup k hardwaru počítače poskytuje API operačního systému nebo nějaký jiný software jako např. Rlogin, Telnet nebo SSH.[4] V Linuxu to může být speciální soubor /dev/ptyp0 (pro stranu serveru) a /dev/ttyp0 (pro stranu klienta).

Existuje také speciální soubor pro virtuální konzole jako /dev/console. V textovém režimu zápis do tohoto speciálního souboru způsobí zobrazení textu na virtuální konzoli a čtení vrátí text, který uživatel zadal z klávesnice. Stejně jako při použití skutečných textových terminálů lze používat speciální escape sekvence, řídicí znaky a funkce, které mohou programy používat, nejsnáze pomocí knihoven jako Ncurses. Pro složitější operace mohou programy používající konzoli a terminál používat speciální ioctl volání systému. Určité odlišnosti jsou mezi zařízeními se jmény vcs (virtuální konzolová obrazovka, anglicky virtual console screen) a vcsa (virtuální konzolová obrazovka s atributy, anglicky virtual console screen with attributes) jako /dev/vcs1 a /dev/vcsa1.[5]

Některé terminálové emulátory také používají řídicí posloupnosti pro konfigurování chování terminálu, aby usnadnily propojitelnost mezi terminálem a programy, které jej používají, například pro zkonfigurování závorkování obsahu schránky.

Virtuální konzole lze konfigurovat v souboru /etc/inittab, které čte program Init, který obvykle inicializuje několik virtuálních konzolí pro přihlášení v textovém režimu pomocí procesu getty. X Window System se konfiguruje v /etc/inittab nebo pomocí X displej manažeru. Několik linuxových distribucí místo init používá systemd, který také umožňuje konfiguraci virtuální konzole.

Nástroje pro příkazový řádek

editovat

Linux používá následující systémové programy pro přístup k virtuální konzoli:

  • chvt pro přepnutí aktuální virtuální konzole
  • openvt pro spuštění programu na nové virtuální konzoli
  • deallocvt pro zavření aktuálně nepoužité virtuální konzole

Zavádění systému

editovat

Program startx spustí X Window System na nové virtuální konzoli. Existují i jiné grafické programy, které můohou startovat z konzole (například LinuxTV a MPlayer atd.).

Grafické stanice a servery

editovat

Mnohé grafické unixové pracovní stanice, např. firmy Sun Microsystems nebo Silicon Graphics virtuální konzole nemají. Jediným účelem systémové konzole je opravit systém tak, aby mohlo nastartovat grafické prostředí.

Servery Sun UltraSPARC T1 označované kódovým jménem „Niagara“, které používají hardwarovou virtualizaci s logickými doménami, mají služby virtuální konzole z Control domain.

Poznámky

editovat
  1. Trusted path mechanism for virtual terminal environments [online]. FreePatentsOnline.com [cit. 2008-04-09]. Dostupné online. 
    Patent Spojených států amerických č. 4945468 uvádí jako první použití v systému Xenix.
  2. GUZAITIS, Joe. Concurrent CP/M. archive.org. Listopad 1983, s. 257–268. Dostupné online [cit. 2016-03-19]. 
  3. A Brief History of Terminal Emulation|Turbosoft [online]. www.ttwin.com [cit. 2021-10-04]. Dostupné online. 
  4. Ubuntu Manpage: tty — general terminal interface [online]. manpages.ubuntu.com [cit. 2021-10-04]. Dostupné v archivu pořízeném dne 2021-10-04. 
  5. Screen dumps [online]. TheLinux dokumentační projekt [cit. 2008-07-31]. K aktuálnímu obsahu obrazovky /dev/ttyN lze přistupovat pomocí zařízení /dev/vcsN (kde „vcs“ znamená „virtuální konzolová obrazovka“). [...] V programu je obvykle lepší používat /dev/vcsaN („virtuální konzolová obrazovka s atributy“) – začíná hlavičkou, která udává počet řádků a sloupců a umístění kurzoru. Viz manuálová stránka vcs(4). Dostupné online. 

Reference

editovat

V tomto článku byly použity překlady textů z článků Virtual console na anglické Wikipedii a Terminal emulator na anglické Wikipedii.

  • FreeBSD Handbook [online]. Kapitola 3.2 Virtual Consoles and Terminals. Dostupné online. 

Související články

editovat

Externí odkazy

editovat