Upstart?

Upstart?

offline
  • Pridružio: 02 Sep 2008
  • Poruke: 4094
  • Gde živiš: Bg

bocke ::
Btw, tek što je usvojen Upstart u novijim Linuks distribucijama, već postoji nova zamena: Fedora razvija Systemd, koji bi (po navodima) bio brži i efikasniji od Upstarta. Eto primera iz prakse. Smile Linuks se razvija jako brzo i idealna je razvojna platforma za nove koncepte. Drugi (J)uniksoliki operativni sistemi su većim delom dosta konzervativniji.

Nadam se da nije OT-ic.

Kad pomenu Upstart.....je li to isto neka skripta u pitanju? Upstart je od 9.10 verzije počeo da se koristi, je li zamenio init. ili šta već..., znam da je Upstart ubrzao boot za 30 odsto, što je bilo i te kako primetno u odnosu na prethodne verzije...ali mene interesuje, šta je tačno u stvari Upstart, kako radi?

Čitao sam malo, ali ne razumem značenja reči, kao recimo --> event-driven.



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • bocke  Male
  • Moderator foruma
  • Glavni moderator Linux foruma
  • Veliki Pingvin
  • Guru
  • Pridružio: 16 Dec 2005
  • Poruke: 12520
  • Gde živiš: Južni pol

Odvojio sam u posebnu temu.

Upstart je zamena za klasični Sys-V init. Init je prvi "program" na računaru koji kernel pokreće. Njegova uloga je da inicijalizuje sistem (zbog toga i ime). Klasični Sys-V init je to činio čitanjem inittab fajla a zatim pokretanjem simboličkih linkova u /etc/rc.x (gde je x 0-6). Ovi simbolički linkovi su u stvari veze ka odgovarajućim init skriptovima (koji su inače obični shell skriptovi i obično prihvataju bar 3 argumenta: start, stop i restart) i oni se obično nalaze u /etc/init.d. Kod klasičnog Sys-V inita skriptovi se pokreću serijski, tj. jedan po jedan. Sami simbolički linkovi su imali formu SXX-imeservisa (S = start) ili KXX-imeservisa (K = kill), gde je XX broj od 00 do 99. manji broj znači da će program biti pokrenuti ranije.

Klasični Sys-V init ima 6 nivoa od kojih su rezervisani 0 - Halt, 1 - Single user mode i 6 - Reboot. Ostale nivoe su distribucije (ili drugi Unix i Unixoliki sistemi koji koriste Sys-v init) mogle da definišu kako im se činilo najprikladnije. Tradicionalno je init bio definisan ovako:

0 - halt
1 - single user
2 - multiuser
3 - multiuser with networking
4 - nekorišćeno
5 - X server
6 - reboot

Međutim, klasični Sys-V init ima nekoliko mana - nemogućnost dinamičkog dodavanja ili uklanjanja medija, sporo podizanje sistema, nemogućnost automatskog učitavanja firmware, itd. Tako su se tokom godina razvijali različiti init sistemi koji su pokušavali da reše bar neki od pomenutih problema. Većina ovih sistema su se razvijalu u pravcu postizanja paralelnog izvršavanja servisa, dinamičkog upravljanja servisima i automatskog upravljanja zavisnostima (servis x zahteva da servis y bude pre toga pokrenut, napr). Upstart je samo jedno od rešenja i zasniva se na event-driven filozofiji.

Sa zvaničnog sajta:
Zadaci i servisi se pokreću i stopiraju pomoću događaja
Događaji su generisani kada se servisi i zadaci pokreću ili zaustavljaju
Događaji mogu biti primljeni od bilo kog drugog procesa na sistemu
Servisi mogu biti ponovo pokrenuti ako se neočekivano ugase
Mogućnost nadgledanja i ponovog pokretanja daemona koji su odvojeni od njihovog parent procesa
Komunikacija sa init daemonom preko D-Busa


Kako upstart pokreće servise? Upstart preuzima kontrolu pokretanja i zaustavljanja servisa. Skriptovi se sada zovu "poslovi" i sadrže skup komandi koje trebaju da se izvrše. U okviru skripta, definicija "start on" definišu kada se skriptovi pokreću, a definicija "stop on" kada se zaustavljaju. Ove komande se odnose na događaje. Osnovni događaj u Upstartu je "startup". Za svaki tradicionalni runlevel postoje događaji (rc1, rc2, rc3, itd...). Pored toga, svaki servis definiše svoje događaje. Tako na primer možemo zaustaviti servis kada se zaustavi proces od koga zavisi.

Btw, preskočio sam priču o BSD-initu s obzirom da se ovde najčešće pominju distribucije koje su ranije koristile Sys-V init. O tome ću kad budem pisao članak na ovu temu. Wink Ovde ima materijala za reciklažu. Smile



offline
  • Pridružio: 02 Sep 2008
  • Poruke: 4094
  • Gde živiš: Bg

Dakle Upstart prati događaje i priprema ih za pokretanje? Ako sam dobro shvatio...nije samo reč o boot-u?

Može li događaj da se formuliše kao recimo priključivanje štampača, ili nekog USB uređaja?

Zadaci i servisi se pokreću i stopiraju pomoću događaja? Šta znači to?

Mogu li ja kao administrator komunicirati sa Upstartom? Imam li, i kakvu kontrolu nad njim?

Čitam ovo sa zvaničnog sajta što si naveo. Servisi mogu biti pokrenuti ako se neočekivano ugase? Da li to znači da ja mogu da pokrenem ugašeni servis (i kako) ili to Upstart sam prepoznaje i odrađuje?

offline
  • bocke  Male
  • Moderator foruma
  • Glavni moderator Linux foruma
  • Veliki Pingvin
  • Guru
  • Pridružio: 16 Dec 2005
  • Poruke: 12520
  • Gde živiš: Južni pol

Napisano: 24 Jan 2011 18:58

klodovik ::Dakle Upstart prati događaje i priprema ih za pokretanje? Ako sam dobro shvatio...nije samo reč o boot-u?

Postoji takozvano procesno drvo. Init je sam koren drveta i proces br. 1. Kernel pokrene init, init pokrene servise pomoću skriptova, ali tu se njegova uloga ne završava. On je uvek aktivan. Init je u stvari glavni daemon na sistemu. Kod klasičnog inita on upravlja runlevelima. Tako je moguće promeniti runlevel (kod sys-v inita komandom telinit). Init u ovome ima ulogu gašenja i pokretanja procesa pri ulazu ili izlazu u runlevele.

Upstart menja ulogu i dodaje mu i dinamičko upravljanje procesima.

klodovik ::Može li događaj da se formuliše kao recimo priključivanje štampača, ili nekog USB uređaja?

Da. To su dbus poruke. Upstart ima mogućnost komunikacije sa dbusom.

klodovik ::Zadaci i servisi se pokreću i stopiraju pomoću događaja? Šta znači to?

Recimo ako priključiš štampač, automatski se učita odgovarajući drajver. Kada ga isključiš, on se ukloni.

klodovik ::Mogu li ja kao administrator komunicirati sa Upstartom? Imam li, i kakvu kontrolu nad njim?

Da. Kod klasičnog inita ta komunikacija je ograničena na promenu runlevela. Kod upstarta ti možeš i sam emitovati "događaje". Ili upravljati servisima. Ranije je upravljanje servisima bilo ograničeno na userspace. Upstart ima i tu mogućnost. Štaviše, kod Upstarta su runleveli u stvari sami po sebi događaji.

Kako upravljati događajima? Pogledaj sledećih nekoliko redova. Obrati pažnju da je moguće emitovati samo događaje koji su definisani u Upstart skriptovima.

Upravljanje procesima:
start servis
stop servis


Emitovanje "događaja"
initctl emit "događaj"

Listanje događaja
initcl list

Promena runlevela
start rc3

klodovik ::Čitam ovo sa zvaničnog sajta što si naveo. Servisi mogu biti pokrenuti ako se neočekivano ugase? Da li to znači da ja mogu da pokrenem ugašeni servis (i kako) ili to Upstart sam prepoznaje i odrađuje?

Ovo drugo. Neki servis se neočekivano ugasi. Upstart dobije poruku o tome i reaguje tako što ga restartuje.

Dopuna: 24 Jan 2011 19:06

Da... Sad čitam ovo što sam napisao. Nisam odgovorio na jedno pitanje. Bar ne u potpunosti. Upstart "događaji" du definisani u Upstart skriptovima. Svaki servis emituje događaj kad se pokreće ili zaustavlja.

Da, i dbus poruke bi trebalo da emituju događaj. Ali drugu vrstu poruka. Nisam sasvim siguran kako ih upstart "presreće". Dugujem ti još i to objašnjenje. Nisam 100% siguran oko ovoga, pa se dopunjujem kad se malo informišem.

offline
  • Pridružio: 02 Sep 2008
  • Poruke: 4094
  • Gde živiš: Bg

Napisano: 25 Jan 2011 15:06

2 Bocke,

hvala na lepom postu.

Da rezimiramo sada situaciju. Kad palim računar, prvi proces je Post (kontrola hardvera i ako je sve ok, to je onaj jedan bip koji se čuje) --> MBR (BIOS) --> kernel (on sada preuzima kontrolu na kompom?) --> posle kernela ide "user space" (deo memorije gde kreću te aplikacije - to je init, a sada je to Upstart?)...baš me interesuje proces dizanja OS-ma kod Linux-a.

Posle svega ovoga (ok, digne se sitem, to mi je jasno), Upstart znači kreira te druge procese uz pomoć skupa skripti u kojima je definisan "runlevel".

Sad me interesuje, kako Upstart zna koju skriptu treba pokrenuti?

Dopuna: 26 Jan 2011 10:58

Shvatio sam.

Koje će konkretno skripte Upstart pokrenuti, zavisi od izabranog runlevel-a, pa se u odnosu na to izvršava dalje učitavanje operativnog sistema.

offline
  • bocke  Male
  • Moderator foruma
  • Glavni moderator Linux foruma
  • Veliki Pingvin
  • Guru
  • Pridružio: 16 Dec 2005
  • Poruke: 12520
  • Gde živiš: Južni pol

Izvini, nisam ti odgovorio u potpunosti. Trenutno nemam mnogo vremena za forum. Ali uskoro (za par dana) ću se vratiti na ovu temu.

Ko je trenutno na forumu
 

Ukupno su 1123 korisnika na forumu :: 43 registrovanih, 5 sakrivenih i 1075 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: 357magnum, alkatraz080, Apok, aramis s, babaroga, bbogdan, black sabah, Boris90, BRATORIII, cavatina, ccoogg123, Demostant, djordje92sm, Dorcolac, GAGI, Georgius, havoc995, Insan, kikisp, Kubovac, mean_machine, mercedesamg, milimoj, Milos ZA, Mirage 2000N, MiroslavD, mnn2, mrav pesadinac, naki011, nenooo, oldtimer, Oscar, pein, raketaš, sasa87, Sass Drake, Sirius, skvara, strelac07, Tvrtko I, vathra, zlaya011, šumar bk2