Init: Difference between revisions
Line 575: | Line 575: | ||
== OpenSUSE == | == OpenSUSE == | ||
/etc/init.d/ | /etc/init.d/ | ||
/etc/inittab | |||
=== Suse linux bootimini erinevates režiimides === | === Suse linux bootimini erinevates režiimides === | ||
Revision as of 16:51, 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
- Tutvustada lugejale Linuxi boot protsessi.
- Anda ülevaade Init konfigureerimisest.
- Anda ülevaade runlevel-ist UNIXi süsteemides.
- 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 runlevel-eid, erinevatel Linuxi süsteemidel (Ubuntu, FedoraCore ja SUSE).
Artikli vajalikus
Vahel on vaja kiiresti teenused käivitada, näiteks Apache või MySQL, või on vaja alustada oma võrguühenduse. Vahel mingeid teenused ise hakkavad töötama, isegi kui teie ei ole seda käskinud ja te tahate need teenused katkestada. Kui on olemas sellised protsessid või teenused, mis automaatselt käivitatakse siis kui teie Linux boot-ib ja teie tahate need protsesseid eemaldada. Kõike selle jaoks UNIXi maailmas on olemas /etc/init kataloog, kus hoiatatakse teie startup config faili ja neid 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 artikel annab juhendid kuidas saab käivitada sinu Linux distro erinevates režiimides ja runlevel-ites.
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õistlikum 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 config 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.
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 boot-imine) Linuxis.
Laadimise põhietapid
- Toite sisselülitamise järel omandab kontrolli püsimälus olev firmware (PC puhul BIOS)
- BIOS laadib ja käivitab alglaaduri (nt GRUB - GRand Unified Bootloader, LILO või Loadlin)
- Alglaadur laadib tuuma ja initrd/initramfs'i (initial ramdisk/initial ram file system)
- Alglaadur käivitab tuuma ning operatsioonisüsteemi käivitamiseks olulised seadmed initsialiseeritakse initramfs'is asuvate programmide abil
- Initramfs annab oma töö lõpuks juhtimise üle operatsioonisüsteemi programmile init
- Operatsioonisüsteemi init käivitab süsteemis protsessid
- 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 vastavalt runlevel-ileLisaks, 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 runlevel-id) kasuga "telinit" või muuta config faili 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. Runlevel-id numbritatakse 0 kuni 6. Igal runlevel-il on oma eesmärg. 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 jne.
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. 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. Init käsuga abil saab erinevaid teenused käivitada või katkestada. Lisaks, initi abil saab muuta runlevelid ning modifitseerida runleveli sisu (mis teenused/programmid antud runlevel käivitab)
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 olemas. 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 runlevel-il on praegu teie masin töötab, kirjutage (töötab kõikides süsteemides)
runlevel
Väljand on tavaliselt selline
N X
kus "X" on runlevel-i ID (0, 1, 2...6)
Asukoht
Runlevel-id asuvad failisüsteemis, neid saab leita /etc kataloogis
cd /etc/ ls | grep rc
- /etc/rc0.d on runlevel 0 asukoht
- /etc/rc1.d on runlevel 1 asukoht
- /etc/rc2.d on runlevel 2 asukoht
- /etc/rc3.d on runlevel 3 asukoht
- /etc/rc4.d on runlevel 4 asukoht
- /etc/rc5.d on runlevel 5 asukoht
- /etc/rc6.d on runlevel 6 asukoht
- /etc/rcS.d on runlevel S 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 runlevel-is 2. Runlevel "2" käivitab kõike skripte kataloogis /etc/rc2.d/
cd /etc/rc2.d ls
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.
Runlevel-i asendus
On olemas GUI ehk graafiline rakendus, mille abil saab muuta runlevel-i 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 runlevel-id.
Ubuntu bootimini erinevates režiimides
On olemas 2 võimalust:
1) Käsuga telinit
telinit X
kus X on runlevel-i 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 runlevel-ist 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 runlevel-i 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 runlevel-is, ehk 1 runlevel ID.
Teenuste käivitamine, katkestamine või taaskäivitamine
Kataloogis /etc/init.d asuvad kõik teenused
ls /etc/init.d
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
Tulemus: Katkestab võrguühendust.
või
sudo /etc/initi.d/networking restart
Tulemus: Taaskäivitab võrguühendust.
või
sudo /etc/initi.d/apache2 reload
Tulemus: Taaskäivitab apache2
Kõige tihtsam vajalikud ja kasutavam teenused init.d kataloogis on
- networking
- samba
- apache2
- ftpd
- sshd
- dovecot
- mysql
Fedora
Kataloogis /etc/init hoiatatakse kõik init config asuvad.
Kataloogis /etc/init.d asuvad SysV-init skriptid, need skriptid tavaliselt käivitavad igasuguseid teenused (services)
Konfig failis /etc/inittab saab käsiti muuta runlevel-id.
Fedora bootimini erinevates režiimides
On olemas 2 võimalust:
1) Käsuga telinit
telinit X
kus X on runlevel-i 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 runlevel-ist teisele minna. Default (ehk vaikimisel) runlevel on ikka 1, mis tähendab see on kui masin sulgetatakse kinna ja bootitakse uuesti, runlevel on 1.
2) Inittab modifitseerimine
Inittab on runlevel-i 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 runlevel 2 ID.
Teenuste käivitamine, katkestamine või taaskäivitamine
Kataloogis /etc/init.d asuvad kõik teenused
ls /etc/init.d
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 status Näitab teenuse olukoora 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/init.d/smb restart Shutting down SMB services: [ OK ] Starting SMB services: [ OK ]
Tulemus: Taaskäivitab samba-t
või
sudo /etc/init.d/smb start Starting SMB services: [ OK ]
Tulemus: Käivitame samba-t
Kõige tihtsam vajalikud ja kasutavam teenused init.d kataloogis on
- networking
- samba
- apache2
- ftpd
- sshd
- dovecot
- mysql
OpenSUSE
/etc/init.d/
/etc/inittab
Suse linux bootimini erinevates režiimides
On olemas 2 võimalust:
1) Käsuga telinit
telinit X
kus X on runlevel-i 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 runlevel-ist teisele minna. Default (ehk vaikimisel) runlevel on ikka 1, mis tähendab see on kui masin sulgetatakse kinna ja bootitakse uuesti, runlevel on 1.
2) Inittab modifitseerimine
Inittab on runlevel-i 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 runlevel 2 ID.
Teenuste käivitamine, katkestamine või taaskäivitamine
Kataloogis /etc/init.d asuvad kõik teenused
ls /etc/init.d
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 status Näitab teenuse olukoora 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/init.d/smb restart Shutting down SMB services: [ OK ] Starting SMB services: [ OK ]
Tulemus: Taaskäivitab samba-t
või
sudo /etc/init.d/smb start Starting SMB services: [ OK ]
Tulemus: Käivitame samba-t
Kõige tihtsam vajalikud ja kasutavam teenused init.d kataloogis on
- networking
- samba
- apache2
- ftpd
- sshd
- dovecot
- mysql
Kokkuvõtte
Kasutatud materjaalid
Veebipõhised allikad
- http://www.linux.com/archive/feature/114107
- http://www.linux.com/news/enterprise/systems-management/8116-an-introduction-to-services-runlevels-and-rcd-scripts
- http://linux.about.com/od/commands/l/blcmdl8_init.htm
- http://www.linuxquestions.org/questions/ubuntu-63/since-we-have-no-etc-inittab-506281/
- http://upstart.ubuntu.com/
- http://upstart.ubuntu.com/faq.html
- https://help.ubuntu.com/community/UbuntuBootupHowto
- https://help.ubuntu.com/community/InitScriptList
- http://ubuntuforums.org/showthread.php?t=620327
- http://www.ghacks.net/2009/04/04/get-to-know-linux-the-etcinitd-directory/
- http://en.wikipedia.org/wiki/Init
- http://man.he.net/man8/init
- http://www.yolinux.com/TUTORIALS/LinuxTutorialInitProcess.html
- http://www.erlang.org/doc/man/init.html
- http://www.comptechdoc.org/os/linux/startupman/linux_suinit.html
- http://kuutorvaja.eenet.ee/wiki/Debiani_alglaadimine
- http://www.cyberciti.biz/howto/question/linux/unix-linux-find-out-runlevel.php
- http://osr507doc.sco.com/en/OSAdminG/sstT.chg_inittab.html
- http://www.debian-administration.org/article/212/An_introduction_to_run-levels
Video näided
- http://www.youtube.com/watch?v=OcX7FaTAFV4 - hea ja väga põhjalik inglise-keelne ülevaade kõikidest runlevel-idest Ubuntu
- http://www.youtube.com/watch?v=1YlPFMqhiZg - hea ja väga põhjalik inglise-keelne ülevaade kõikidest runlevel-idest Red Hat/Fedora