Virtuaalikonsoli

Linux.fista
Versio hetkellä 17. elokuuta 2009 kello 10.38 – tehnyt Heikki (keskustelu | muokkaukset) (tarkennus)
(ero) ← Vanhempi versio | Nykyinen versio (ero) | Uudempi versio → (ero)
Siirry navigaatioon Siirry hakuun

Linux/Unix-järjestelmissä (järjestelmä)konsoli eli näytön ja näppäimistön yhdistelmä on jaettu useaan eri virtuaalikonsoliin. Virtuaalikonsolit toimivat kukin eräänlaisina omina työtiloinaan, joissa voidaan ajaa ohjelmia riippumatta siitä, mitä toisissa virtuaalikonsoleissa on ajossa. Tämä on suuri etu verrattuna esimerkiksi Windows/DOS-järjestelmiin, joissa käytössä ei ole kuin järjestelmäkonsoli, eikä edusta-ajossa voi olla kuin yksi ohjelma kerrallaan. Unixissa järjestelmäkonsoli seuraa kulloinkin käytössä olevaa virtuaalikonsolia, johon näyttö- ja syötelaitteet (yleensä näyttö ja näppäimistö) ovat kytköksissä ja johon myös järjestelmänlaajuiset virheilmoitukset tulostuvat.

Linuxissa virtuaalikonsolit 1-6 ovat yleensä tekstipohjaisessa käytössä ja niihin on käynnistetty jokin getty-ohjelma odottamaan käyttäjän sisäänkirjautumista. Graafisen käyttöliittymän tarjoava X Window System käynnistyy oletuksena virtuaalikonsoliin 7, joten jos järjestelmässä on käytössä jokin graafinen kirjautumisohjelma (display manager) niin käynnistyksen jälkeen kone on yleensä tässä virtuaalikonsolissa. Muussa tapauksessa oletusvirtuaalikonsoli on 1. Virtuaalikonsolien määrä ei kuitenkaan ole rajoitettu näihin seitsemään, vaan niitä voi käynnistää lisää aina 63:een saakka.

Virtuaalikonsolista toiseen siirrytään näppäinyhdistelmällä Alt+F? (esimerkiksi Alt+F1 tai Alt+F9) tai näppäinyhdistelmällä Alt+sivunuolinäppäin. Myös komentoa chvt voi käyttää. Nämä näppäinyhdistelmät eivät kuitenkaan päde X:ssä, jossa virtuaalikonsolista toiseen siirtymiseen on käytettävä näppäinyhdistelmää Ctrl+Alt+F? (esimerkiksi Ctrl+Alt+F6).

Laitetiedostot

Virtuaalikonsolien laitetiedostot ovat muotoa /dev/ttyX (joissakin järjestelmissä myös /dev/vc/X), jossa X on numero väliltä 0-63. Virtuaalikonsoli 0 viittaa aina kulloinkin aktiiviseen virtuaalikonsoliin, joten se toimii käytännössä samoin kuin (järjestelmä)konsolin laitetiedosto /dev/console. Normaalit virtuaalikonsolit ovat aina sen käyttäjän omistuksessa, joka omistaa niissä ajettavan ohjelman. Virtuaalikonsolien määrän rajoitus 63:een on ytimen sisäinen asetus.

Uusien virtuaalikonsolien varaaminen

Jos kuusi gettyn sisältävää virtuaaliterminaalia loppuvat kesken, voi uusia käynnistää komennolla openvt (vanhemmissa järjestelmissä nimellä open):

openvt -c 8 /sbin/agetty 38400 tty8 linux

Tässä käynnistetään agetty-niminen getty-ohjelma virtuaalikonsoliin 8. Agetty on yleiskäyttöinen getty-ohjelma, jonka voi laittaa vahtimaan niin virtuaalikonsolia kuin sarjaterminaalia tai modeemilinjaakin. Kaikki jakelut eivät käytä agettya oletus-gettynään. Esimerkiksi Fedoran käyttäjät todennäköisesti mieluummin komentaisivat

openvt -c 8 /sbin/mingetty tty8

Openvt:llä voi myös käynnistää muitakin ohjelmia kuin gettyjä, esimerkiksi seuraava käynnistäisi vim-tekstieditorin ensimmäiseen vapaaseen virtuaalikonsoliin:

openvt /usr/bin/vim

Virtuaalikonsolien pysyvämpään varaamiseen esimerkiksi gettyä varten käytetään initin asetustiedostoa /etc/inittab. Jos inittabista löytyy entiseltään esimerkiksi rivit

c1:2345:respawn:/sbin/agetty 38400 tty1 linux
c2:2345:respawn:/sbin/agetty 38400 tty2 linux
c3:2345:respawn:/sbin/agetty 38400 tty3 linux
c4:2345:respawn:/sbin/agetty 38400 tty4 linux
c5:2345:respawn:/sbin/agetty 38400 tty5 linux
c6:2345:respawn:/sbin/agetty 38400 tty6 linux

lisätään tällöin yksinkertaisesti rivi

c7:2345:respawn:/sbin/agetty 38400 tty7 linux

mikäli halutaan 7:een virtuaaliterminaaliin getty. Tällöin mahdollisesti avattavat X-istunnot siirtyvät käyttämään virtuaaliterminaalia 8, joka on ensimmäinen vapaa virtuaalikonsoli. Rivin ensimmäinen sarake määrittää toiminnon kohteen. Tässä esimerkiksi c30 olisi kolmaskymmenes virtuaalikonsoli ja s1 ensimmäinen sarjaporttilinja. Toisessa sarakkeessa määritellään ajotasot, joissa toiminto suoritetaan, tässä tapauksessa 2, 3, 4 ja 5. Kolmas sarake määrittää, miten ja milloin toiminto pitää suorittaa. respawn tarkoittaa, että prosessi suoritetaan välittömästi uudelleen sen suorituksen päätyttyä. once aiheuttaisi suorittamisen vain kerran. Neljännessä sarakkeessa määritellään ajettava ohjelma valitsimineen (ohjelman koko polku määriteltävä). Agettylle on määritelty yhteyden baudimäärä (signaalinmuutosten määrä sekunnissa), käytettävä virtuaalikonsoli ilman /dev/-osaa sekä käytettävä terminaalityyppi. Pelkästään virtuaalikonsolikäyttöön tehdyt gettyt eivät yleensä vaadi muuta määrettä kuin käytettävän virtuaalikonsolin nimen.

Jos halutaan pääkäyttäjän voivan kirjautua sisään avatun uuden virtuaalikonsolin kautta (gettyn kutsuma login-ohjelma), on virtuaalikonsolin nimen löydyttävä asetustiedostosta /etc/securetty. Hyväksyttyjen kirjautumiskonsolien (voivat olla myös esimerkiksi sarjaterminaaleja) nimet ovat tiedostossa ilman /dev/-osaa. Tiedosto sisältää oletuksena tyypillisesti seuraavaa:

console
tty1
tty2
tty3
tty4
tty5
tty6

X ja virtuaalikonsolit

X käynnistyy oletuksena ensimmäiseen vapaaseen virtuaalikonsoliin. Jos halutaan käynnistää useampia eri X-istuntoja eri virtuaalikonsoleihin, on huomioitava X-palvelimen oma display-asetus. Ensimmäisen käynnistetyn X-istunnon display-numero on 0, mutta sitä seuraaville istunnoille se on määriteltävä erikseen. Esimerkiksi jos seitsemännessä virtuaalikonsolissa on käynnissä X:n display numero 0, niin 8:een virtuaalikonsoliin haluttavalle uudelle X-istunnolle on annettava jokin toinen numero, kuten 1 tai 42, jotta X-palvelin voi erottaa nämä istunnot toisistaan ja niihin voidaan järkevästi viitata. Startx-komennon kanssa display-numero määritellään seuraavasti:

startx -- :1

myös seuraava, käytettävän näytön numeron (tässä ensimmäinen näyttö) määrittelevä syntaksi on mahdollinen:

startx -- 0:1

Xinit-komento tottelee samaa syntaksia. Puhtaan X:n ilman ohjelmia käynnistävä X-komento ei sen sijaan tarvitse kahta viivaa (--):

X :1 -query xdmcp.firma.fi

Display, jossa X-ohjelmaa halutaan ajaa, voidaan määritellä valitsimella -display. Esimerkiksi seuraava käynnistäisi xtermin display 1:een:

xterm -display :0

Katso myös