Init: Difference between revisions

From ICO wiki
Jump to navigationJump to search
Vkolesni (talk | contribs)
Vkolesni (talk | contribs)
Line 119: Line 119:
=== Ubuntu ===
=== Ubuntu ===


'''Distro:''' Ubuntu pärast 6.10<br />
'''Distro:''' alates 6.10<br />


<blockquote style="margin: 2em 2em 2em 0;">
<blockquote style="margin: 2em 2em 2em 0;">

Revision as of 13:52, 19 April 2011

ARTIKEL ON POOLIK


Artikli autor ja logi

Nimi: Vladimir Kolesnik
Grupp: A22
Viimati muudetud: 19.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.
0.5 17.04.2011     Artikli täiendamine.
0.6 19.04.2011     Artikli täiendamine.

Sissejuhatus

Init on kõige olulisem protsess, mis laadib kõiki teisi protsesse. Init võimaldab käivitada teie süsteemi erinevates režimiides, laseb muuta startup config faili, lubab käivitada teenuseid või neid katkestada. Init eksisteerib kõikides Linuxi süsteemides.

Artikli eesmärk

  1. Tutvustada lugejale Linuxi boot protsessi.
  2. Anda ülevaade Init konfigureerimisest.
  3. Anda ülevaade runlevel-ist UNIXi süsteemides.
  4. Käsuga init on võimalik käivitada ja katkestada järgmiseid teenused: Network, Apache, Mysql ja teised.

Artikli sisu

Artikel on jagatud kaheks osasks. Esimene osa on teoreetiline, mis sisaldab põhimõisteid, üldist informatsiooni, runlevel-i ülevaade.

Teine osa on praktiline, kus saab rakendada ja käivitada erinevaid init runleveleid, erinevatel Linuxi süsteemidel (Ubuntu, FedoraCore ja SUSE).

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 /etc/init kataloog, 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 ja runlevelites.

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, informatsioon, ülevaatused erinevatest init aspektidest.

Ü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 kogule 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)


Init lugeb kataloogist "/etc/inittab" (või "/etc/init.d", oleneb mis linux distro teil on) and kasutab kataloogi sisu selleks, et luua teatavaid protsessid. Lisaks, on vaja meelis pidada, et init ei peata siis kui süsteem hakkaks töötama, vaid jätkub töötada ja dünamiiliselt käivitab protsessid, oleneb sellest mis signaalid talle saadakse. Süsteemi andministratoor võib muuta süsteemi protsessid (näiteks runlevelid) kasuga "telinit" või muuta konfig faile mis asuvad "/etc/init" kataloogis.

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 versioonid.

Runleveli ülevaade

Runlevel on tarkvaraline abivahend, mis rakendab Unix System V-Style initsialiseerimise. Runlevelid numbritatakse 0 kuni 6. Igal runlevelil on oma eesmärg ja Korraga võib olla ainult üks runlevel, ehk näiteks runlevel 2 VÕI 3 VÕI 4, mitte 2 SIIS/JA 3 SIIS/JA 4.

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: alates 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]

Init alternatiivid

On olemas mitu asendused et kuidas saab init rakendada. Siin on alltootud kõige tähtsamad ja vajalikud


SystemStarter


BSD-tüüpi protsesside alglaadur Mac OS X ja Mac OS X v10.4 op. süsteemidel.


launchd

Asendus mõelnud Mac OS X v10.4 jaoks.


Initng

Täeilik initi asendus mis käivitab protsessid asünkroonselt.


Upstart

Täeilik initi asendus mis käivitab protsessid asünkroonselt (Ubuntu põhimõtteliselt)


Service Management Facility

Täeilik initi asendus (Solaris kuni Solaris 10 süsteemidel)


runit

Asendus mis töötab erinevates UNIXi süsteemidel. Käivitab protsessid ja teenused paraleellselt.


BootScripts

BootScripts initi asendus GoboLinuxis.


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.

Initi realiseerimine praktikas

Initil on väga palju erinevaid võimalusi rakendada. Selleks et muuta konfigid mis asuvad init kataloogis on vaja täpselt teada mis konfig mille ees vastutab ja mis

Runlevelid

Runlevel on üks kõige tähtsaim initi abivahend. Runlevel vastutab sellele, mis teenused käivitatakse siis kui arvuti hakkab töötama. Igal runlevelil on oma kataloog kus kõik teenused on. Iga teenuse juures on täht "S" (start ehk teenus töötab) või "K" (kill ehk katkestab teenust/teenus ei tööta).

Runleveli asukoht

Selleks on teada mis runlevelil on praegu teie masin töötab, kirjutage

 runlevel 

Väljand on tavaliselt selline

 N X

kus "X" on runleveli ID (0, 1, 2...6)

Asukoht

Runlevelid asuvad failisüsteemis, neid saab leita /etc kataloogis

 cd /etc/
ls -l


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

Iga määratud runlevel peab sisaldama rcX.d kataloog, kus X on run leveli ID. rcX.d kataloogis näha mis teenused töötavad("S") ja mis seisavad ("K").

Näiteks:

Teie bootisite oma süsteemi runlevelis 2. Runlevel "2" käivitab kõike skripte kataloogis /etc/rc2.d/

cd /etc/rc2,d
ls -l

Väljundiseks saate tavaliselt järgmised teenues:


README                S20vboxweb-service  S70dns-clean       S99acpi-support
S20fancontrol         S25bluetooth        S70pppd-dns        S99grub-common
S20kerneloops         S50pulseaudio       S75sudo            S99ondemand
S20speech-dispatcher  S50rsync            S90binfmt-support  S99rc.local
S20vboxdrv            S50saned            S91apache2

Iga teenus hakkab tähest "S"(start) või "K" (kill). Teenused mis algavad tähast "S" bootitakse kui süsteem hakkab käima.

Lisaks, iga teenus /etc/rcX.d kataloogis on seotud symlinkiga skriptitega mis asuvad /etc/init.d kataloogis.

Selleks, et muuta teenused rcX.d kataloogis, piisab ainult muuta esimene täht ja sequence number (kahe-kohaline number).

Näiteks:

cd /etc/rc2.d/
rename /etc/rc2.d/S30gdm /etc/rc2.d/K70gdm

Tulemus: Muudab runlevel 2 (mis asub vastavalt kataloogis /etc/rc2.d) GNOME display manageri (gdm) nii, et järgmine kui süsteem käivitatakse, gdm teenus ei hakka töötama (ehk täht "K"). Lisaks, me muutsime sequence numbri (oli 30 nüüd 70) mis tähandab see, et teenused millel sequence number on vähem kui 70 bootitakse esmaselt.

The number is the order in which it should be started/stopped.

Have a look at the man page for update-rc.d which can be used to create/update/remove the init script symlinks for you.

Runleveli asendus

On olemas GUI ehk graafiline rakendus, mille abil saab muuta runleveli teenused. Rakenduse nimetus on Boot-Up manager (BUM)

Ubuntu

Kataloogis /etc/init hoiatatakse kõik init upstart konfigid asuvad.

Kataloogis /etc/init.d asuvad SysV-init skriptid, need skriptid tavaliselt käivitavad igasuguseid teenused (services)

Konfig failis /etc/init/rc-sysinit.conf saab käsiti muuta runlevelid.

Ubuntu bootimini erinevates režiimides

On olemas 2 võimalust:


1) Käsuga telinit

 telinit X 

kus X on runleveli ID (0-6). Näiteks

 telinit 1 

Tulemus: Taaskäivitab Ubuntu Single-Mode režiimis (ainult root kasutaja ja ilma GUIta)

PS: Antud võimalus sobib nendele, kellel on tihti vaja kiiresti ühest runlevelist teisele minna. Default (ehk vaikimisel) runlevel on ikka 2, mis tähendab see on kui masin sulgetatakse kinna ja bootitakse uuesti, runlevel on 2



2) Konfig faile modifitseerimine

Enne konfig faile modifisteerimist, sooviks teha varukoopiat

 cp /etc/init/rc-sysinit.conf /etc/init/rc-sysinitbackup.conf 

Konfig fail asub kataloogis

/etc/init

Modifisteerimiseks sobib Nano tekstiredaktor

sudo gedit /etc/init/rc-sysinit.conf

Leia antud read

# Default runlevel, this may be overriden on the kernel command-line<br/>
# or by faking an old /etc/inittab entry <br/>
env DEFAULT_RUNLEVEL=X 

kus X on runleveli ID (0-6). Näiteks:

# Default runlevel, this may be overriden on the kernel command-line<br/>
# or by faking an old /etc/inittab entry <br/>
env DEFAULT_RUNLEVEL=1

Salvestage ja järgmine kui käivitate masinat, linux bootitakse Single-Mode runlevelis, ehk 1 runlevel ID.

Teenuste käivitamine, katkestamine või taaskäivitamine

Kataloogis /etc/init.d asuvad kõik teenused


Kasutamine

Selleks on rakendada teenused init.d kataloogis, on olemas selline käsk

sudo /etc/initi.d/command OPTION

Kus OPTION võib olla järgmine:

OPTION Selgitus
start Käivitab teenust
stop Peatab
restart Peatab teenust ja laadib uue konfiguratsiooni
reload Peatab
force-reload Katkestab kõike teenusi ja laddib uue konfiguratsiooni

Näiteks

sudo /etc/initi.d/networking stop

või

sudo /etc/initi.d/networking restart

või

sudo /etc/initi.d/apache2 reload

Kõige tihtsam vajalikud ja kasutavam teenused init.d kataloogis on


  1. networking
  2. samba
  3. apache2
  4. ftpd
  5. sshd
  6. dovecot
  7. mysql

Fedora

Fedora bootimini erinevates režiimides

On olemas 2 võimalust:


1) Käsuga telinit

 telinit X 

kus X on runleveli ID (0-6). Näiteks

 telinit 1 

Tulemus: Taaskäivitab Ubuntu Single-Mode režiimis (ainult root kasutaja ja ilma GUIta)

PS: Antud võimalus sobib nendele, kellel on tihti vaja kiiresti ühest runlevelist teisele minna. Default (ehk vaikimisel) runlevel on ikka 2, mis tähendab see on kui masin sulgetatakse kinna ja bootitakse uuesti, runlevel on 2



2) Inittab modifitseerimine

Inittab on runleveli alglaadur. Asub/etc/ kataloogis

cd /etc
ls | grep inittab

Modifisteerimiseks sobib Nano tekstiredaktor

su nano /etc/inittab

Kõige viimane rida:

id:X:initdefault:

kus X on runleveli ID (0-6). Näiteks:

id:2:initdefault:

Salvestage ja järgmine kui käivitate masinat, linux bootitakse Multi-user mode console runlevel-is, ehk 2 runlevel ID.

runlevel

N X /etc/rc.d/init.d/ (Red Hat/Fedora) Also /etc/init.d/ which is linked to /etc/rc.d/init.d/

telinit

su nano /etc/inittab

id:X:initdefault:

rc5.d less

OpenSUSE

/etc/init.d/

Kasutatud materjaalid

Veebipõhised allikad

Video näided