Linuxcursus Les 8 Runlevels en X

Paul Wiegmans (paul@bonhoeffer.nl)
laatst gewijzigd

Introduktie

Het Linux systeem draait in een bepaald runlevel. Het runlevel is een soort toestand waarin het Linux systeem zich bevindt. Linux kent een aantal runlevels die bepalend zijn  voor welke functies het systeem biedt. Op een lager plan bepaalt het runlevel welke systeemdiensten aktief of inaktief zijn. We kunnen Linux in een andere runlevel brengen.
De functionaliteit van een runlevel bepaalt of de grafische omgeving (het "X Windowing System") aktief is, en ook of het netwerk-subsysteem van Linux aktief is en in staat om verbindingen te leggen met andere computers.

Het X Windowing System of kortweg "X" genoemd geeft Linux een grafische gebruikersinterface met muis, verplaatsbare overlappende vensters, menus en knoppen om te klikken. Feitelijke is X een grafische omgeving zonder inhoud, en een apart programma, dat de windowmanager wordt genoemd, geeft de gebruikersomgeving zijn smoel en aan de gebruiker menus om keuzen te maken, om programmas te starten, en knoppen om de vensters van vorm en plaats te veranderen. In tegenstelling tot Windows biedt Linux van oudsher de gebruiker niet één, maar verscheidene windowmanagers, die allemaal qua functies en uiterlijk verschillen.

Hieronder wordt een aantal verschillende manieren behandeld om X te starten. Er worden ook enkele manieren getoond om een windowmanager te kiezen, en  enkele windowmanagers worden vergeleken.

Runlevels

Om maar meteen met de deur in huis te vallen, bevat het volgende regels een fragment van het bestand /etc/inittab . Hierin is een opsomming van welke runlevels gangbaar zijn op een doorsnee Linux. Roep het bestand /etc/inittab een op met het commando:
less /etc/inittab
Je ziet dan o.a. het volgende

#   0 - halt (Do NOT set initdefault to this)
#   1 - Single user mode
#   2 - Multiuser, without NFS (The same as 3, if you do not have networking)
#   3 - Full multiuser mode
#   4 - unused
#   5 - X11
#   6 - reboot (Do NOT set initdefault to this)
#
id:5:initdefault:

Op de laatste regel achter "id:" zie je een getal, dat is hier 5. Hiermee heb ik meteen het grootste geheim verklapt. Dit is het runlevel waarmee het Linux systeem is gestart. De systeembeheerder ("root") kan dit bestand editten met bijv vi of Gedit om het runlevel in te stellen. Wees wel voorzichtig! Je kunt je Linux aardig vernachelen hiermee.

Wat kun je hier nu mee?

Even uitleggen wat elk runlevel doet, dan zal het duidelijk zijn.


Runlevel 5 is de "normale" stand voor het Linux systeem. Je hebt dan de beschikking over de grafische gebruikersomgeving X. In moderne Linux'en krijg je dan ook de beschikking op een grafisch aanmeldingsvenster. Er zijn evengoed een aantal virtuele terminals tot je beschikking onder de functietoetsen Ctrl-Alt-F2 t/m Ctrl-Alt-F6 (vaak ook op Ctrl-Alt-F1). De grafische omgeving zit onder Ctrl-Alt-F7.

Runlevel 3 is de normale stand voor het Linux systeem zonder X, maar wel met multi-user en netwerk-mogelijkheid. Dit geeft een volwaardig Linux systeem, waar je wel alle functies wilt gebruiken, maar de grafische gebruikersinterface best kunt missen. Dit is vooral geschikt voor servers, waarop meestal niemand op de console aanmeldt, of voor machines met weinig geheugen. Hiermee bespaar je een hoop extra geheugengebruik en CPU-belasting dat het gebruik van X met zich meebrengt.

Runlevel 1 is "single user mode" , dus hiermee voorkom je dat er meer dan een gebruiker zich aanmeldt. De enige gebruiker die zich aanmeldt in runlevel zit achter het toetsenbord en beeldscherm. Dat is een ding dat zeker is. Je gebruikt dit runlevel vooral om systeemonderhoud te doen, bijvoorbeeld het controleren van fouten op de harddisk met het programma fsck , want dat is onmogelijk in multiuser mode.

Runlevel 2 is hetzelfde als de multi-user runlevel 3, maar zonder netwerk functies. Dit is handig als je de computer wilt afkoppelen van het netwerk.

Runlevel 4 wordt eigenlijk niet gebruikt in Linux.

Runlevel 0 en 6 hebben een speciale functie voor het starten en afsluiten van het Linux systeem. Om te stoppen gaat Linux naar runlevel 0 . Hierin worden alle services (deamons) gestopt en vervolgens de computer uitgeschakeld. In runlevel 6 gebeurt het hetzelfde maar de computer start opnieuw.

init

Met het init commando is het mogelijk om Linux in een andere runlevel te brengen en daarmee de functionaliteit van het Linux systeem te veranderen. De syntaxis is als volgt.

init <runlevel>

waarbij runlevel een runlevel is van 0 t/m 6 of het speciale runlevel s , dat de single user mode is. Uiteraard kan dit commando alleen door de gebruiker root worden uitgevoerd.

Inittab

Het bestand inittab in de /etc folder bevat niet alleen het default runlevel, maar het definieert hoe linux moet reageren op speciale signalen. Het bestand bevat een aantal tekstregels in een speciaal formaat. Het formaat van deze regel is :

id:runlevels:action:process

Het id veld bevat een willekeurige naam. In runlevels staat voor welke runlevels dit geldt. Action bevat de aktie die moet worden uitgevoerd en process bevat de naam van het process dat moet worden gestart. Je kunt dit allemaal zelf nalezen wanneer je
man inittab
op de commandoregel uitvoert.

Een van die speciale signalen is het indrukken van de toetscombinatie Ctrl-Alt-Del. De tekstregel die begint met
ca::ctrlaltdel
bevat het commando dat moet worden uitgevoerd als een gebruiker achter het toetsenbord Ctrl-Alt-Del indrukt. Het commando dat uitgevoerd wordt is shutdown -r . Je kunt vast wel raden wat dat doet... het sluit de computer af en laat het daarna herstarten (-r).

Andere speciale signalen waarop linux moet reageren zijn de signalen powerfail en powerokwait . In de meeste gevallen komen deze signalen van een UPS , die signalen sturen via een seriele poort wanneer de netspanning wegvalt en de computer enige tijd draait op een accu, respectievelijk wanneer de spannings op het net weer hersteld is. Op powerfail reageert linux met het shutdown commando shutdown +2 dat ervoor zorgt dat de computer over 2 minuten zichzelf ordelijk uitschakelt. Het commando shutdown -c wordt uitgevoerd wanneer linux het signaal powerokwait ontvangt van de UPS, dat betekent dat de netspanning weer goed is.  Dit zorgt ervoor dat deze geplande shutdown afgebroken worden.

De volgende regels in het bestand inittab bepalen dat er op de virtuele terminals 1 tot en met 6 een login programma aktief gemaakt wordt.

# Run gettys in standard runlevels
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6


Dit betekent : het programma mingetty wordt uitgevoerd in runlevel 2, 3, 4 en 5 op tty1 t/m tty6 (virtuele terminal 1 t/m 6)

Om alle informatie te lezen over bestand /etc/inittab , voer je het commando man inittab uit.

Het X Windowing System

Tegenwoordig zullen de meeste linuxinstallaties automatisch X installeren en een grafische window manager die ervoor zorgt dat processen (die daarvoor geschikt zijn) een venster openen en hun uitvoer of hun grafische interface in dat venster zichtbaar maken. De meeste hedendaagse computer zullen geen probleem hebben met de vereisten (geheugen en processorsnelheid) die een grafische omgeving stelt. In voorgaande jaren was dat niet vanzelf sprekend. Uiteindelijk heeft de gebruiker nog steeds de keus.

De GUI van linux en veel andere UNIX'en is gebaseerd op het X Window System, dat ook wel X wordt genoemd. X is begonnen als X11R1, release 1 van X11 en werd ontwikkeld door het Massachusetts Institute of Technology (MIT). Op Linux wordt een variant gebruikt , genaamd XFree86, dat een implementatie van X speciaal voor Intel-compatibele processors en PC's is.

X is opgezet uit een aantal onderdelen: de X-server en de X-client. De X-server zorgt ervoor dat de grafische kaart wordt aangestuurd en zet vensters op het beeldscherm. De X-server zorgt voor de aansturing van de muis.  De X-client is een applicatie dat de diensten van de X-server gebruikt, zodat de informatie van de X-client door de X-server op het beeldscherm wordt getoond.  Het bijzondere van deze tweedeling is dat  de communicatie tussen X-server en X-client verloopt via het netwerkprotocol TCP/IP, en dat dus ook de X-server en X-client op verschillende machines kunnen draaien. Het is mogelijk dat een X-client een rekenapplicatie is, die wordt uitgevoerd op een snelle machine, terwijl de resultaten op de X-server worden getoond op een andere machine met een goede grafische kaart en een groot beeldscherm.

Window manager

Als toevoeging op de X-server wordt ook gebruik gemaakt van een window manager. Deze biedt de gebruiker mogelijkheden om allerlei bewerkingen te kunnen doen op vensters. De window manager bepaalt ook het uiterlijk van de grafische omgeving, en de grootte en positie van de vensters. Op Linux kan de gebruiker kiezen uit diverse window managers. Enkele bekenden zijn TWM, FVWM, IceWM, BlackBox. Een aantal window managers zijn vooral nog interessant omdat ze draaien op machines met weinig geheugen. Voor TWM is 4 MB RAM werkgeheugen genoeg en IceWM kun je goed draaien met 32 MB RAM.

De uitgebreidere window managers zijn geevolueerd tot "desktop environments". Deze bestaan uit een verzameling programmas die samen een uniforme desktop aan de gebruiker aanbieden. Voorbeelden hiervan zijn KDE en Gnome. KDE is vooral een Europees produkt, terwijl Gnome vooral door Amerikanen ontwikkeld is. Welke je het prettigst vindt, is een kwestie van smaak. In ieder geval is een window manager altijd een vast onderdeel van deze desktop environments. Je kunt elk afzonderlijk programma van KDE of Gnome ook uitvoeren op een willekeurige andere window manager. Voor KDE of Gnome is wel 128 MB RAM nodig om het lekker te kunnen draaien.

Window managers uitproberen

Zoals je in het vorige onderdeel hebt gezien , kun je met runlevels kiezen of je een window manager en X wilt gebruiken, maar je kunt altijd vanuit runlevel 3 ook een window manager handmatig starten als een normale applicatie. Dit geeft de mogelijkheid om wat te experimenteren. De volgende demonstratie laat zien wat je hiervoor moet doen.

Om te beginnen gaan we de window manager TWM starten. Je gebruikt hiervoor het commando startx . Dit voer je natuurlijk alleen uit in runlevel 3 als er nog geen X aktief is. Startx gebruikt een configuratiebestand genaamd .xinitrc in de thuisfolder van een gebruiker. Let op: de punt in de naam is essentieel. We gaan dit bestand aanmaken en hierin kunnen we aangeven welke window manager we willen gebruiken. Uiteraard moet de gekozen window manager wel geinstalleerd zijn, anders werkt het niet.

TWM

Maak met een editor , bijvoorbeeld vi , het bestand .xinitrc aan.

vi ~/.xinitrc


Zet de volgende tekstregels in het bestand.

oclock &
xload &
rxvt &
exec twm

Sla het bestand op. De bovenstaande regels starten het programma oclock , xload en starten een terminal met het commando xterm . Vervolgens wordt de grafische windowmanager TWM gestart. Deze windowmanager is een heel simpele window manager en ziet er ook heel primitief uit.

Om de window manager brengen we Linux eerst in runlevel 3, zodat X gestopt wordt. Log in met een gewone gebruiker. Dan starten we onze configuratie met het commando

startx

De window manager verschijnt, en een muis cursor wordt zichtbaar. Door te drukken op de rechtermuisknop wordt een menu zichtbaar, waarmee we applicaties (X-clients) kunnen starten. Je ziet : erg primitief.

Om X te stoppen, druk op Ctrl-Alt-BackSpace . Dit brengt je altijd terug op de commandoprompt wanneer je in runlevel 3 bent.

IceWM

De IceWM window manager is een flinke verbetering ten opzichte van TWM. Om IceWM te starten, pas het bestand .xinitrc aan en verander de regel:
exec twm
in :
exec icewm
Sla het bestand op en start X met het commando startx . Icewm heeft een startbalk zoals Windows en werken in Icewm wijst zich vanzelf.

Opdrachten

De antwoorden staan onder de vragen in een onzichtbare kleur.
  1. Open een terminal in de grafische omgeving, voer het commando su uit en breng het systeem in runlevel 3. Wat zie je gebeuren?
    De grafische omgeving verdwijnt.
    Wat is de verklaring hiervoor?
    In runlevel 3 is X niet aktief en X wordt daarom gestopt.
  2. Ga naar virtuele terminal nummer 4. Log in als root en breng het systeem in runlevel 1.
    Wat zie je gebeuren?
    Enkele processen worden gestopt en de boodschap "going into single user mode".
    Wat valt je op met betrekking tot de aangemelde gebruiker?
    Root is automatisch aangemeld.
    Wat is er gebeurd met de andere virtuele terminals ?
    Die zijn inaktief geworden, omdat in runlevel 1 meermalen aanmelden niet is toegelaten.
  3. Breng het systeem in runlevel 5. Wat zie je gebeuren en waarom?
    De grafische omgeving wordt zichtbaar en een aanmeldingsscherm verschijnt. Dit gebeurt omdat in runlevel 5 X aktief is, en X wordt daarom gestart.
  4. Wat zou er gebeuren als je het commando init 6 uitvoert
  5. Probeer de window manager BlackBox.
De gebruikte tekstkleur is #e7dcbc
Dat was het! Ik hoop dat je veel plezier beleeft aan het gebruiken van Linux.