Wat zijn Runlevels op Linux?
Wanneer een Linux-systeem opstart, wordt het standaard runlevel gebruikt en worden de opstartscripts uitgevoerd die aan dat runlevel zijn gekoppeld. U kunt ook schakelen tussen runlevels - er is bijvoorbeeld een runlevel ontworpen voor herstel- en onderhoudswerkzaamheden.
Traditioneel gebruikte Linux Init Scripts in System V-stijl - terwijl nieuwe init-systemen uiteindelijk de traditionele runlevels verouderen, ze nog niet. Ubuntu's Upstart-systeem gebruikt bijvoorbeeld nog steeds traditionele scripts in de System V-stijl.
Wat is een Runlevel?
Wanneer een Linux-systeem opstart, wordt het in het processen. init is verantwoordelijk voor het opstarten van de andere processen op het systeem. Wanneer u bijvoorbeeld uw Linux-computer opstart, start de kernel met init en voert init de startscripts uit om uw hardware te initialiseren, netwerken op te zetten, uw grafische bureaublad te starten.
Er is echter niet slechts één enkele set startscripts die init uitvoert. Er zijn meerdere runniveaus met hun eigen opstartscripts - een runlevel kan bijvoorbeeld netwerken oproepen en de grafische desktop starten, terwijl een ander runlevel mogelijk het uitschakelen van netwerken en het grafische bureaublad overslaat. Dit betekent dat u met een enkele opdracht van "grafische bureaubladmodus" naar "tekstconsolemodus zonder netwerkfunctie" kunt gaan, zonder handmatig verschillende services te starten en stoppen.
Meer specifiek voert init de scripts uit die zich bevinden in een specifieke map die overeenkomt met het runlevel. Als u bijvoorbeeld runlevel 3 op Ubuntu invoert, voert init de scripts uit die zich bevinden in de map /etc/rc3.d.
Tenminste, dit is hoe het werkt met een traditioneel System V init-systeem - Linux-distributies beginnen het oude System V-init-systeem te vervangen. Hoewel Ubuntu's Upstart momenteel compatibiliteit met SysV init-scripts onderhoudt, zal dit waarschijnlijk in de toekomst veranderen.
De runlevels
Sommige runlevels zijn standaard tussen Linux-distributies, terwijl sommige runlevels variëren van distributie tot distributie.
De volgende runlevels zijn standaard:
- 0 - halte (Schakelt het systeem uit.)
- 1 - Enkele gebruikersmodus (Het systeem start op in de superuser-modus zonder daemons of netwerken te starten. Ideaal voor opstarten in een herstel- of diagnostische omgeving.)
- 6 - reboot
Runlevels 2-5 variëren afhankelijk van de distributie. Op Ubuntu en Debian zijn runlevels 2-5 bijvoorbeeld hetzelfde en bieden ze een volledige multi-user-modus met netwerk- en grafische login. Op Fedora en Red Hat biedt runlevel 2 multi-user modus zonder netwerkmogelijkheden (alleen console-login), runlevel 3 biedt multi-user modus met netwerkmogelijkheden (alleen console-login), runlevel 4 is ongebruikt en runlevel 5 biedt multi-user modus met netwerken en grafische login.
Overschakelen naar een ander Runlevel
Gebruik de volgende opdracht om naar een ander runlevel te schakelen terwijl het systeem al actief is:
sudo telinit #
Vervang # door het nummer van het runlevel waarnaar u wilt overschakelen. Laat sudo weg en voer het commando als root uit als je een distributie gebruikt die geen gebruik maakt van sudo.
Rechtstreeks op een bepaald run level starten
U kunt een runlevel selecteren om vanaf de bootloader op te starten - Grub, bijvoorbeeld. Aan het begin van het opstartproces drukt u op een toets om toegang te krijgen tot Grub, selecteert u uw opstartvermelding en drukt u op e om deze te bewerken.
Je kan toevoegen single tot het einde van de linux regel om het runlevel voor één gebruiker in te voeren (runlevel 1). (Druk op Ctrl + x om op te starten na.) Dit is hetzelfde als de herstelmodusoptie in Grub.
Traditioneel zou je een nummer kunnen specificeren als een kernelparameter en zou je op dat runlevel willen opstarten - bijvoorbeeld met 3 in plaats van single om te booten naar runlevel 3. Dit lijkt echter niet te werken op de nieuwste versies van Ubuntu - Upstart lijkt het niet toe te staan. Evenzo, hoe u het standaard runlevel wijzigt, is afhankelijk van uw distributie.
Terwijl Ubuntu's Upstart daemon nog steeds het SystemV init-systeem emuleert, zal veel van deze informatie in de toekomst veranderen. Upstart is bijvoorbeeld op gebeurtenissen gebaseerd - het kan services stoppen en starten wanneer er gebeurtenissen plaatsvinden (een dienst kan bijvoorbeeld starten wanneer een hardwareapparaat op het systeem is aangesloten en stoppen wanneer het apparaat wordt verwijderd.) Fedora heeft ook een eigen opvolger initiëren, systemd.