Init

From ICO wiki
Jump to navigationJump to search

Artikli autor ja logi

Nimi: Vladimir Kolesnik
Grupp: A22
Viimati muudetud: 15.04.2011

Versioon Lisatud   Kommentaar
0.1 5.04.2011     Artikli loomine.
0.2 14.04.2011     Sissejuhatus, lingid, sisu, tabelid.
0.3 15.04.2011     Artikli täiendamine.
0.4 16.04.2011     Artikli täiendamine.

Sissejuhatus

Artikli eesmärg

Tutvuda lugejäid Linuxi bootimise protsessiga. Kuidas käiv...

Artikli sisu

Artikkel on jagatud kaheks osasks: esimene osa on teoreetiline. Selles osas õppime... Teine osa on praktiline, kus saab proovida, rakendada ja käivitada erinevaid init runleveli erinevates Linuxi süsteemidel.

Artikli vajalikus

Vahel on vaja kiiresti mingid teenused käivitama, näiteks Apache või MySQL, või on vaja alustada oma võrguühenduse. Vahel mingid teenused ise hakkavad töötama, isegi kui teie ei ole seda käskinud ja te tahate need teenused katkestama. Kui on olemas sellised protsessid või teenused, mis automaatselt käivitatakse siis kui teie linux bootib ja teie tahate need protsessid eemaldada. Kõike selle jaoks UNIXi maailmas on olemas direktori /etc/init kus hoiatatakse teie startup konfig failid ja need saab muuta vastavalt vajadusele.

Artikkel on kasulik ja vajalik nendele, kes tahavad rohkem teada sellest, kuidas saab kontroleerida kõike teenused mis on paigaldatud teie masinal. Lisaks artikkel annab juhendid kuidas saab käivitada sinu linux distro erinevates režiimides.

Artikli nõuded

Init eksisteerib kõikidel Linux distrobutsioonidel, seetõttu mingid lisavahendeid või rakendusi pole vaja.

PS: Kuna tegu on Linuxi startup-iga ja üldiselt väga tähtsama protsessiga, on mõislikum esiteks proovida oma oskusi virtuaal masinas.

Teoreetiline osa

Teoreetilises osas kuvatatakse põhimõisted...

Üldine ülevaade

Init (ehk initialization) on rakendus mõelnud UNIX süsteemidele mis käivitab kõike teiste protsessi. Igal UNIX operatsioonsüsteemis init konfig on natukene teistsugune, aga üldiselt võib öelda, et tegu on runlevel-itega. Igal runlevel-il on oma PID, ehk number mis vastutab kuidas käivitatakse operatsioonsüsteemi.

Erinevates Linuxi derivatiivides on sisseehitatud oma rakendus, kuidas init-i funktsioonlsust rakendatatakse. Enamus Linuxi distrod kasutavad selle jaoks System V, aga on olemas ka teisid programmid, näiteks Ubuntu kasutab Upstart, Fedoras on... jne.

Teiste sõnadega, init on kõige olulisem protsess laseb kogu süsteemile töötada.



Kuidas töötab init

Selleks on aru saada, kuidas töötab init ja kuidas saab selle rakendada, on vaja teada kuidas üldse toimub süsteemi käivitamine (ehk bootimine) Linuxis.


Laadimise põhietapid

  1. Toite sisselülitamise järel omandab kontrolli püsimälus olev firmware (PC puhul BIOS)
  2. BIOS laadib ja käivitab alglaaduri (nt GRUB - GRand Unified Bootloader, LILO või Loadlin)
  3. Alglaadur laadib tuuma ja initrd/initramfs'i (initial ramdisk/initial ram file system)
  4. Alglaadur käivitab tuuma ning operatsioonisüsteemi käivitamiseks olulised seadmed initsialiseeritakse initramfs'is asuvate programmide abil
  5. Initramfs annab oma töö lõpuks juhtimise üle operatsioonisüsteemi programmile init
  6. Operatsioonisüsteemi init käivitab süsteemis protsessid
  7. Süsteem on kasutamiseks valmis (nt saab kasutaja sisse logida)

In

Init runlevelid erinevates UNIXi süsteemides

Üldiselt võib väita, et runlevlid erinevates linux distros on umbes samasugused, aga ikka mõned süsteemid (näiteks ubuntu) kasutavad enda...

Runleveli ülevaade

Tavaliselt, Linuxis on 7 erinevaid runleveli (0 kuni 6)

Runlevel Selgitus
Halt shutdown
Single-User Mode Pole võrgu, ainult root kasutaja saab logida.
Multi-User mode Pole võrgu, lubab kõikidele kasutajatele logida
Multi-User mode with networking Tavaline süsteemi käivitima
User-Defined Kasutatakse
Full Multi-User Mode Bootib kõik daemonid, GUI, GNOME/KDM. Kasutaja liides
Reboot reboot

Ubuntu

Distro: Ubuntu pärast 6.10

Runlevel ID Selgitus
0 halt
1 Single-User Mode
2 Full Multi-User Mode (default runlevel Ubuntus)
3 Full Multi-User Mode
4 Full Multi-User Mode
5 Full Multi-User Mode
6 Reboot

Runlevelid Ubuntus on erinevad. 2-5 on põhimõtteliselt samasugused runlevelid


Red Hat Linux / Fedora Core

Distro: Fedora 14

Runlevel ID Selgitus
0 halt
1 Single-User mode
2 Multi-user mode console logins only (without networking)
3 Multi-User mode, console logins only
4 Not used/User-definable
5 Multi-User mode, with display manager as well as console logins (X11)
6 Reboot

SUSE Linux

Distro: SUSE

SUSE kasutab peaaegu samad runlevelid nagu Red Hat Fedora

Runlevel ID Selgitus
0 Halt
1 Singl-User mode
2 Multi-User mode, without networking
3 Multi-User mode, console logins only
4 Not used/User-definable
5 Multi-User mode with display manager
6 Reboot
S single-User mode[6]

Runleveli asukoht

Runlevelid asuvad failisüsteemis, neid saab leita /etc direktorias:

/etc/rc0.d Run level 0 /etc/rc1.d Run level 1 /etc/rc2.d Run level 2 /etc/rc3.d Run level 3 /etc/rc4.d Run level 4 /etc/rc5.d Run level 5 /etc/rc6.d Run level 6

Iga määratud run level peab sisaldama rcX.d direktoriat, kus X on run leveli number. See on põi Each defined run level should have an rcX.d directory where X is the run level number. The contents of the rcX.d directory determines what happens at that run level.

Init alternatiivid

Various efforts have been made to replace the traditional init daemons with something better. Below is a list of these alternatives in no particular order.

SystemStarter

a process spawner started by the BSD-style init in Mac OS X prior to Mac OS X v10.4

launchd

a replacement for init introduced in Mac OS X v10.4 (it launches SystemStarter to run old-style 'rc.local' and SystemStarter processes)

Initng

a full replacement of init designed to start processes asynchronously

Upstart

a full replacement of init designed to start processes asynchronously initiated by Ubuntu

Service Management Facility

a complete full replacement/redesign of init from the ground up in Solaris starting with Solaris 10

runit

a cross-platform full replacement for init with parallel starting of services

BootScripts

in GoboLinux

DEMONS

a modification of the init start process by KahelOS, where daemons are started only when the DE (desktop environment) started.

Mudur

an init replacement written in Python and designed to start process asynchronously in use by the Pardus Linux distribution.

Vähem tuntud alternatiivid

Siin on alltootud veel igasuguseid init... Kui tunnete huvi vastu, võite uurida...

eINIT, a full replacement of init designed to start processes asynchronously, but with the potential of doing it without shell-scripts svscan from daemontools used as process 1 - seems to be superseded by runit cinit twsinit, partly written in x86 assembler, more a proof of concept minit ninit OpenRC systemd, a replacement for init with parallel starting of services, initiated by Red Hat.

Initi realiseerimine praktikas

Selleks et muuta konfigid mis asuvad init kataloogis on vaja täpselt teada mis konfig mille ees vastutab.

Ubuntu

Ubuntu bootimini ilma GUI-ta

Võimalus käivitada enda masinat ilma GUI-ta (desktop ehk graafiline kasutajaliides puudub) on väga vajalik.

Kirjutage järgnevad käsud terminalis

ps aux | grep gdm

Need kõik protsessid on ainult selleks, et realiseerida Gnome Desktop Manageri.

Nüüd kirjutage

ps aux | grep gnome

Väljandiks saate umbes 15-20 protsessi mis on mõelnud ainult selleks, on töötada graafilis keskonnas ja see on väga suur mälu hulk. Tavaliselt, linuxid kasutatakse mingi spetsifilise teenuste jaoks, näiteks Web Server, File Server, NFS server, Apache, FTP/NET server või midagi muut: kõike selle jaoks graafiline interface ei ole oluline.

Fedora

OpenSUSE

Kasutatud materjaalid

Veebipõhised allikad

Video näided