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.
- 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.
- 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.
- 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.
- Wat zou er gebeuren als je het commando init 6
uitvoert
- 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.