Hoe je computer opstart en afsluit

De opstartprocedure

BIOS fase

Wanneer je de startknop van je computer indrukt, zoekt de processor de BIOS informatie. De BIOS staat op een vaste plaats in een geheugentype dat enkel leesbaar, en niet overschrijfbaar, is. De BIOS kan met sommige randapparatuur, zoals apparaten om data te stockeren, communiceren op een zeer elementair niveau.

MBR fase

De BIOS test het systeem en de randapparaten en bepaalt van welk apparaat er gestart moet worden: diskette, CD-ROM, harde schijf, ... Op het gekozen apparaat zoekt de BIOS naar een dataset, de Master Boot Record of MBR genaamd, die zich altijd op een vaste plaats aan het begin van de opslagruimte bevindt. Deze dataset wordt in het geheugen geladen en neemt controle over het systeem.

De MBR werd opgevuld tijdens de installatie van het besturingssysteem.

De bootloader fase

De MBR bevat instructies om de bootloader te laden. De bootloader is een programma dat verschillende besturingssystemen kan starten. Op ons systeem heet dat programma GRUB, wat staat voor GRand Unified Bootloader. GRUB zoekt en laadt de kernel en geeft daarmee de controle aan het eigenlijke besturingssysteem.

Indien je met een dual-boot systeem werkt, is het in deze fase dat je kan kiezen welk besturingssysteem opgestart zal worden.

De kernel fase

De kernel initialiseert de randapparaten door hun modules (drivers, stuurprogramma's) te laden, aktiveert het virtueel geheugen en zorgt ervoor dat in eerste instantie de belangrijkste data toegankelijk zijn. Daarna start de kernel init, het eerste proces.

[Opmerking]Enkel voor PC's met Linux

Deze procedure geldt enkel voor x86-gebaseerde PC's. De servers op het werk, bijvoorbeeld, hebben een heel andere manier om op te starten.

Bovendien is deze procedure specifiek voor Linux. Andere besturingssystemen, zoals bijvoorbeeld MS Windows, gebruiken een andere methode om de kernel in het geheugen te laden.

Meer informatie kan je vinden in man boot.

De init fase

De inittab

Eerst leest init zijn configuratiebestand in, /etc/inittab. Dit bestand verwijst naar een script waarmee init het systeem verder initializeert: paden worden geconfigureerd, de klok ingesteld, seriële en parallelle poorten geïnitialiseerd enzovoort.

[Opmerking]Over configuratiebestanden

Je zal nog vaak bestandsnamen tegenkomen die eindigen in “tab”. Dit staat voor “tabel”.

Runlevels

Verder bevat het configuratiebestand informatie over het standaard runlevel. Een runlevel is een configuratie van processen. Alle UNIX-achtige systemen hebben doorgaans verschillende procesconfiguraties, die aangeduid worden met een nummer:

  • 0: halt: stop alle processen en zet het systeem uit.

  • 1: single user mode: configuratie waarin alleen de systeembeheerder, root, toegang heeft tot het systeem. De processen, die noodzakelijk zijn om meerdere gebruikers toe te laten, worden niet opgestart.

  • 2-5: multi-user mode: configuraties waarin meer dan 1 gebruiker toegelaten worden. Standaard komt je systeem in runlevel 2. De overige multi-user runlevels kunnen volgens eigen voorkeur ingesteld worden, bijvoorbeeld een kiosklevel, waarin de computer een web browser opstart en er geen authenticatie nodig is, of een serverlevel waarin bepaalde diensten opgestart kunnen worden.

  • 6: herstart: sluit alle processen op een ordelijke manier af en ga dan weer naar het standaard runlevel.

Terwijl het systeem draait, kan je met behulp van init van het ene runlevel naar het andere gaan. Ga je van een lager naar een hoger level, dan worden er doorgaans extra processen gestart. Om van een hoger naar een lager level te gaan, worden er meestal processen gestopt. Systeembeheerders passen de procedures frequent toe voor onderhoud van machines. Als gewone gebruiker volstaat het te weten dat het afmeldmenu je een grafische interface geeft om init voor normale doeleinden te gebruiken, het is te zeggen het afzetten van de machine, wat dus overeenstemt met init 0.

Rc mappen en scripts

Per runlevel is er een rc map. Rc staat voor resource configuration, letterlijk de configuratie van de middelen. In die rc mappen zitten de scripts die de processen voor een bepaald runlevel zullen opstarten. De scripts worden één voor één gelezen en uitgevoerd door init.

Er zijn twee soorten scripts: sommige beginnen met de letter S, andere met een K.

Handeling met de muis.

Kijk bijvoorbeeld in /etc/rc2.d. Alle scripts zijn symbolische links naar scripts in de map /etc/init.d.

Begint de naam van een link met een S, dan wordt het bijhorende opstartscript in /etc/init.d aangeroepen met het argument “start”, waardoor een proces of een serie van processen gestart wordt.

Indien de naam van een link in een runlevel map begint met een K, dan wordt het bijhorende script in /etc/init.d aangeroepen met het argument “stop”. De K staat in dat geval voor “kill” en er zullen dus processen beëindigd worden.

De combinatie van scripts met hun S- en K-links noemt men initscripts.

Tijdens het opstarten zie je welke scripts uitgevoerd worden: per script w ordt een lijn op het scherm gedrukt, met op het einde statusinformatie. Als de betreffende processen werden opgestart, komt er “[ok]”, anders “[failed]”.

Virtuele consoles

Handeling met de muis.

Naast virtuele desktops heeft je systeem ook virtuele consoles. Dit zijn simulaties van de vroegere tekst terminals. Je kan ze bereiken door de toetsencombinatie Ctrl+Alt+F1 in te geven. Dan ben je op de eerste console, waar je een prompt ziet die vraagt om je gebruikersnaam. Geef je die in, dan zal je wachtwoord gevraagd worden. Na het aanmelden krijg je een shell omgeving, maar ditmaal zonder de decoraties van een terminal venster.

Naar de tweede virtuele console ga je vandaaruit met Alt+F2, naar de derde met Alt+F3, en zo verder tot de zesde console. Op de zevende F-toets zit de grafische console. Je kan op meerdere consoles tegelijk aanmelden en taken uitvoeren.

De virtuele consoles worden gebruikt op systemen die geen grafische kaart hebben, bijvoorbeeld op servers. Ook blinden maken er gebruik van, omdat ze meestal toch niets hebben aan grafische toepassingen. En als je snel even wat wilt checken op een (trage) machine, is het ook handiger om niet eerst de hele grafische omgeving te moeten opstarten. Je ziet standaard misschien wel het grafische aanmeldscherm, maar door de sequentie Ctrl+Alt+F1 in te geven, kan je tekstueel aanmelden.

De virtuele consoles worden door init opgestart met behulp van het getty commando.

[Belangrijk]Ctrl+Alt+Del

Het init proces leest in zijn configuratiebestand ook wat er moet gebeuren wanneer de sequentie Ctrl+Alt+Del ingevoerd wordt via het toetsenbord. Welk commando wordt dan opgeroepen?

De afsluitprocedure

Het is doorgaans geen goed idee om een computer zomaar af te zetten. Als het systeem niet de tijd krijgt om bestandssystemen te vergrendelen, bijvoorbeeld, kunnen er data verloren gaan. Ook als processen zomaar afgebroken worden, zonder dat ze de bestanden die ze geopend hebben, kunnen afsluiten, kunnen er problemen optreden. Zulke problemen kwamen vroeger vaak voor na stroompannes.

Vandaag de dag wordt er echter alles aan gedaan om de moeilijkheden tot een minimum te beperken. Of je nu via de grafische interface afmeldt, of je drukt de powerknop op je computer zelf in, of je drukt Ctrl+Alt+Del, telkens zal init merken wat er gaande is en proberen via de initscripts voor runlevel 0 of 6 alle processen mooi te laten afsluiten. Het systeem wordt volledig gestopt of herstart op een propere manier, er blijven geen onafgewerkte taken rondslingeren.

Concreet zal init gaan kijken in de mappen etc/rc0.d of /etc/rc6.d, alnaargelang de vereiste aktie stoppen of herstarten is, en alle scripts uitvoeren.

Als gewone gebruiker kan je enkel via de grafisch interface het systeem afzetten of herstarten. De commando's init, shutdown en halt, die door het systeem aanroepen worden, zijn via de terminal interface enkel toegankelijk voor de systeembeheerder.