Systemd, Sysvinit nebo init?

Strendžr

Re:Systemd, Sysvinit nebo init?
« Odpověď #15 kdy: 14. 02. 2018, 09:22:05 »
Binarka sa vola init, lebo ju tam jadro system hlada, ale v skutocnosti ide o systemd, ktory sa sa sprava uplne inak. :D :D
Snad chapem spravne, co ste sa snazili pvedat. :}

Ne. Systemd je jeden z typů initů. Sysvinit také není jediný init, z těch nejznámějších je tu ještě BSD init, který také některé linuxové distribuce (snad) používají.

Kernel hledá to, co je mu předáno v parametru init=. To může být klidně init=/bin/sh.

Okey, mozno teraz znovu trepnem blbost. Ale, ulohou sysvint-u (myslim toho "stareho" initu) je spustat init script, napr. /etc/init.d/networking. Systemd by potom podla vsetkeho mal pre zmenu spustat tie tzv. Unit file napr. networking.service.

Ak by kernel hladal, to co je mu predano v boot parametru init, init=/bin/sh, tak by init=/bin/sh musel byt spraveny tak, aby spustal jednolive init scpriti ci unit file...? Ci si pletiem dojmi a pojmi...?



Re:Systemd, Sysvinit nebo init?
« Odpověď #16 kdy: 14. 02. 2018, 09:24:41 »
Ak by kernel hladal, to co je mu predano v boot parametru init, init=/bin/sh, tak by init=/bin/sh musel byt spraveny tak, aby spustal jednolive init scpriti ci unit file...? Ci si pletiem dojmi a pojmi...?

Ano, to byl jen příklad. Pokud dáte init=/bin/sh, spustí se jako PID 1 shell s právy UID:GID 0:0 (root:root) a nic dalšího se neprovede. Ten příklad byl jen pro to, že není potřeba aby se binárka jmenovala "init", to je jen jakási štábní kultura, že všechny init systémy takto tu binárku pojmenovávají.

JardaP .

  • *****
  • 11 064
    • Zobrazit profil
    • E-mail
Re:Systemd, Sysvinit nebo init?
« Odpověď #17 kdy: 14. 02. 2018, 13:11:38 »
Systemd by potom podla vsetkeho mal pre zmenu spustat tie tzv. Unit file napr. networking.service.

Ano, je-li prizniva vyska rosneho bodu, vitr fouka spravnym smerem a neni-li zrovna patek 13. ....

veolek polivka

Re:Systemd, Sysvinit nebo init?
« Odpověď #18 kdy: 14. 02. 2018, 13:26:10 »
Rozdil je i v tom, ze tradicni inity jako SysV init delaji prave jen init, zatimco systemd se sere do dalsi pulky systemu a chybi v nem uz snad jen Tetris.
Tak se nám k systemd vyjádřil i jarda už není potřeba diskutovat už je odpovězeno vyčerpájavíce.

JardaP .

  • *****
  • 11 064
    • Zobrazit profil
    • E-mail
Re:Systemd, Sysvinit nebo init?
« Odpověď #19 kdy: 14. 02. 2018, 13:58:07 »
Tak se nám k systemd vyjádřil i jarda už není potřeba diskutovat už je odpovězeno vyčerpájavíce.

Vzhledem k tomu, ze systemd nespousti procesy deterministicky, neni zaruceno, ze vzdy spusti vse, co ma spustit. Pri trose stesti take nespusti nic, protoze se zasekne na jedne unite a bude cekat na timeout radove v nekonecnu.


Sten

Re:Systemd, Sysvinit nebo init?
« Odpověď #20 kdy: 14. 02. 2018, 14:20:32 »
Vzhledem k tomu, ze systemd nespousti procesy deterministicky, neni zaruceno, ze vzdy spusti vse, co ma spustit. Pri trose stesti take nespusti nic, protoze se zasekne na jedne unite a bude cekat na timeout radove v nekonecnu.

Tohle je deterministické. Pokud nějaká jednotka závisí na jiné a ta se nespustí, tak se nespustí ani ta závislá. To je ukázkový příklad deterministického systému, kde následující stavy závisí na předchozích stavech.

Zaručeno, že vždy spustí vše, co má spustit, nemá ani sysvinit. Akorát na rozdíl od systemd chyby ignoruje a tváří se, že všechno spustil.

Re:Systemd, Sysvinit nebo init?
« Odpověď #21 kdy: 14. 02. 2018, 14:22:25 »
Pri trose stesti take nespusti nic, protoze se zasekne na jedne unite a bude cekat na timeout radove v nekonecnu.

Ale to by se dalo označit za správné chování. Pokud to má být spuštěno, má být selhání jasně indikováno. Na sysvinit se Vám něco spustí, něco ne, a teprve ze selhání služeb začnete zjišťovat, že se něco stalo.

JardaP .

  • *****
  • 11 064
    • Zobrazit profil
    • E-mail
Re:Systemd, Sysvinit nebo init?
« Odpověď #22 kdy: 14. 02. 2018, 14:56:20 »
Tohle je deterministické. Pokud nějaká jednotka závisí na jiné a ta se nespustí, tak se nespustí ani ta závislá. To je ukázkový příklad deterministického systému, kde následující stavy závisí na předchozích stavech.

Zretelne to nebude tak horke, kdyz si systemd nejak vyrabi unity ze SysV skriptu nebo co. Tam si pak urcuje poradi spusteni pri kazdem bootu jinak a nekdy to nabehne a nekdy ne.

JardaP .

  • *****
  • 11 064
    • Zobrazit profil
    • E-mail
Re:Systemd, Sysvinit nebo init?
« Odpověď #23 kdy: 14. 02. 2018, 14:57:31 »
Pokud to má být spuštěno, má být selhání jasně indikováno.

Ma to byt indikovano vytuhnutim systemu, kdy ani nemuzete problem resit, protoze system je tuhy?

Sten

Re:Systemd, Sysvinit nebo init?
« Odpověď #24 kdy: 14. 02. 2018, 15:14:29 »
Zretelne to nebude tak horke, kdyz si systemd nejak vyrabi unity ze SysV skriptu nebo co. Tam si pak urcuje poradi spusteni pri kazdem bootu jinak a nekdy to nabehne a nekdy ne.

Závislosti určuje podle INIT INFO na začátku takového skriptu a jsou pokaždé stejné

Ravise

  • ***
  • 113
    • Zobrazit profil
    • E-mail
Re:Systemd, Sysvinit nebo init?
« Odpověď #25 kdy: 14. 02. 2018, 15:36:43 »
Okey, mozno teraz znovu trepnem blbost. Ale, ulohou sysvint-u (myslim toho "stareho" initu) je spustat init script, napr. /etc/init.d/networking. Systemd by potom podla vsetkeho mal pre zmenu spustat tie tzv. Unit file napr. networking.service.

Ak by kernel hladal, to co je mu predano v boot parametru init, init=/bin/sh, tak by init=/bin/sh musel byt spraveny tak, aby spustal jednolive init scpriti ci unit file...? Ci si pletiem dojmi a pojmi...?

Jenom přibližně (ale dost blízko  :) ) - když se spustí init systém (sysv, systemd), tak ten program=init nějakým způsobem připraví ten počítač do určitého stavu (sysv spouští skripty, systemd podle unitů). Když se jádru předá init=/bin/bash, tak jádro spustí ten program=bash a ten provede zase svoje rutiny po spuštění (čte profile, bashrc a tak, nastavuje aliasy, vykonává příkazy).

Když se dá init=/bin/bash, tak ten počítač bude úplně v jiném stavu, než kdyby se pustil "obyčejný" init.

init=/někde/něco prostě znamená "až bude jádro hotové, spustí /někde/něco". Klidně si můžeš říct init=/sbin/reboot (myslím že je to ta cesta), ale pak se nesmíš divit, až se ti ten počítač restartuje :)

Stačí tak?

lnykryn

Re:Systemd, Sysvinit nebo init?
« Odpověď #26 kdy: 14. 02. 2018, 16:39:02 »
Kdyby nekoho zajimal prehled jak se tohle resi na ruznych systemch tak s kolegou jsme loni jsme na tohle tema meli prednasku:
http://redhat.slides.com/lnykryn/service-managers?token=wx4m4KxL

oNeDaL

Re:Systemd, Sysvinit nebo init?
« Odpověď #27 kdy: 14. 02. 2018, 18:29:10 »
s6

JardaP .

  • *****
  • 11 064
    • Zobrazit profil
    • E-mail
Re:Systemd, Sysvinit nebo init?
« Odpověď #28 kdy: 14. 02. 2018, 21:28:45 »
Závislosti určuje podle INIT INFO na začátku takového skriptu a jsou pokaždé stejné

Tak urcite.

https://blog.darknedgy.net/technology/2015/10/11/0/ "Non-deterministic boot order

bootup(7) states:

    The boot-up process is highly parallelized so that the order in which specific target units are reached is not deterministic, but still adheres to a limited amount of ordering structure.

It is known that in parallelism, the order of operations is not necessarily deterministic, but the result is (should be). Yet, in the case of dependency resolution, your order is your result, more-or-less. Issues have been reported in QEMU environments where dependency information is interpreted inconsistently on boot. This is one of the few cases where the author explicitly identifies it as “non-determinism,” as it is likely many cases are ignored in favor of just rebooting twice."

nobody(ten pravej)

Re:Systemd, Sysvinit nebo init?
« Odpověď #29 kdy: 15. 02. 2018, 02:42:18 »
Binarka sa vola init, lebo ju tam jadro system hlada, ale v skutocnosti ide o systemd, ktory sa sa sprava uplne inak. :D :D

init je obecny nazev, konkretni pak jeden z nich je systemd
je to jako bys rikal "Do garaze se zajizdi autem, ja tam vjedu svojim autem, nebo tam vjede kamos s BMW a to vypada jinak :-D"

k zakladimu pochopeni staci si precist napr zaznam na wikipedii:
https://cs.wikipedia.org/wiki/Init