6Jul

Wat zijn "Runlevels" op Linux?

Wanneer een Linux-systeem opstart, voert het zijn standaard runlevel in en voert het de opstartscripts uit 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, worden de init -processen gestart.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 opstartscripts uit om uw hardware te initialiseren, netwerken te starten, 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 netwerkverbinding" kunt gaan zonder verschillende services handmatig 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 directory /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 - Halt ( schakelt het systeem uit.)
  • 1 - Enkele gebruikersmodus ( het systeem start op in superuser-modus zonder daemons of netwerken te starten. Ideaal voor opstarten in een herstel- of diagnostische omgeving.)
  • 6 - Opnieuw opstarten

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 een multi-user modus zonder netwerkmogelijkheden( alleen console-login), runlevel 3 biedt multi-user mode met netwerkmogelijkheden( alleen console-login), runlevel 4 is ongebruikt en runlevel 5 biedt multi-user modus metnetwerken en grafische login.

Overschakelen naar een ander runlevel

Gebruik de volgende opdracht om over te schakelen naar een ander runlevel terwijl het systeem al wordt uitgevoerd:

sudo telinit #

Vervang # door het nummer van het runlevel waarnaar u wilt overschakelen. Laat sudo weg en voer de opdracht als root uit als je een distributie gebruikt die geen gebruik maakt van sudo.

Rechtstreeks opstarten naar een specifiek runlevel

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.

U kunt enkele toevoegen aan het einde van de regel linux 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 als een kernelparameter kunnen specificeren en zou je op dat runlevel willen opstarten - bijvoorbeeld met 3 in plaats van single om op runlevel 3 te booten. Dit lijkt echter niet te werken op de nieuwste versiesvan Ubuntu - Upstart lijkt het niet toe te staan. Evenzo, hoe u het standaard runlevel wijzigt, is afhankelijk van uw distributie.

Terwijl de Upstart daemon van Ubuntu 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 gebeurtenissen plaatsvinden( een service kan bijvoorbeeld starten wanneer een hardwareapparaat op het systeem is aangesloten en stoppen wanneer het apparaat wordt verwijderd.) Fedora heeft ook een eigen opvolgerinitiëren, systemd.