Init
ARTIKEL ON POOLIK
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. 0.5 17.04.2011 Artikli täiendamine.
Sissejuhatus
Init on kõige olulisem protsess mis laadib kõike teiste protsessi. Init võimaldab käivitada teie süsteemi erinevates režimiides, laseb muuta startup konfig faile, lubab käivitada teenused või neid katkestada. Init eksisteerib kõikides Linuxi süsteemidel.
Artikli eesmärg
Tutvuda lugejäid Linuxi bootimise protsessiga. Init konfigureerimine. Runleveli ülevaade ja muutmine UNIXi süsteemides. Teenuste käivitamine ja katkestamine.
Artikli sisu
Artikkel on jagatud kaheks osasks: esimene osa on teoreetiline, mis sisaldab põhimõisted, üldine informatsioon, runleveli ülevaade.
Teine osa on praktiline, kus saab rakendada ja käivitada erinevaid init runlevelid erinevates Linuxi süsteemidel (Ubuntu, FedoraCore ja S.U.S.E).
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 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
- 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. 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...
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 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: 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]
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
Selleks et muuta konfigid mis asuvad init kataloogis on vaja täpselt teada mis konfig mille ees vastutab.
Teenuse käivitamine/kõrvaldamine
Startup
Runlevelid
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 runlevel peab sisaldama rcX.d kataloog, kus X on run leveli number. Käsuga ls -l saab näha mis teenused töötavad ja mis seisavad.
Näiteks:
Teie bootisite oma süsteemi runlevelis 3. Runlevel "3" käivitab kõike skripte kataloogis /etc/rc.d/rc3.d/ which start with the letter "S" during system boot. This starts the background processes required by the system. During shutdown all scripts in the directory which begin with the letter "K" will be executed. This system provides an orderly way to bring the system to different states for production and maintenance modes.
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) Hi,
If you create your own /etc/inittab file, Ubuntu will honour it.
To change your runlevels the Ubuntu way look in /etc/init.d/ which contains startup scripts. Then look in /etc/rc#.d/ which contains symlinks to scripts in /etc/init.d/. The name of the symlinks determines what will be started/stopped and in what order. Look in the README file in any of the /etc/rc#.d/ directories for details.
The # in the /etc/rc#.d/ is the runlevel number.
To stop GDM from loading in runlevel 2 (Ubuntu default runlevel) rename /etc/rc2.d/S30gdm to /etc/rc2.d/K70gdm
The S tells Ubuntu to start the process, and the K tells Ubuntu to kill it. 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.
EDIT: You can also install the Boot-Up Manager (BUM) which is a graphical tool to configure runlevels. It's in the repositories.
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.
/etc/default has configuration files allowing you to control the behaviour of both traditional sysvinit scripts and new upstart configs.
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
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.
Fedora
/etc/rc.d/init.d/ (Red Hat/Fedora) Also /etc/init.d/ which is linked to /etc/rc.d/init.d/
OpenSUSE
/etc/init.d/
Kasutatud materjaalid
Veebipõhised allikad
- http://www.ghacks.net/2009/04/04/get-to-know-linux-the-etcinitd-directory/
- http://en.wikipedia.org/wiki/Init
- http://www.linux.com/archive/feature/114107
- http://linux.about.com/od/commands/l/blcmdl8_init.htm
- http://www.linux.com/news/enterprise/systems-management/8116-an-introduction-to-services-runlevels-and-rcd-scripts
- http://man.he.net/man8/init
- http://www.yolinux.com/TUTORIALS/LinuxTutorialInitProcess.html
- http://www.erlang.org/doc/man/init.html
- https://help.ubuntu.com/community/UbuntuBootupHowto
- http://upstart.ubuntu.com/
- http://upstart.ubuntu.com/faq.html
- http://www.comptechdoc.org/os/linux/startupman/linux_suinit.html
- http://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%BE%D1%86%D0%B5%D1%81%D1%81_%D0%B7%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B8_Linux
- http://citforum.ru/operating_systems/manpages/INIT.1.shtml
- http://www.linuxquestions.org/questions/ubuntu-63/since-we-have-no-etc-inittab-506281/
- http://kuutorvaja.eenet.ee/wiki/Debiani_alglaadimine
- https://help.ubuntu.com/community/InitScriptList
- http://www.cyberciti.biz/howto/question/linux/unix-linux-find-out-runlevel.php
- http://osr507doc.sco.com/en/OSAdminG/sstT.chg_inittab.html
- http://ubuntuforums.org/showthread.php?t=620327 Kuhu kadus inittab? (Ubuntu)
- 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